Sfoglia il codice sorgente

YARN-9279. Remove the old hamlet package. (#2986)

Signed-off-by: Takanobu Asanuma <tasanuma@apache.org>
Akira Ajisaka 4 anni fa
parent
commit
c8073811b2

+ 0 - 30
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/pom.xml

@@ -378,34 +378,4 @@
       </plugin>
     </plugins>
   </build>
-  <!-- TODO: Remove this profile when hamlet was removed. -->
-  <profiles>
-    <profile>
-      <id>java9</id>
-      <activation>
-        <jdk>[9,)</jdk>
-      </activation>
-      <build>
-        <plugins>
-          <plugin>
-            <artifactId>maven-compiler-plugin</artifactId>
-            <configuration>
-              <excludes>
-                <exclude>org/apache/hadoop/yarn/webapp/hamlet/**</exclude>
-              </excludes>
-              <testExcludes>
-                <exclude>org/apache/hadoop/yarn/webapp/hamlet/**</exclude>
-              </testExcludes>
-            </configuration>
-          </plugin>
-          <plugin>
-            <artifactId>maven-javadoc-plugin</artifactId>
-            <configuration>
-              <excludePackageNames>org.apache.hadoop.yarn.webapp.hamlet</excludePackageNames>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
 </project>

+ 0 - 30561
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/hamlet/Hamlet.java

@@ -1,30561 +0,0 @@
-/**
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-// Generated by HamletGen. Do NOT edit!
-package org.apache.hadoop.yarn.webapp.hamlet;
-import static java.util.EnumSet.of;
-import static org.apache.hadoop.yarn.webapp.hamlet.HamletImpl.EOpt.ENDTAG;
-import static org.apache.hadoop.yarn.webapp.hamlet.HamletImpl.EOpt.INLINE;
-import static org.apache.hadoop.yarn.webapp.hamlet.HamletImpl.EOpt.PRE;
-
-import java.io.PrintWriter;
-import java.util.EnumSet;
-
-import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.yarn.webapp.SubView;
-
-/**
- * @deprecated Use org.apache.hadoop.yarn.webapp.hamlet2 package instead.
- */
-@Deprecated
-@InterfaceAudience.LimitedPrivate({"YARN", "MapReduce"})
-public class Hamlet extends HamletImpl implements HamletSpec._Html {
-  public Hamlet(PrintWriter out, int nestLevel, boolean wasInline) {
-    super(out, nestLevel, wasInline);
-  }
-
-  static EnumSet<EOpt> opt(boolean endTag, boolean inline, boolean pre) {
-    EnumSet<EOpt> opts = of(ENDTAG);
-    if (!endTag) opts.remove(ENDTAG);
-    if (inline) opts.add(INLINE);
-    if (pre) opts.add(PRE);
-    return opts;
-  }
-
-  public class HTML<T extends _> extends EImp<T> implements HamletSpec.HTML {
-    public HTML(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public HTML<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public HTML<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public HEAD<HTML<T>> head() {
-      closeAttrs();
-      return head_(this, false);
-    }
-
-    @Override
-    public BODY<HTML<T>> body() {
-      closeAttrs();
-      return body_(this, false);
-    }
-
-    @Override
-    public BODY<HTML<T>> body(String selector) {
-      return setSelector(body(), selector);
-    }
-
-    @Override
-    public BASE<HTML<T>> base() {
-      closeAttrs();
-      return base_(this, false);
-    }
-
-    @Override
-    public HTML<T> base(String href) {
-      return base().$href(href)._();
-    }
-
-    @Override
-    public TITLE<HTML<T>> title() {
-      closeAttrs();
-      return title_(this, false);
-    }
-
-    @Override
-    public HTML<T> title(String cdata) {
-      return title()._(cdata)._();
-    }
-
-    @Override
-    public STYLE<HTML<T>> style() {
-      closeAttrs();
-      return style_(this, false);
-    }
-
-    @Override
-    public HTML<T> style(Object... lines) {
-      return style().$type("text/css")._(lines)._();
-    }
-
-    @Override
-    public LINK<HTML<T>> link() {
-      closeAttrs();
-      return link_(this, false);
-    }
-
-    @Override
-    public HTML<T> link(String href) {
-      return setLinkHref(link(), href)._();
-    }
-
-    @Override
-    public META<HTML<T>> meta() {
-      closeAttrs();
-      return meta_(this, false);
-    }
-
-    @Override
-    public HTML<T> meta(String name, String content) {
-      return meta().$name(name).$content(content)._();
-    }
-
-    @Override
-    public HTML<T> meta_http(String header, String content) {
-      return meta().$http_equiv(header).$content(content)._();
-    }
-
-    @Override
-    public SCRIPT<HTML<T>> script() {
-      closeAttrs();
-      return script_(this, false);
-    }
-
-    @Override
-    public HTML<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public OBJECT<HTML<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<HTML<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public TABLE<HTML<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<HTML<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public HTML<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<HTML<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<HTML<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<HTML<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public HTML<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<HTML<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public HTML<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<HTML<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<HTML<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<HTML<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<HTML<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<HTML<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<HTML<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public HTML<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<HTML<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public HTML<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public HTML<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<HTML<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public HTML<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<HTML<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public HTML<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public HTML<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<HTML<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public HTML<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public HTML<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<HTML<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public HTML<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public HTML<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<HTML<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public HTML<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public HTML<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<HTML<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<HTML<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<HTML<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<HTML<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<HTML<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<HTML<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FORM<HTML<T>> form() {
-      closeAttrs();
-      return form_(this, false);
-    }
-
-    @Override
-    public FORM<HTML<T>> form(String selector) {
-      return setSelector(form(), selector);
-    }
-
-    @Override
-    public FIELDSET<HTML<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<HTML<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-
-    @Override
-    public INS<HTML<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public HTML<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<HTML<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public HTML<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-  }
-
-  private <T extends _> HEAD<T> head_(T e, boolean inline) {
-    return new HEAD<T>("head", e, opt(true, inline, false)); }
-
-  private <T extends _> BODY<T> body_(T e, boolean inline) {
-    return new BODY<T>("body", e, opt(true, inline, false)); }
-
-  public class SCRIPT<T extends _> extends EImp<T> implements HamletSpec.SCRIPT {
-    public SCRIPT(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public SCRIPT<T> $type(String value) {
-      addAttr("type", value);
-      return this;
-    }
-
-    @Override
-    public SCRIPT<T> $src(String value) {
-      addAttr("src", value);
-      return this;
-    }
-
-    @Override
-    public SCRIPT<T> $charset(String value) {
-      addAttr("charset", value);
-      return this;
-    }
-
-    @Override
-    public SCRIPT<T> $defer(String value) {
-      addAttr("defer", value);
-      return this;
-    }
-
-    @Override
-    public SCRIPT<T> _(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-  }
-
-  public class STYLE<T extends _> extends EImp<T> implements HamletSpec.STYLE {
-    public STYLE(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public STYLE<T> $type(String value) {
-      addAttr("type", value);
-      return this;
-    }
-
-    @Override
-    public STYLE<T> $media(EnumSet<Media> value) {
-      addMediaAttr("media", value);
-      return this;
-    }
-
-    @Override
-    public STYLE<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public STYLE<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public STYLE<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public STYLE<T> _(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-  }
-
-  public class META<T extends _> extends EImp<T> implements HamletSpec.META {
-    public META(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public META<T> $http_equiv(String value) {
-      addAttr("http-equiv", value);
-      return this;
-    }
-
-    @Override
-    public META<T> $name(String value) {
-      addAttr("name", value);
-      return this;
-    }
-
-    @Override
-    public META<T> $content(String value) {
-      addAttr("content", value);
-      return this;
-    }
-
-    @Override
-    public META<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public META<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-  }
-
-  public class BASE<T extends _> extends EImp<T> implements HamletSpec.BASE {
-    public BASE(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public BASE<T> $href(String value) {
-      addAttr("href", value);
-      return this;
-    }
-  }
-
-  public class TITLE<T extends _> extends EImp<T> implements HamletSpec.TITLE {
-    public TITLE(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public TITLE<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public TITLE<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public TITLE<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public TITLE<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-  }
-
-  public class HEAD<T extends _> extends EImp<T> implements HamletSpec.HEAD {
-    public HEAD(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public HEAD<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public HEAD<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public BASE<HEAD<T>> base() {
-      closeAttrs();
-      return base_(this, false);
-    }
-
-    @Override
-    public HEAD<T> base(String href) {
-      return base().$href(href)._();
-    }
-
-    @Override
-    public TITLE<HEAD<T>> title() {
-      closeAttrs();
-      return title_(this, false);
-    }
-
-    @Override
-    public HEAD<T> title(String cdata) {
-      return title()._(cdata)._();
-    }
-
-    @Override
-    public STYLE<HEAD<T>> style() {
-      closeAttrs();
-      return style_(this, false);
-    }
-
-    @Override
-    public HEAD<T> style(Object... lines) {
-      return style().$type("text/css")._(lines)._();
-    }
-
-    @Override
-    public LINK<HEAD<T>> link() {
-      closeAttrs();
-      return link_(this, false);
-    }
-
-    @Override
-    public HEAD<T> link(String href) {
-      return setLinkHref(link(), href)._();
-    }
-
-    @Override
-    public META<HEAD<T>> meta() {
-      closeAttrs();
-      return meta_(this, false);
-    }
-
-    @Override
-    public HEAD<T> meta(String name, String content) {
-      return meta().$name(name).$content(content)._();
-    }
-
-    @Override
-    public HEAD<T> meta_http(String header, String content) {
-      return meta().$http_equiv(header).$content(content)._();
-    }
-
-    @Override
-    public SCRIPT<HEAD<T>> script() {
-      closeAttrs();
-      return script_(this, false);
-    }
-
-    @Override
-    public HEAD<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public OBJECT<HEAD<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<HEAD<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-  }
-
-  private <T extends _> BASE<T> base_(T e, boolean inline) {
-    return new BASE<T>("base", e, opt(false, inline, false)); }
-
-  private <T extends _> TITLE<T> title_(T e, boolean inline) {
-    return new TITLE<T>("title", e, opt(true, inline, false)); }
-
-  public class TD<T extends _> extends EImp<T> implements HamletSpec.TD {
-    public TD(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public TD<T> $headers(String value) {
-      addAttr("headers", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $scope(Scope value) {
-      addAttr("scope", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $rowspan(int value) {
-      addAttr("rowspan", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $colspan(int value) {
-      addAttr("colspan", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public TD<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<TD<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<TD<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public TD<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<TD<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<TD<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<TD<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public TD<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<TD<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public TD<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<TD<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<TD<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<TD<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<TD<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<TD<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<TD<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public TD<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<TD<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public TD<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public TD<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<TD<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public TD<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<TD<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public TD<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<TD<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public TD<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<TD<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public TD<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<TD<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public TD<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<TD<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<TD<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<TD<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<TD<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<TD<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<TD<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FORM<TD<T>> form() {
-      closeAttrs();
-      return form_(this, false);
-    }
-
-    @Override
-    public FORM<TD<T>> form(String selector) {
-      return setSelector(form(), selector);
-    }
-
-    @Override
-    public FIELDSET<TD<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<TD<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-
-    @Override
-    public TD<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public TD<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<TD<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public TD<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<TD<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public TD<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<TD<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public TD<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public TD<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<TD<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public TD<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<TD<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public TD<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<TD<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public TD<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<TD<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public TD<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public TD<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<TD<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public TD<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<TD<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public TD<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<TD<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public TD<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<TD<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public TD<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<TD<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public TD<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<TD<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<TD<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public TD<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public TD<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<TD<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public TD<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<TD<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<TD<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<TD<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public TD<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<TD<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public TD<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<TD<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<TD<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public TD<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<TD<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<TD<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public TD<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<TD<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public TD<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<TD<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public TD<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public TD<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<TD<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public TD<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<TD<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public TD<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<TD<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public TD<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<TD<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public TD<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<TD<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<TD<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<TD<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<TD<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<TD<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<TD<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public TD<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<TD<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<TD<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public TD<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class TH<T extends _> extends EImp<T> implements HamletSpec.TH {
-    public TH(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public TH<T> $headers(String value) {
-      addAttr("headers", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $scope(Scope value) {
-      addAttr("scope", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $rowspan(int value) {
-      addAttr("rowspan", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $colspan(int value) {
-      addAttr("colspan", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public TH<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<TH<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<TH<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public TH<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<TH<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<TH<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<TH<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public TH<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<TH<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public TH<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<TH<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<TH<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<TH<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<TH<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<TH<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<TH<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public TH<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<TH<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public TH<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public TH<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<TH<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public TH<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<TH<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public TH<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<TH<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public TH<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<TH<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public TH<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<TH<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public TH<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<TH<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<TH<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<TH<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<TH<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<TH<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<TH<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FORM<TH<T>> form() {
-      closeAttrs();
-      return form_(this, false);
-    }
-
-    @Override
-    public FORM<TH<T>> form(String selector) {
-      return setSelector(form(), selector);
-    }
-
-    @Override
-    public FIELDSET<TH<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<TH<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-
-    @Override
-    public TH<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public TH<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<TH<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public TH<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<TH<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public TH<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<TH<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public TH<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public TH<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<TH<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public TH<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<TH<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public TH<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<TH<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public TH<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<TH<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public TH<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public TH<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<TH<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public TH<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<TH<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public TH<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<TH<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public TH<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<TH<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public TH<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<TH<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public TH<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<TH<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<TH<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public TH<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public TH<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<TH<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public TH<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<TH<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<TH<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<TH<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public TH<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<TH<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public TH<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<TH<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<TH<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public TH<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<TH<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<TH<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public TH<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<TH<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public TH<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<TH<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public TH<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public TH<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<TH<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public TH<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<TH<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public TH<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<TH<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public TH<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<TH<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public TH<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<TH<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<TH<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<TH<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<TH<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<TH<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<TH<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public TH<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<TH<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<TH<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public TH<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class TR<T extends _> extends EImp<T> implements HamletSpec.TR {
-    public TR(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public TR<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public TR<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TH<TR<T>> th() {
-      closeAttrs();
-      return th_(this, false);
-    }
-
-    @Override
-    public TR<T> th(String cdata) {
-      return th()._(cdata)._();
-    }
-
-    @Override
-    public TR<T> th(String selector, String cdata) {
-      return setSelector(th(), selector)._(cdata)._();
-    }
-
-    public TR<T> th(String selector, String title, String cdata) {
-      return setSelector(th(), selector).$title(title)._(cdata)._();
-    }
-
-    @Override
-    public TD<TR<T>> td() {
-      closeAttrs();
-      return td_(this, false);
-    }
-
-    @Override
-    public TR<T> td(String cdata) {
-      return td()._(cdata)._();
-    }
-
-    @Override
-    public TR<T> td(String selector, String cdata) {
-      return setSelector(td(), selector)._(cdata)._();
-    }
-  }
-
-  private <T extends _> TH<T> th_(T e, boolean inline) {
-    return new TH<T>("th", e, opt(true, inline, false)); }
-
-  private <T extends _> TD<T> td_(T e, boolean inline) {
-    return new TD<T>("td", e, opt(true, inline, false)); }
-
-  public class COL<T extends _> extends EImp<T> implements HamletSpec.COL {
-    public COL(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public COL<T> $span(int value) {
-      addAttr("span", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public COL<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-  }
-
-  public class COLGROUP<T extends _> extends EImp<T> implements HamletSpec.COLGROUP {
-    public COLGROUP(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public COLGROUP<T> $span(int value) {
-      addAttr("span", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public COLGROUP<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public COL<COLGROUP<T>> col() {
-      closeAttrs();
-      return col_(this, false);
-    }
-
-    @Override
-    public COLGROUP<T> col(String selector) {
-      return setSelector(col(), selector)._();
-    }
-  }
-
-  public class TBODY<T extends _> extends EImp<T> implements HamletSpec.TBODY {
-    public TBODY(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public TBODY<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public TBODY<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TR<TBODY<T>> tr() {
-      closeAttrs();
-      return tr_(this, false);
-    }
-
-    @Override
-    public TR<TBODY<T>> tr(String selector) {
-      return setSelector(tr(), selector);
-    }
-  }
-
-  public class TFOOT<T extends _> extends EImp<T> implements HamletSpec.TFOOT {
-    public TFOOT(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public TFOOT<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public TFOOT<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TR<TFOOT<T>> tr() {
-      closeAttrs();
-      return tr_(this, false);
-    }
-
-    @Override
-    public TR<TFOOT<T>> tr(String selector) {
-      return setSelector(tr(), selector);
-    }
-  }
-
-  public class THEAD<T extends _> extends EImp<T> implements HamletSpec.THEAD {
-    public THEAD(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public THEAD<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public THEAD<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TR<THEAD<T>> tr() {
-      closeAttrs();
-      return tr_(this, false);
-    }
-
-    @Override
-    public TR<THEAD<T>> tr(String selector) {
-      return setSelector(tr(), selector);
-    }
-  }
-
-  public class CAPTION<T extends _> extends EImp<T> implements HamletSpec.CAPTION {
-    public CAPTION(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public CAPTION<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public CAPTION<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<CAPTION<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<CAPTION<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<CAPTION<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<CAPTION<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<CAPTION<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<CAPTION<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<CAPTION<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<CAPTION<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<CAPTION<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<CAPTION<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<CAPTION<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<CAPTION<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<CAPTION<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<CAPTION<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public CAPTION<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public CAPTION<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<CAPTION<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<CAPTION<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<CAPTION<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<CAPTION<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<CAPTION<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<CAPTION<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<CAPTION<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public CAPTION<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<CAPTION<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<CAPTION<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<CAPTION<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<CAPTION<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<CAPTION<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<CAPTION<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<CAPTION<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<CAPTION<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<CAPTION<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<CAPTION<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<CAPTION<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<CAPTION<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<CAPTION<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<CAPTION<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public CAPTION<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<CAPTION<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<CAPTION<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public CAPTION<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class TABLE<T extends _> extends EImp<T> implements HamletSpec.TABLE {
-    public TABLE(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public TABLE<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<T> caption(String cdata) {
-      return caption()._(cdata)._();
-    }
-
-    @Override
-    public CAPTION<TABLE<T>> caption() {
-      closeAttrs();
-      return caption_(this, false);
-    }
-
-    @Override
-    public COLGROUP<TABLE<T>> colgroup() {
-      closeAttrs();
-      return colgroup_(this, false);
-    }
-
-    @Override
-    public THEAD<TABLE<T>> thead(String selector) {
-      return setSelector(thead(), selector);
-    }
-
-    @Override
-    public THEAD<TABLE<T>> thead() {
-      closeAttrs();
-      return thead_(this, false);
-    }
-
-    @Override
-    public TFOOT<TABLE<T>> tfoot() {
-      closeAttrs();
-      return tfoot_(this, false);
-    }
-
-    @Override
-    public TFOOT<TABLE<T>> tfoot(String selector) {
-      return setSelector(tfoot(), selector);
-    }
-
-    @Override
-    public TBODY<TABLE<T>> tbody() {
-      closeAttrs();
-      return tbody_(this, false);
-    }
-
-    @Override
-    public TBODY<TABLE<T>> tbody(String selector) {
-      return setSelector(tbody(), selector);
-    }
-
-    @Override
-    public TR<TABLE<T>> tr() {
-      closeAttrs();
-      return tr_(this, false);
-    }
-
-    @Override
-    public TR<TABLE<T>> tr(String selector) {
-      return setSelector(tr(), selector);
-    }
-
-    @Override
-    public COL<TABLE<T>> col() {
-      closeAttrs();
-      return col_(this, false);
-    }
-
-    @Override
-    public TABLE<T> col(String selector) {
-      return setSelector(col(), selector)._();
-    }
-  }
-
-  private <T extends _> CAPTION<T> caption_(T e, boolean inline) {
-    return new CAPTION<T>("caption", e, opt(true, inline, false)); }
-
-  private <T extends _> COLGROUP<T> colgroup_(T e, boolean inline) {
-    return new COLGROUP<T>("colgroup", e, opt(false, inline, false)); }
-
-  private <T extends _> THEAD<T> thead_(T e, boolean inline) {
-    return new THEAD<T>("thead", e, opt(true, inline, false)); }
-
-  private <T extends _> TFOOT<T> tfoot_(T e, boolean inline) {
-    return new TFOOT<T>("tfoot", e, opt(true, inline, false)); }
-
-  private <T extends _> TBODY<T> tbody_(T e, boolean inline) {
-    return new TBODY<T>("tbody", e, opt(true, inline, false)); }
-
-  private <T extends _> COL<T> col_(T e, boolean inline) {
-    return new COL<T>("col", e, opt(false, inline, false)); }
-
-  private <T extends _> TR<T> tr_(T e, boolean inline) {
-    return new TR<T>("tr", e, opt(true, inline, false)); }
-
-  public class BUTTON<T extends _> extends EImp<T> implements HamletSpec.BUTTON {
-    public BUTTON(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public BUTTON<T> $type(ButtonType value) {
-      addAttr("type", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $name(String value) {
-      addAttr("name", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $value(String value) {
-      addAttr("value", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $disabled() {
-      addAttr("disabled", null);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $tabindex(int value) {
-      addAttr("tabindex", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $accesskey(String value) {
-      addAttr("accesskey", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $onfocus(String value) {
-      addAttr("onfocus", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $onblur(String value) {
-      addAttr("onblur", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<BUTTON<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<BUTTON<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public BUTTON<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<BUTTON<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<BUTTON<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<BUTTON<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public BUTTON<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<BUTTON<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public BUTTON<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<BUTTON<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<BUTTON<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<BUTTON<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<BUTTON<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<BUTTON<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<BUTTON<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BUTTON<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<BUTTON<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public BUTTON<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<BUTTON<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public BUTTON<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<BUTTON<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public BUTTON<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<BUTTON<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public BUTTON<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<BUTTON<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public BUTTON<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<BUTTON<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public BUTTON<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<BUTTON<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<BUTTON<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<BUTTON<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<BUTTON<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<BUTTON<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<BUTTON<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public BUTTON<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<BUTTON<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<BUTTON<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<BUTTON<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<BUTTON<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<BUTTON<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<BUTTON<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<BUTTON<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<BUTTON<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<BUTTON<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<BUTTON<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<BUTTON<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<BUTTON<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<BUTTON<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<BUTTON<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public BUTTON<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<BUTTON<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<BUTTON<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<BUTTON<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<BUTTON<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<BUTTON<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<BUTTON<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<BUTTON<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public IMG<BUTTON<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<BUTTON<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<BUTTON<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<BUTTON<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<BUTTON<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public BUTTON<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public BUTTON<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-  }
-
-  public class LEGEND<T extends _> extends EImp<T> implements HamletSpec.LEGEND {
-    public LEGEND(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public LEGEND<T> $accesskey(String value) {
-      addAttr("accesskey", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public LEGEND<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<LEGEND<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<LEGEND<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<LEGEND<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<LEGEND<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<LEGEND<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<LEGEND<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<LEGEND<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<LEGEND<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<LEGEND<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<LEGEND<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<LEGEND<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<LEGEND<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<LEGEND<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<LEGEND<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public LEGEND<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public LEGEND<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<LEGEND<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<LEGEND<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<LEGEND<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<LEGEND<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<LEGEND<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<LEGEND<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<LEGEND<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public LEGEND<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<LEGEND<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<LEGEND<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<LEGEND<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<LEGEND<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public LEGEND<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<LEGEND<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<LEGEND<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<LEGEND<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<LEGEND<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<LEGEND<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<LEGEND<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<LEGEND<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<LEGEND<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<LEGEND<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<LEGEND<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public LEGEND<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<LEGEND<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<LEGEND<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public LEGEND<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class FIELDSET<T extends _> extends EImp<T> implements HamletSpec.FIELDSET {
-    public FIELDSET(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public FIELDSET<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public LEGEND<FIELDSET<T>> legend() {
-      closeAttrs();
-      return legend_(this, false);
-    }
-
-    @Override
-    public FIELDSET<T> legend(String cdata) {
-      return legend()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public FIELDSET<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public TABLE<FIELDSET<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<FIELDSET<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public FIELDSET<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<FIELDSET<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<FIELDSET<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<FIELDSET<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public FIELDSET<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<FIELDSET<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public FIELDSET<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<FIELDSET<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<FIELDSET<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<FIELDSET<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<FIELDSET<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<FIELDSET<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<FIELDSET<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public FIELDSET<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<FIELDSET<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public FIELDSET<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<FIELDSET<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public FIELDSET<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<FIELDSET<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public FIELDSET<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<FIELDSET<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public FIELDSET<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<FIELDSET<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public FIELDSET<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<FIELDSET<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public FIELDSET<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<FIELDSET<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<FIELDSET<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<FIELDSET<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<FIELDSET<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<FIELDSET<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<FIELDSET<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FORM<FIELDSET<T>> form() {
-      closeAttrs();
-      return form_(this, false);
-    }
-
-    @Override
-    public FORM<FIELDSET<T>> form(String selector) {
-      return setSelector(form(), selector);
-    }
-
-    @Override
-    public FIELDSET<FIELDSET<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<FIELDSET<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-
-    @Override
-    public B<FIELDSET<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<FIELDSET<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<FIELDSET<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<FIELDSET<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<FIELDSET<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<FIELDSET<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<FIELDSET<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<FIELDSET<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<FIELDSET<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<FIELDSET<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<FIELDSET<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<FIELDSET<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<FIELDSET<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<FIELDSET<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public FIELDSET<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public FIELDSET<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<FIELDSET<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<FIELDSET<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<FIELDSET<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<FIELDSET<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<FIELDSET<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<FIELDSET<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<FIELDSET<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public FIELDSET<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<FIELDSET<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<FIELDSET<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<FIELDSET<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<FIELDSET<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public FIELDSET<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<FIELDSET<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<FIELDSET<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<FIELDSET<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<FIELDSET<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<FIELDSET<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<FIELDSET<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<FIELDSET<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<FIELDSET<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<FIELDSET<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<FIELDSET<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public FIELDSET<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<FIELDSET<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<FIELDSET<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public FIELDSET<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  private <T extends _> LEGEND<T> legend_(T e, boolean inline) {
-    return new LEGEND<T>("legend", e, opt(true, inline, false)); }
-
-  public class TEXTAREA<T extends _> extends EImp<T> implements HamletSpec.TEXTAREA {
-    public TEXTAREA(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public TEXTAREA<T> $name(String value) {
-      addAttr("name", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $disabled() {
-      addAttr("disabled", null);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $tabindex(int value) {
-      addAttr("tabindex", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $accesskey(String value) {
-      addAttr("accesskey", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $onfocus(String value) {
-      addAttr("onfocus", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $onblur(String value) {
-      addAttr("onblur", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $rows(int value) {
-      addAttr("rows", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $cols(int value) {
-      addAttr("cols", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $readonly() {
-      addAttr("readonly", null);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $onselect(String value) {
-      addAttr("onselect", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $onchange(String value) {
-      addAttr("onchange", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public TEXTAREA<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-  }
-
-  public class OPTION<T extends _> extends EImp<T> implements HamletSpec.OPTION {
-    public OPTION(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public OPTION<T> $value(String value) {
-      addAttr("value", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $disabled() {
-      addAttr("disabled", null);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $selected() {
-      addAttr("selected", null);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $label(String value) {
-      addAttr("label", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public OPTION<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-  }
-
-  public class OPTGROUP<T extends _> extends EImp<T> implements HamletSpec.OPTGROUP {
-    public OPTGROUP(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public OPTGROUP<T> $disabled() {
-      addAttr("disabled", null);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $label(String value) {
-      addAttr("label", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<OPTGROUP<T>> option() {
-      closeAttrs();
-      return option_(this, false);
-    }
-
-    @Override
-    public OPTGROUP<T> option(String cdata) {
-      return option()._(cdata)._();
-    }
-  }
-
-  private <T extends _> OPTGROUP<T> optgroup_(T e, boolean inline) {
-    return new OPTGROUP<T>("optgroup", e, opt(true, inline, false)); }
-
-  public class SELECT<T extends _> extends EImp<T> implements HamletSpec.SELECT {
-    public SELECT(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public SELECT<T> $name(String value) {
-      addAttr("name", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $disabled() {
-      addAttr("disabled", null);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $tabindex(int value) {
-      addAttr("tabindex", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $onfocus(String value) {
-      addAttr("onfocus", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $onblur(String value) {
-      addAttr("onblur", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $onchange(String value) {
-      addAttr("onchange", value);
-      return this;
-    }
-
-    @Override
-    public OPTGROUP<SELECT<T>> optgroup() {
-      closeAttrs();
-      return optgroup_(this, false);
-    }
-
-    @Override
-    public SELECT<T> $size(int value) {
-      addAttr("size", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $multiple() {
-      addAttr("multiple", null);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public SELECT<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public OPTION<SELECT<T>> option() {
-      closeAttrs();
-      return option_(this, false);
-    }
-
-    @Override
-    public SELECT<T> option(String cdata) {
-      return option()._(cdata)._();
-    }
-  }
-
-  private <T extends _> OPTION<T> option_(T e, boolean inline) {
-    return new OPTION<T>("option", e, opt(false, inline, false)); }
-
-  public class INPUT<T extends _> extends EImp<T> implements HamletSpec.INPUT {
-    public INPUT(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public INPUT<T> $type(InputType value) {
-      addAttr("type", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $src(String value) {
-      addAttr("src", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $name(String value) {
-      addAttr("name", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $value(String value) {
-      addAttr("value", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $disabled() {
-      addAttr("disabled", null);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $tabindex(int value) {
-      addAttr("tabindex", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $accesskey(String value) {
-      addAttr("accesskey", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $onfocus(String value) {
-      addAttr("onfocus", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $onblur(String value) {
-      addAttr("onblur", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $readonly() {
-      addAttr("readonly", null);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $onselect(String value) {
-      addAttr("onselect", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $onchange(String value) {
-      addAttr("onchange", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $size(String value) {
-      addAttr("size", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $checked() {
-      addAttr("checked", null);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $maxlength(int value) {
-      addAttr("maxlength", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $alt(String value) {
-      addAttr("alt", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $ismap() {
-      addAttr("ismap", null);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $accept(String value) {
-      addAttr("accept", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public INPUT<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-  }
-
-  public class LABEL<T extends _> extends EImp<T> implements HamletSpec.LABEL {
-    public LABEL(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public LABEL<T> $accesskey(String value) {
-      addAttr("accesskey", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $onfocus(String value) {
-      addAttr("onfocus", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $onblur(String value) {
-      addAttr("onblur", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $for(String value) {
-      addAttr("for", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public LABEL<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<LABEL<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public LABEL<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<LABEL<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public LABEL<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<LABEL<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public LABEL<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<LABEL<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public LABEL<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<LABEL<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public LABEL<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<LABEL<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public LABEL<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<LABEL<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public LABEL<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<LABEL<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public LABEL<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<LABEL<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public LABEL<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<LABEL<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public LABEL<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<LABEL<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public LABEL<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<LABEL<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public LABEL<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<LABEL<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<LABEL<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public LABEL<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public LABEL<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<LABEL<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public LABEL<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<LABEL<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<LABEL<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<LABEL<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public LABEL<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<LABEL<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public LABEL<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<LABEL<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<LABEL<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public LABEL<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<LABEL<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<LABEL<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public LABEL<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<LABEL<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public LABEL<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<LABEL<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public LABEL<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<LABEL<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public LABEL<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<LABEL<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public LABEL<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<LABEL<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public LABEL<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public INPUT<LABEL<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<LABEL<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<LABEL<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<LABEL<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<LABEL<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<LABEL<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public LABEL<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<LABEL<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<LABEL<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public LABEL<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class FORM<T extends _> extends EImp<T> implements HamletSpec.FORM {
-    public FORM(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public FORM<T> $name(String value) {
-      addAttr("name", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $accept(String value) {
-      addAttr("accept", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $action(String value) {
-      addAttr("action", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $method(Method value) {
-      addAttr("method", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $enctype(String value) {
-      addAttr("enctype", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $onsubmit(String value) {
-      addAttr("onsubmit", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $onreset(String value) {
-      addAttr("onreset", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $accept_charset(String value) {
-      addAttr("accept-charset", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public FORM<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public SCRIPT<FORM<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public FORM<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public TABLE<FORM<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<FORM<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public FORM<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<FORM<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<FORM<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<FORM<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public FORM<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<FORM<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public FORM<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<FORM<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<FORM<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<FORM<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<FORM<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<FORM<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<FORM<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public FORM<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<FORM<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public FORM<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public FORM<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<FORM<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public FORM<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<FORM<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public FORM<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public FORM<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<FORM<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public FORM<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public FORM<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<FORM<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public FORM<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public FORM<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<FORM<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public FORM<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public FORM<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<FORM<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<FORM<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<FORM<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<FORM<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<FORM<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<FORM<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FIELDSET<FORM<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<FORM<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-  }
-
-  public class LI<T extends _> extends EImp<T> implements HamletSpec.LI {
-    public LI(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public LI<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public LI<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<LI<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<LI<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public LI<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<LI<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<LI<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<LI<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public LI<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<LI<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public LI<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<LI<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<LI<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<LI<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<LI<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<LI<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<LI<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public LI<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<LI<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public LI<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public LI<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<LI<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public LI<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<LI<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public LI<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<LI<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public LI<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<LI<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public LI<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<LI<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public LI<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<LI<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<LI<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<LI<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<LI<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<LI<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<LI<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FORM<LI<T>> form() {
-      closeAttrs();
-      return form_(this, false);
-    }
-
-    @Override
-    public FORM<LI<T>> form(String selector) {
-      return setSelector(form(), selector);
-    }
-
-    @Override
-    public FIELDSET<LI<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<LI<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-
-    @Override
-    public LI<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public LI<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<LI<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public LI<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<LI<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public LI<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<LI<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public LI<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public LI<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<LI<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public LI<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<LI<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public LI<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<LI<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public LI<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<LI<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public LI<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public LI<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<LI<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public LI<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<LI<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public LI<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<LI<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public LI<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<LI<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public LI<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<LI<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public LI<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<LI<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<LI<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public LI<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public LI<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<LI<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public LI<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<LI<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<LI<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<LI<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public LI<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<LI<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public LI<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<LI<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<LI<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public LI<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<LI<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<LI<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public LI<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<LI<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public LI<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<LI<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public LI<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public LI<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<LI<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public LI<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<LI<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public LI<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<LI<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public LI<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<LI<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public LI<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<LI<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<LI<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<LI<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<LI<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<LI<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<LI<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public LI<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<LI<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<LI<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public LI<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class UL<T extends _> extends EImp<T> implements HamletSpec.UL {
-    public UL(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public UL<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public UL<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public LI<UL<T>> li() {
-      closeAttrs();
-      return li_(this, false);
-    }
-
-    @Override
-    public UL<T> li(String cdata) {
-      return li()._(cdata)._();
-    }
-  }
-
-  public class OL<T extends _> extends EImp<T> implements HamletSpec.OL {
-    public OL(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public OL<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public OL<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public LI<OL<T>> li() {
-      closeAttrs();
-      return li_(this, false);
-    }
-
-    @Override
-    public OL<T> li(String cdata) {
-      return li()._(cdata)._();
-    }
-  }
-
-  private <T extends _> LI<T> li_(T e, boolean inline) {
-    return new LI<T>("li", e, opt(false, inline, false)); }
-
-  public class DD<T extends _> extends EImp<T> implements HamletSpec.DD {
-    public DD(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public DD<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public DD<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<DD<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<DD<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public DD<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<DD<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<DD<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<DD<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public DD<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<DD<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public DD<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<DD<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<DD<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<DD<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<DD<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<DD<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<DD<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public DD<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<DD<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public DD<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DD<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<DD<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public DD<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<DD<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public DD<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<DD<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public DD<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<DD<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public DD<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<DD<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public DD<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<DD<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<DD<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<DD<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<DD<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<DD<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<DD<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FORM<DD<T>> form() {
-      closeAttrs();
-      return form_(this, false);
-    }
-
-    @Override
-    public FORM<DD<T>> form(String selector) {
-      return setSelector(form(), selector);
-    }
-
-    @Override
-    public FIELDSET<DD<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<DD<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-
-    @Override
-    public DD<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public DD<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<DD<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public DD<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<DD<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public DD<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<DD<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public DD<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DD<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<DD<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public DD<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<DD<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public DD<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<DD<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public DD<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<DD<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public DD<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DD<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<DD<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public DD<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<DD<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public DD<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<DD<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public DD<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<DD<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public DD<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<DD<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public DD<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<DD<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<DD<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public DD<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public DD<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<DD<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public DD<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<DD<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<DD<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<DD<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public DD<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<DD<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public DD<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<DD<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<DD<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public DD<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<DD<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<DD<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public DD<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<DD<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public DD<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<DD<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public DD<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public DD<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<DD<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public DD<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<DD<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public DD<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<DD<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public DD<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<DD<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public DD<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<DD<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<DD<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<DD<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<DD<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<DD<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<DD<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public DD<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<DD<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<DD<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public DD<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class DT<T extends _> extends EImp<T> implements HamletSpec.DT {
-    public DT(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public DT<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public DT<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public DT<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<DT<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public DT<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<DT<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public DT<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<DT<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public DT<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DT<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<DT<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public DT<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<DT<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public DT<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<DT<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public DT<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<DT<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public DT<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DT<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<DT<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public DT<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<DT<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public DT<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<DT<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public DT<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<DT<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public DT<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<DT<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public DT<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<DT<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<DT<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public DT<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public DT<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<DT<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public DT<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<DT<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<DT<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<DT<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public DT<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<DT<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public DT<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<DT<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<DT<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public DT<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<DT<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<DT<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public DT<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<DT<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public DT<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<DT<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public DT<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public DT<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<DT<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public DT<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<DT<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public DT<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<DT<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public DT<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<DT<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public DT<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<DT<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<DT<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<DT<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<DT<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<DT<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<DT<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public DT<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<DT<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<DT<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public DT<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class DL<T extends _> extends EImp<T> implements HamletSpec.DL {
-    public DL(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public DL<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public DL<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public DT<DL<T>> dt() {
-      closeAttrs();
-      return dt_(this, false);
-    }
-
-    @Override
-    public DL<T> dt(String cdata) {
-      return dt()._(cdata)._();
-    }
-
-    @Override
-    public DD<DL<T>> dd() {
-      closeAttrs();
-      return dd_(this, false);
-    }
-
-    @Override
-    public DL<T> dd(String cdata) {
-      return dd()._(cdata)._();
-    }
-  }
-
-  private <T extends _> DT<T> dt_(T e, boolean inline) {
-    return new DT<T>("dt", e, opt(false, inline, false)); }
-
-  private <T extends _> DD<T> dd_(T e, boolean inline) {
-    return new DD<T>("dd", e, opt(false, inline, false)); }
-
-  public class DEL<T extends _> extends EImp<T> implements HamletSpec.DEL {
-    public DEL(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public DEL<T> $cite(String value) {
-      addAttr("cite", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $datetime(String value) {
-      addAttr("datetime", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public DEL<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<DEL<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<DEL<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public DEL<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<DEL<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<DEL<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<DEL<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public DEL<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<DEL<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public DEL<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<DEL<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<DEL<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<DEL<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<DEL<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<DEL<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<DEL<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public DEL<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<DEL<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public DEL<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<DEL<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public DEL<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<DEL<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public DEL<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<DEL<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public DEL<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<DEL<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public DEL<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<DEL<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public DEL<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<DEL<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<DEL<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<DEL<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<DEL<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<DEL<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<DEL<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FORM<DEL<T>> form() {
-      closeAttrs();
-      return form_(this, false);
-    }
-
-    @Override
-    public FORM<DEL<T>> form(String selector) {
-      return setSelector(form(), selector);
-    }
-
-    @Override
-    public FIELDSET<DEL<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<DEL<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-
-    @Override
-    public DEL<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public DEL<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<DEL<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public DEL<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<DEL<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public DEL<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<DEL<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public DEL<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<DEL<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public DEL<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<DEL<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public DEL<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<DEL<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public DEL<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<DEL<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public DEL<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<DEL<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public DEL<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<DEL<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public DEL<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<DEL<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public DEL<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<DEL<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public DEL<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<DEL<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public DEL<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<DEL<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<DEL<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public DEL<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public DEL<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<DEL<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public DEL<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<DEL<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<DEL<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<DEL<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public DEL<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<DEL<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public DEL<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<DEL<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<DEL<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public DEL<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<DEL<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<DEL<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public DEL<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<DEL<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public DEL<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<DEL<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public DEL<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public DEL<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<DEL<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public DEL<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<DEL<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public DEL<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<DEL<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public DEL<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<DEL<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public DEL<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<DEL<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<DEL<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<DEL<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<DEL<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<DEL<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<DEL<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public DEL<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<DEL<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<DEL<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public DEL<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class INS<T extends _> extends EImp<T> implements HamletSpec.INS {
-    public INS(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public INS<T> $cite(String value) {
-      addAttr("cite", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $datetime(String value) {
-      addAttr("datetime", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public INS<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<INS<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<INS<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public INS<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<INS<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<INS<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<INS<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public INS<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<INS<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public INS<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<INS<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<INS<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<INS<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<INS<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<INS<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<INS<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public INS<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<INS<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public INS<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public INS<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<INS<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public INS<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<INS<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public INS<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<INS<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public INS<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<INS<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public INS<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<INS<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public INS<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<INS<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<INS<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<INS<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<INS<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<INS<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<INS<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FORM<INS<T>> form() {
-      closeAttrs();
-      return form_(this, false);
-    }
-
-    @Override
-    public FORM<INS<T>> form(String selector) {
-      return setSelector(form(), selector);
-    }
-
-    @Override
-    public FIELDSET<INS<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<INS<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-
-    @Override
-    public INS<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public INS<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<INS<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public INS<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<INS<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public INS<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<INS<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public INS<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public INS<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<INS<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public INS<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<INS<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public INS<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<INS<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public INS<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<INS<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public INS<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public INS<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<INS<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public INS<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<INS<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public INS<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<INS<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public INS<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<INS<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public INS<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<INS<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public INS<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<INS<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<INS<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public INS<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public INS<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<INS<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public INS<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<INS<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<INS<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<INS<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public INS<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<INS<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public INS<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<INS<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<INS<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public INS<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<INS<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<INS<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public INS<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<INS<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public INS<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<INS<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public INS<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public INS<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<INS<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public INS<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<INS<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public INS<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<INS<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public INS<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<INS<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public INS<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<INS<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<INS<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<INS<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<INS<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<INS<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<INS<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public INS<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<INS<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<INS<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public INS<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class BLOCKQUOTE<T extends _> extends EImp<T> implements HamletSpec.BLOCKQUOTE {
-    public BLOCKQUOTE(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $cite(String value) {
-      addAttr("cite", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public BLOCKQUOTE<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<BLOCKQUOTE<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<BLOCKQUOTE<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public BLOCKQUOTE<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<BLOCKQUOTE<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<BLOCKQUOTE<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<BLOCKQUOTE<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<BLOCKQUOTE<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<BLOCKQUOTE<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<BLOCKQUOTE<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<BLOCKQUOTE<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<BLOCKQUOTE<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<BLOCKQUOTE<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<BLOCKQUOTE<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<BLOCKQUOTE<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BLOCKQUOTE<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<BLOCKQUOTE<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<BLOCKQUOTE<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public BLOCKQUOTE<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<BLOCKQUOTE<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public BLOCKQUOTE<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<BLOCKQUOTE<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public BLOCKQUOTE<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<BLOCKQUOTE<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public BLOCKQUOTE<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<BLOCKQUOTE<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<BLOCKQUOTE<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<BLOCKQUOTE<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<BLOCKQUOTE<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<BLOCKQUOTE<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<BLOCKQUOTE<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FORM<BLOCKQUOTE<T>> form() {
-      closeAttrs();
-      return form_(this, false);
-    }
-
-    @Override
-    public FORM<BLOCKQUOTE<T>> form(String selector) {
-      return setSelector(form(), selector);
-    }
-
-    @Override
-    public FIELDSET<BLOCKQUOTE<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<BLOCKQUOTE<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-
-    @Override
-    public SCRIPT<BLOCKQUOTE<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public BLOCKQUOTE<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-  }
-
-  public class Q<T extends _> extends EImp<T> implements HamletSpec.Q {
-    public Q(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public Q<T> $cite(String value) {
-      addAttr("cite", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public Q<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public Q<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<Q<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public Q<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<Q<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public Q<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<Q<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public Q<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<Q<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public Q<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<Q<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public Q<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<Q<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public Q<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<Q<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public Q<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<Q<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public Q<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<Q<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public Q<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<Q<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public Q<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<Q<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public Q<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<Q<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public Q<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<Q<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<Q<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public Q<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public Q<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<Q<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public Q<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<Q<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<Q<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<Q<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public Q<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<Q<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public Q<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<Q<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<Q<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public Q<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<Q<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<Q<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public Q<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<Q<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public Q<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<Q<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public Q<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public Q<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<Q<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public Q<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<Q<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public Q<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<Q<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public Q<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<Q<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public Q<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<Q<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<Q<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<Q<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<Q<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<Q<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<Q<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public Q<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<Q<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<Q<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public Q<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class PRE<T extends _> extends EImp<T> implements HamletSpec.PRE {
-    public PRE(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public PRE<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public PRE<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public PRE<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<PRE<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public PRE<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public PRE<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<PRE<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public PRE<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public PRE<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public PRE<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<PRE<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public PRE<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<PRE<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public PRE<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public PRE<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<PRE<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public PRE<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public PRE<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<PRE<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public PRE<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public PRE<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public PRE<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<PRE<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public PRE<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<PRE<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public PRE<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public PRE<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<PRE<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public PRE<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public PRE<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<PRE<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public PRE<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public PRE<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<PRE<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public PRE<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public PRE<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<PRE<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<PRE<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public PRE<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public PRE<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public MAP<PRE<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<PRE<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public PRE<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public PRE<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<PRE<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<PRE<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public PRE<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<PRE<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public PRE<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<PRE<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public PRE<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public PRE<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<PRE<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public PRE<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<PRE<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public PRE<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<PRE<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public PRE<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<PRE<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public PRE<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<PRE<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<PRE<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<PRE<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<PRE<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<PRE<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<PRE<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public PRE<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<PRE<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<PRE<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public PRE<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class H6<T extends _> extends EImp<T> implements HamletSpec.H6 {
-    public H6(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public H6<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public H6<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public H6<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<H6<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public H6<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<H6<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public H6<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<H6<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public H6<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<H6<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public H6<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<H6<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public H6<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<H6<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public H6<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<H6<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public H6<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<H6<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public H6<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<H6<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public H6<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<H6<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public H6<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<H6<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public H6<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<H6<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public H6<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<H6<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<H6<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public H6<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public H6<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<H6<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public H6<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<H6<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<H6<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<H6<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public H6<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<H6<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public H6<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<H6<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<H6<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public H6<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<H6<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<H6<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public H6<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<H6<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public H6<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<H6<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public H6<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public H6<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<H6<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public H6<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<H6<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public H6<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<H6<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public H6<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<H6<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public H6<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<H6<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<H6<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<H6<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<H6<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<H6<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<H6<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public H6<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<H6<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<H6<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public H6<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class H5<T extends _> extends EImp<T> implements HamletSpec.H5 {
-    public H5(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public H5<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public H5<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public H5<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<H5<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public H5<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<H5<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public H5<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<H5<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public H5<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<H5<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public H5<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<H5<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public H5<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<H5<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public H5<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<H5<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public H5<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<H5<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public H5<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<H5<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public H5<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<H5<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public H5<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<H5<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public H5<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<H5<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public H5<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<H5<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<H5<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public H5<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public H5<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<H5<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public H5<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<H5<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<H5<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<H5<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public H5<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<H5<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public H5<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<H5<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<H5<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public H5<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<H5<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<H5<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public H5<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<H5<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public H5<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<H5<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public H5<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public H5<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<H5<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public H5<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<H5<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public H5<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<H5<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public H5<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<H5<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public H5<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<H5<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<H5<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<H5<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<H5<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<H5<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<H5<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public H5<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<H5<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<H5<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public H5<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class H4<T extends _> extends EImp<T> implements HamletSpec.H4 {
-    public H4(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public H4<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public H4<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public H4<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<H4<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public H4<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<H4<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public H4<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<H4<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public H4<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<H4<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public H4<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<H4<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public H4<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<H4<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public H4<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<H4<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public H4<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<H4<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public H4<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<H4<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public H4<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<H4<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public H4<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<H4<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public H4<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<H4<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public H4<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<H4<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<H4<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public H4<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public H4<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<H4<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public H4<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<H4<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<H4<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<H4<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public H4<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<H4<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public H4<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<H4<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<H4<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public H4<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<H4<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<H4<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public H4<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<H4<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public H4<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<H4<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public H4<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public H4<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<H4<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public H4<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<H4<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public H4<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<H4<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public H4<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<H4<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public H4<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<H4<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<H4<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<H4<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<H4<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<H4<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<H4<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public H4<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<H4<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<H4<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public H4<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class H3<T extends _> extends EImp<T> implements HamletSpec.H3 {
-    public H3(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public H3<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public H3<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public H3<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<H3<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public H3<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<H3<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public H3<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<H3<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public H3<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<H3<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public H3<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<H3<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public H3<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<H3<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public H3<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<H3<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public H3<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<H3<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public H3<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<H3<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public H3<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<H3<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public H3<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<H3<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public H3<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<H3<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public H3<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<H3<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<H3<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public H3<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public H3<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<H3<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public H3<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<H3<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<H3<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<H3<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public H3<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<H3<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public H3<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<H3<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<H3<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public H3<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<H3<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<H3<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public H3<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<H3<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public H3<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<H3<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public H3<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public H3<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<H3<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public H3<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<H3<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public H3<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<H3<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public H3<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<H3<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public H3<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<H3<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<H3<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<H3<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<H3<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<H3<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<H3<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public H3<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<H3<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<H3<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public H3<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class H2<T extends _> extends EImp<T> implements HamletSpec.H2 {
-    public H2(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public H2<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public H2<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public H2<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<H2<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public H2<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<H2<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public H2<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<H2<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public H2<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H2<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<H2<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public H2<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<H2<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public H2<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<H2<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public H2<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<H2<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public H2<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H2<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<H2<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public H2<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<H2<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public H2<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<H2<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public H2<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<H2<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public H2<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<H2<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public H2<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<H2<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<H2<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public H2<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public H2<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<H2<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public H2<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<H2<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<H2<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<H2<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public H2<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<H2<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public H2<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<H2<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<H2<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public H2<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<H2<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<H2<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public H2<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<H2<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public H2<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<H2<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public H2<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public H2<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<H2<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public H2<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<H2<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public H2<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<H2<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public H2<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<H2<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public H2<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<H2<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<H2<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<H2<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<H2<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<H2<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<H2<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public H2<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<H2<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<H2<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public H2<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class H1<T extends _> extends EImp<T> implements HamletSpec.H1 {
-    public H1(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public H1<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public H1<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public H1<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<H1<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public H1<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<H1<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public H1<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<H1<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public H1<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H1<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<H1<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public H1<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<H1<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public H1<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<H1<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public H1<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<H1<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public H1<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H1<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<H1<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public H1<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<H1<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public H1<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<H1<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public H1<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<H1<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public H1<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<H1<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public H1<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<H1<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<H1<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public H1<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public H1<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<H1<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public H1<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<H1<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<H1<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<H1<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public H1<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<H1<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public H1<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<H1<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<H1<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public H1<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<H1<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<H1<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public H1<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<H1<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public H1<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<H1<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public H1<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public H1<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<H1<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public H1<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<H1<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public H1<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<H1<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public H1<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<H1<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public H1<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<H1<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<H1<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<H1<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<H1<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<H1<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<H1<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public H1<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<H1<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<H1<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public H1<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class P<T extends _> extends EImp<T> implements HamletSpec.P {
-    public P(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public P<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public P<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public P<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public P<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<P<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public P<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public P<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<P<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public P<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public P<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<P<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public P<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public P<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public P<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<P<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public P<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<P<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public P<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public P<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<P<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public P<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public P<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<P<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public P<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public P<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public P<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<P<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public P<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<P<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public P<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public P<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<P<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public P<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public P<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<P<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public P<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public P<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<P<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public P<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public P<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<P<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<P<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public P<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public P<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<P<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public P<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<P<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<P<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<P<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public P<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public P<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<P<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public P<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public P<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<P<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<P<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public P<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public P<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<P<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<P<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public P<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<P<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public P<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<P<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public P<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public P<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<P<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public P<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<P<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public P<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<P<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public P<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<P<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public P<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<P<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<P<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<P<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<P<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<P<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<P<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public P<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<P<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<P<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public P<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class HR<T extends _> extends EImp<T> implements HamletSpec.HR {
-    public HR(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public HR<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public HR<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-  }
-
-  public class PARAM<T extends _> extends EImp<T> implements HamletSpec.PARAM {
-    public PARAM(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public PARAM<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public PARAM<T> $name(String value) {
-      addAttr("name", value);
-      return this;
-    }
-
-    @Override
-    public PARAM<T> $value(String value) {
-      addAttr("value", value);
-      return this;
-    }
-  }
-
-  public class OBJECT<T extends _> extends EImp<T> implements HamletSpec.OBJECT {
-    public OBJECT(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public OBJECT<T> $type(String value) {
-      addAttr("type", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $name(String value) {
-      addAttr("name", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $tabindex(int value) {
-      addAttr("tabindex", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $data(String value) {
-      addAttr("data", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $height(String value) {
-      addAttr("height", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $height(int value) {
-      addAttr("height", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $width(int value) {
-      addAttr("width", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $width(String value) {
-      addAttr("width", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $usemap(String value) {
-      addAttr("usemap", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public PARAM<OBJECT<T>> param() {
-      closeAttrs();
-      return param_(this, false);
-    }
-
-    @Override
-    public OBJECT<T> param(String name, String value) {
-      return param().$name(name).$value(value)._();
-    }
-
-    @Override
-    public TABLE<OBJECT<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<OBJECT<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public OBJECT<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<OBJECT<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<OBJECT<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<OBJECT<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public OBJECT<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<OBJECT<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public OBJECT<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<OBJECT<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<OBJECT<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<OBJECT<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<OBJECT<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<OBJECT<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<OBJECT<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public OBJECT<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<OBJECT<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public OBJECT<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<OBJECT<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public OBJECT<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<OBJECT<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public OBJECT<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<OBJECT<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public OBJECT<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<OBJECT<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public OBJECT<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<OBJECT<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public OBJECT<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<OBJECT<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<OBJECT<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<OBJECT<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<OBJECT<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<OBJECT<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<OBJECT<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FORM<OBJECT<T>> form() {
-      closeAttrs();
-      return form_(this, false);
-    }
-
-    @Override
-    public FORM<OBJECT<T>> form(String selector) {
-      return setSelector(form(), selector);
-    }
-
-    @Override
-    public FIELDSET<OBJECT<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<OBJECT<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-
-    @Override
-    public OBJECT<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public OBJECT<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<OBJECT<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<OBJECT<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<OBJECT<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<OBJECT<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<OBJECT<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<OBJECT<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<OBJECT<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<OBJECT<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<OBJECT<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<OBJECT<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<OBJECT<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<OBJECT<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<OBJECT<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<OBJECT<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public OBJECT<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public OBJECT<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<OBJECT<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<OBJECT<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<OBJECT<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<OBJECT<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<OBJECT<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<OBJECT<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<OBJECT<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public OBJECT<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<OBJECT<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<OBJECT<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<OBJECT<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<OBJECT<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public OBJECT<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<OBJECT<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<OBJECT<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<OBJECT<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<OBJECT<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<OBJECT<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<OBJECT<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<OBJECT<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<OBJECT<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<OBJECT<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<OBJECT<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public OBJECT<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<OBJECT<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<OBJECT<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public OBJECT<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  private <T extends _> PARAM<T> param_(T e, boolean inline) {
-    return new PARAM<T>("param", e, opt(false, inline, false)); }
-
-  public class IMG<T extends _> extends EImp<T> implements HamletSpec.IMG {
-    public IMG(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public IMG<T> $src(String value) {
-      addAttr("src", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $alt(String value) {
-      addAttr("alt", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $ismap() {
-      addAttr("ismap", null);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $height(String value) {
-      addAttr("height", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $height(int value) {
-      addAttr("height", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $width(int value) {
-      addAttr("width", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $width(String value) {
-      addAttr("width", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $usemap(String value) {
-      addAttr("usemap", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public IMG<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-  }
-
-  public class LINK<T extends _> extends EImp<T> implements HamletSpec.LINK {
-    public LINK(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public LINK<T> $rel(EnumSet<LinkType> value) {
-      addRelAttr("rel", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $rel(String value) {
-      addAttr("rel", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $href(String value) {
-      addAttr("href", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $type(String value) {
-      addAttr("type", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $media(EnumSet<Media> value) {
-      addMediaAttr("media", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $media(String value) {
-      addAttr("media", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $hreflang(String value) {
-      addAttr("hreflang", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public LINK<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-  }
-
-  public class AREA<T extends _> extends EImp<T> implements HamletSpec.AREA {
-    public AREA(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public AREA<T> $href(String value) {
-      addAttr("href", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $tabindex(int value) {
-      addAttr("tabindex", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $accesskey(String value) {
-      addAttr("accesskey", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $onfocus(String value) {
-      addAttr("onfocus", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $onblur(String value) {
-      addAttr("onblur", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $alt(String value) {
-      addAttr("alt", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $shape(Shape value) {
-      addAttr("shape", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $coords(String value) {
-      addAttr("coords", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public AREA<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-  }
-
-  private <T extends _> AREA<T> area_(T e, boolean inline) {
-    return new AREA<T>("area", e, opt(false, inline, false)); }
-
-  public class MAP<T extends _> extends EImp<T> implements HamletSpec.MAP {
-    public MAP(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public MAP<T> $name(String value) {
-      addAttr("name", value);
-      return this;
-    }
-
-    @Override
-    public AREA<MAP<T>> area() {
-      closeAttrs();
-      return area_(this, false);
-    }
-
-    @Override
-    public AREA<MAP<T>> area(String selector) {
-      return setSelector(area(), selector);
-    }
-
-    @Override
-    public MAP<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public MAP<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<MAP<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<MAP<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public MAP<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<MAP<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<MAP<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<MAP<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public MAP<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<MAP<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public MAP<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<MAP<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<MAP<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<MAP<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<MAP<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<MAP<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<MAP<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public MAP<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<MAP<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public MAP<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<MAP<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public MAP<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<MAP<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public MAP<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public MAP<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<MAP<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public MAP<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public MAP<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<MAP<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public MAP<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public MAP<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<MAP<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public MAP<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public MAP<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<MAP<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<MAP<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<MAP<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<MAP<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<MAP<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<MAP<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FORM<MAP<T>> form() {
-      closeAttrs();
-      return form_(this, false);
-    }
-
-    @Override
-    public FORM<MAP<T>> form(String selector) {
-      return setSelector(form(), selector);
-    }
-
-    @Override
-    public FIELDSET<MAP<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<MAP<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-  }
-
-  public class A<T extends _> extends EImp<T> implements HamletSpec.A {
-    public A(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public A<T> $rel(EnumSet<LinkType> value) {
-      addRelAttr("rel", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $rel(String value) {
-      addAttr("rel", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $href(String value) {
-      addAttr("href", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $type(String value) {
-      addAttr("type", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $tabindex(int value) {
-      addAttr("tabindex", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $accesskey(String value) {
-      addAttr("accesskey", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $onfocus(String value) {
-      addAttr("onfocus", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $onblur(String value) {
-      addAttr("onblur", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $hreflang(String value) {
-      addAttr("hreflang", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public A<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public A<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public A<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<A<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public A<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public A<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<A<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public A<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public A<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<A<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public A<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public A<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<A<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public A<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<A<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public A<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public A<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<A<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public A<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public A<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<A<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public A<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public A<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<A<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public A<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<A<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public A<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public A<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<A<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public A<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public A<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<A<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public A<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public A<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<A<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public A<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public A<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public IMG<A<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public A<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<A<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<A<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public MAP<A<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<A<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public A<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public A<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<A<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<A<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public A<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<A<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public A<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<A<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public A<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public A<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<A<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public A<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<A<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public A<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<A<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public A<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public SUB<A<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public A<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public A<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<A<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public A<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public A<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public LABEL<A<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public A<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<A<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<A<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<A<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<A<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<A<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<A<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public A<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<A<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<A<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public A<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class DIV<T extends _> extends EImp<T> implements HamletSpec.DIV {
-    public DIV(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public DIV<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public DIV<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<DIV<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<DIV<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public DIV<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<DIV<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<DIV<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<DIV<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public DIV<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<DIV<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public DIV<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<DIV<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<DIV<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<DIV<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<DIV<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<DIV<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<DIV<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public DIV<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<DIV<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public DIV<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<DIV<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public DIV<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<DIV<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public DIV<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<DIV<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public DIV<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<DIV<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public DIV<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<DIV<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public DIV<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<DIV<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<DIV<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<DIV<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<DIV<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<DIV<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<DIV<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FORM<DIV<T>> form() {
-      closeAttrs();
-      return form_(this, false);
-    }
-
-    @Override
-    public FORM<DIV<T>> form(String selector) {
-      return setSelector(form(), selector);
-    }
-
-    @Override
-    public FIELDSET<DIV<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<DIV<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-
-    @Override
-    public DIV<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public DIV<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<DIV<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public DIV<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<DIV<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public DIV<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<DIV<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public DIV<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<DIV<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public DIV<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<DIV<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public DIV<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<DIV<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public DIV<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<DIV<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public DIV<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<DIV<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public DIV<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<DIV<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public DIV<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<DIV<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public DIV<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<DIV<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public DIV<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<DIV<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public DIV<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<DIV<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<DIV<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public DIV<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public DIV<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<DIV<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public DIV<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<DIV<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<DIV<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<DIV<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public DIV<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<DIV<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public DIV<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<DIV<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<DIV<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public DIV<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<DIV<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<DIV<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public DIV<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<DIV<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public DIV<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<DIV<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public DIV<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public DIV<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<DIV<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public DIV<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<DIV<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public DIV<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<DIV<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public DIV<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<DIV<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public DIV<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<DIV<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<DIV<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<DIV<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<DIV<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<DIV<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<DIV<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public DIV<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<DIV<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<DIV<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public DIV<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class ADDRESS<T extends _> extends EImp<T> implements HamletSpec.ADDRESS {
-    public ADDRESS(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public ADDRESS<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public ADDRESS<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<ADDRESS<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<ADDRESS<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<ADDRESS<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<ADDRESS<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<ADDRESS<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<ADDRESS<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<ADDRESS<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<ADDRESS<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<ADDRESS<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<ADDRESS<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<ADDRESS<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<ADDRESS<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<ADDRESS<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<ADDRESS<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public ADDRESS<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public ADDRESS<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<ADDRESS<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<ADDRESS<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<ADDRESS<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<ADDRESS<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<ADDRESS<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<ADDRESS<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<ADDRESS<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public ADDRESS<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<ADDRESS<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<ADDRESS<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<ADDRESS<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<ADDRESS<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<ADDRESS<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<ADDRESS<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<ADDRESS<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<ADDRESS<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<ADDRESS<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<ADDRESS<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<ADDRESS<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<ADDRESS<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<ADDRESS<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<ADDRESS<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public ADDRESS<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<ADDRESS<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<ADDRESS<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public ADDRESS<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class BODY<T extends _> extends EImp<T> implements HamletSpec.BODY {
-    public BODY(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public BODY<T> $onload(String value) {
-      addAttr("onload", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $onunload(String value) {
-      addAttr("onunload", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public BODY<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public TABLE<BODY<T>> table() {
-      closeAttrs();
-      return table_(this, false);
-    }
-
-    @Override
-    public TABLE<BODY<T>> table(String selector) {
-      return setSelector(table(), selector);
-    }
-
-    @Override
-    public BODY<T> address(String cdata) {
-      return address()._(cdata)._();
-    }
-
-    @Override
-    public ADDRESS<BODY<T>> address() {
-      closeAttrs();
-      return address_(this, false);
-    }
-
-    @Override
-    public P<BODY<T>> p(String selector) {
-      return setSelector(p(), selector);
-    }
-
-    @Override
-    public P<BODY<T>> p() {
-      closeAttrs();
-      return p_(this, false);
-    }
-
-    @Override
-    public BODY<T> _(Class<? extends SubView> cls) {
-      _v(cls);
-      return this;
-    }
-
-    @Override
-    public HR<BODY<T>> hr() {
-      closeAttrs();
-      return hr_(this, false);
-    }
-
-    @Override
-    public BODY<T> hr(String selector) {
-      return setSelector(hr(), selector)._();
-    }
-
-    @Override
-    public DL<BODY<T>> dl(String selector) {
-      return setSelector(dl(), selector);
-    }
-
-    @Override
-    public DL<BODY<T>> dl() {
-      closeAttrs();
-      return dl_(this, false);
-    }
-
-    @Override
-    public DIV<BODY<T>> div(String selector) {
-      return setSelector(div(), selector);
-    }
-
-    @Override
-    public DIV<BODY<T>> div() {
-      closeAttrs();
-      return div_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<BODY<T>> blockquote() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BLOCKQUOTE<BODY<T>> bq() {
-      closeAttrs();
-      return blockquote_(this, false);
-    }
-
-    @Override
-    public BODY<T> h1(String cdata) {
-      return h1()._(cdata)._();
-    }
-
-    @Override
-    public H1<BODY<T>> h1() {
-      closeAttrs();
-      return h1_(this, false);
-    }
-
-    @Override
-    public BODY<T> h1(String selector, String cdata) {
-      return setSelector(h1(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BODY<T> h2(String cdata) {
-      return h2()._(cdata)._();
-    }
-
-    @Override
-    public H2<BODY<T>> h2() {
-      closeAttrs();
-      return h2_(this, false);
-    }
-
-    @Override
-    public BODY<T> h2(String selector, String cdata) {
-      return setSelector(h2(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H3<BODY<T>> h3() {
-      closeAttrs();
-      return h3_(this, false);
-    }
-
-    @Override
-    public BODY<T> h3(String cdata) {
-      return h3()._(cdata)._();
-    }
-
-    @Override
-    public BODY<T> h3(String selector, String cdata) {
-      return setSelector(h3(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H4<BODY<T>> h4() {
-      closeAttrs();
-      return h4_(this, false);
-    }
-
-    @Override
-    public BODY<T> h4(String cdata) {
-      return h4()._(cdata)._();
-    }
-
-    @Override
-    public BODY<T> h4(String selector, String cdata) {
-      return setSelector(h4(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H5<BODY<T>> h5() {
-      closeAttrs();
-      return h5_(this, false);
-    }
-
-    @Override
-    public BODY<T> h5(String cdata) {
-      return h5()._(cdata)._();
-    }
-
-    @Override
-    public BODY<T> h5(String selector, String cdata) {
-      return setSelector(h5(), selector)._(cdata)._();
-    }
-
-    @Override
-    public H6<BODY<T>> h6() {
-      closeAttrs();
-      return h6_(this, false);
-    }
-
-    @Override
-    public BODY<T> h6(String cdata) {
-      return h6()._(cdata)._();
-    }
-
-    @Override
-    public BODY<T> h6(String selector, String cdata) {
-      return setSelector(h6(), selector)._(cdata)._();
-    }
-
-    @Override
-    public UL<BODY<T>> ul() {
-      closeAttrs();
-      return ul_(this, false);
-    }
-
-    @Override
-    public UL<BODY<T>> ul(String selector) {
-      return setSelector(ul(), selector);
-    }
-
-    @Override
-    public OL<BODY<T>> ol() {
-      closeAttrs();
-      return ol_(this, false);
-    }
-
-    @Override
-    public OL<BODY<T>> ol(String selector) {
-      return setSelector(ol(), selector);
-    }
-
-    @Override
-    public PRE<BODY<T>> pre() {
-      closeAttrs();
-      return pre_(this, false);
-    }
-
-    @Override
-    public PRE<BODY<T>> pre(String selector) {
-      return setSelector(pre(), selector);
-    }
-
-    @Override
-    public FORM<BODY<T>> form() {
-      closeAttrs();
-      return form_(this, false);
-    }
-
-    @Override
-    public FORM<BODY<T>> form(String selector) {
-      return setSelector(form(), selector);
-    }
-
-    @Override
-    public FIELDSET<BODY<T>> fieldset() {
-      closeAttrs();
-      return fieldset_(this, false);
-    }
-
-    @Override
-    public FIELDSET<BODY<T>> fieldset(String selector) {
-      return setSelector(fieldset(), selector);
-    }
-
-    @Override
-    public SCRIPT<BODY<T>> script() {
-      closeAttrs();
-      return script_(this, false);
-    }
-
-    @Override
-    public BODY<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<BODY<T>> ins() {
-      closeAttrs();
-      return ins_(this, false);
-    }
-
-    @Override
-    public BODY<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<BODY<T>> del() {
-      closeAttrs();
-      return del_(this, false);
-    }
-
-    @Override
-    public BODY<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-  }
-
-  private <T extends _> TABLE<T> table_(T e, boolean inline) {
-    return new TABLE<T>("table", e, opt(true, inline, false)); }
-
-  private <T extends _> ADDRESS<T> address_(T e, boolean inline) {
-    return new ADDRESS<T>("address", e, opt(true, inline, false)); }
-
-  private <T extends _> P<T> p_(T e, boolean inline) {
-    return new P<T>("p", e, opt(false, inline, false)); }
-
-  private <T extends _> HR<T> hr_(T e, boolean inline) {
-    return new HR<T>("hr", e, opt(false, inline, false)); }
-
-  private <T extends _> DL<T> dl_(T e, boolean inline) {
-    return new DL<T>("dl", e, opt(true, inline, false)); }
-
-  private <T extends _> DIV<T> div_(T e, boolean inline) {
-    return new DIV<T>("div", e, opt(true, inline, false)); }
-
-  private <T extends _> BLOCKQUOTE<T> blockquote_(T e, boolean inline) {
-    return new BLOCKQUOTE<T>("blockquote", e, opt(true, inline, false)); }
-
-  private <T extends _> BLOCKQUOTE<T> bq_(T e, boolean inline) {
-    return new BLOCKQUOTE<T>("blockquote", e, opt(true, inline, false)); }
-
-  private <T extends _> FIELDSET<T> fieldset_(T e, boolean inline) {
-    return new FIELDSET<T>("fieldset", e, opt(true, inline, false)); }
-
-  private <T extends _> FORM<T> form_(T e, boolean inline) {
-    return new FORM<T>("form", e, opt(true, inline, false)); }
-
-  public class BR<T extends _> extends EImp<T> implements HamletSpec.BR {
-    public BR(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public BR<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public BR<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public BR<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public BR<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-  }
-
-  public class BDO<T extends _> extends EImp<T> implements HamletSpec.BDO {
-    public BDO(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public BDO<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public BDO<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public BDO<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public BDO<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public BDO<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public BDO<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public BDO<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public BDO<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<BDO<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public BDO<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<BDO<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public BDO<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<BDO<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public BDO<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<BDO<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public BDO<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<BDO<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public BDO<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<BDO<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public BDO<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<BDO<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public BDO<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<BDO<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public BDO<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<BDO<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public BDO<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<BDO<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public BDO<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<BDO<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public BDO<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<BDO<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public BDO<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<BDO<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<BDO<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public BDO<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public BDO<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<BDO<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public BDO<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<BDO<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<BDO<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<BDO<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public BDO<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<BDO<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public BDO<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<BDO<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<BDO<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public BDO<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<BDO<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<BDO<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public BDO<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<BDO<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public BDO<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<BDO<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public BDO<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public BDO<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<BDO<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public BDO<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<BDO<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public BDO<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<BDO<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public BDO<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<BDO<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public BDO<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<BDO<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<BDO<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<BDO<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<BDO<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<BDO<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<BDO<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public BDO<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<BDO<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<BDO<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public BDO<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class SPAN<T extends _> extends EImp<T> implements HamletSpec.SPAN {
-    public SPAN(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public SPAN<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public SPAN<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<SPAN<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public SPAN<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<SPAN<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public SPAN<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<SPAN<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public SPAN<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<SPAN<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public SPAN<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<SPAN<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public SPAN<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<SPAN<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public SPAN<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<SPAN<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public SPAN<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<SPAN<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public SPAN<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<SPAN<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public SPAN<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<SPAN<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public SPAN<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<SPAN<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public SPAN<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<SPAN<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public SPAN<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<SPAN<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<SPAN<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public SPAN<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public SPAN<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<SPAN<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public SPAN<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<SPAN<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<SPAN<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<SPAN<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public SPAN<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<SPAN<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public SPAN<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<SPAN<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<SPAN<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public SPAN<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<SPAN<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<SPAN<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public SPAN<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<SPAN<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public SPAN<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<SPAN<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public SPAN<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public SPAN<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<SPAN<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public SPAN<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<SPAN<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public SPAN<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<SPAN<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public SPAN<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<SPAN<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public SPAN<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<SPAN<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<SPAN<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<SPAN<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<SPAN<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<SPAN<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<SPAN<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public SPAN<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<SPAN<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<SPAN<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public SPAN<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class SUP<T extends _> extends EImp<T> implements HamletSpec.SUP {
-    public SUP(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public SUP<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public SUP<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public SUP<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<SUP<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public SUP<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<SUP<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public SUP<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<SUP<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public SUP<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<SUP<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public SUP<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<SUP<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public SUP<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<SUP<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public SUP<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<SUP<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public SUP<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<SUP<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public SUP<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<SUP<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public SUP<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<SUP<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public SUP<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<SUP<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public SUP<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<SUP<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public SUP<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<SUP<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<SUP<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public SUP<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public SUP<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<SUP<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public SUP<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<SUP<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<SUP<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<SUP<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public SUP<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<SUP<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public SUP<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<SUP<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<SUP<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public SUP<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<SUP<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<SUP<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public SUP<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<SUP<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public SUP<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<SUP<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public SUP<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public SUP<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<SUP<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public SUP<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<SUP<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public SUP<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<SUP<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public SUP<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<SUP<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public SUP<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<SUP<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<SUP<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<SUP<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<SUP<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<SUP<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<SUP<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public SUP<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<SUP<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<SUP<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public SUP<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class SUB<T extends _> extends EImp<T> implements HamletSpec.SUB {
-    public SUB(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public SUB<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public SUB<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public SUB<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<SUB<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public SUB<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<SUB<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public SUB<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<SUB<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public SUB<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<SUB<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public SUB<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<SUB<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public SUB<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<SUB<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public SUB<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<SUB<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public SUB<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<SUB<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public SUB<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<SUB<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public SUB<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<SUB<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public SUB<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<SUB<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public SUB<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<SUB<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public SUB<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<SUB<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<SUB<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public SUB<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public SUB<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<SUB<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public SUB<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<SUB<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<SUB<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<SUB<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public SUB<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<SUB<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public SUB<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<SUB<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<SUB<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public SUB<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<SUB<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<SUB<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public SUB<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<SUB<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public SUB<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<SUB<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public SUB<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public SUB<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<SUB<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public SUB<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<SUB<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public SUB<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<SUB<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public SUB<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<SUB<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public SUB<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<SUB<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<SUB<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<SUB<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<SUB<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<SUB<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<SUB<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public SUB<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<SUB<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<SUB<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public SUB<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class ACRONYM<T extends _> extends EImp<T> implements HamletSpec.ACRONYM {
-    public ACRONYM(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public ACRONYM<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public ACRONYM<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<ACRONYM<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<ACRONYM<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<ACRONYM<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<ACRONYM<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<ACRONYM<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<ACRONYM<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<ACRONYM<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<ACRONYM<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<ACRONYM<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<ACRONYM<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<ACRONYM<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<ACRONYM<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<ACRONYM<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<ACRONYM<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public ACRONYM<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public ACRONYM<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<ACRONYM<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<ACRONYM<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<ACRONYM<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<ACRONYM<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<ACRONYM<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<ACRONYM<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<ACRONYM<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public ACRONYM<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<ACRONYM<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<ACRONYM<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<ACRONYM<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<ACRONYM<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public ACRONYM<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<ACRONYM<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<ACRONYM<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<ACRONYM<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<ACRONYM<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<ACRONYM<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<ACRONYM<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<ACRONYM<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<ACRONYM<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<ACRONYM<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<ACRONYM<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public ACRONYM<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<ACRONYM<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<ACRONYM<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public ACRONYM<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class ABBR<T extends _> extends EImp<T> implements HamletSpec.ABBR {
-    public ABBR(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public ABBR<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public ABBR<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<ABBR<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public ABBR<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<ABBR<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public ABBR<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<ABBR<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public ABBR<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<ABBR<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public ABBR<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<ABBR<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public ABBR<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<ABBR<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public ABBR<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<ABBR<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public ABBR<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<ABBR<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public ABBR<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<ABBR<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public ABBR<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<ABBR<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public ABBR<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<ABBR<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public ABBR<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<ABBR<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public ABBR<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<ABBR<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<ABBR<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public ABBR<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public ABBR<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<ABBR<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public ABBR<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<ABBR<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<ABBR<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<ABBR<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public ABBR<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<ABBR<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public ABBR<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<ABBR<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<ABBR<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public ABBR<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<ABBR<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<ABBR<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public ABBR<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<ABBR<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public ABBR<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<ABBR<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public ABBR<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public ABBR<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<ABBR<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public ABBR<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<ABBR<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public ABBR<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<ABBR<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public ABBR<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<ABBR<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public ABBR<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<ABBR<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<ABBR<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<ABBR<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<ABBR<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<ABBR<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<ABBR<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public ABBR<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<ABBR<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<ABBR<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public ABBR<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class CITE<T extends _> extends EImp<T> implements HamletSpec.CITE {
-    public CITE(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public CITE<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public CITE<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public CITE<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<CITE<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public CITE<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<CITE<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public CITE<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<CITE<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public CITE<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<CITE<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public CITE<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<CITE<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public CITE<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<CITE<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public CITE<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<CITE<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public CITE<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<CITE<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public CITE<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<CITE<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public CITE<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<CITE<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public CITE<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<CITE<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public CITE<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<CITE<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public CITE<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<CITE<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<CITE<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public CITE<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public CITE<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<CITE<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public CITE<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<CITE<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<CITE<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<CITE<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public CITE<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<CITE<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public CITE<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<CITE<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<CITE<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public CITE<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<CITE<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<CITE<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public CITE<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<CITE<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public CITE<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<CITE<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public CITE<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public CITE<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<CITE<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public CITE<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<CITE<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public CITE<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<CITE<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public CITE<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<CITE<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public CITE<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<CITE<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<CITE<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<CITE<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<CITE<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<CITE<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<CITE<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public CITE<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<CITE<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<CITE<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public CITE<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class VAR<T extends _> extends EImp<T> implements HamletSpec.VAR {
-    public VAR(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public VAR<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public VAR<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public VAR<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<VAR<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public VAR<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<VAR<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public VAR<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<VAR<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public VAR<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<VAR<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public VAR<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<VAR<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public VAR<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<VAR<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public VAR<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<VAR<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public VAR<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<VAR<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public VAR<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<VAR<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public VAR<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<VAR<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public VAR<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<VAR<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public VAR<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<VAR<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public VAR<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<VAR<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<VAR<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public VAR<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public VAR<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<VAR<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public VAR<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<VAR<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<VAR<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<VAR<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public VAR<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<VAR<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public VAR<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<VAR<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<VAR<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public VAR<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<VAR<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<VAR<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public VAR<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<VAR<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public VAR<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<VAR<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public VAR<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public VAR<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<VAR<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public VAR<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<VAR<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public VAR<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<VAR<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public VAR<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<VAR<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public VAR<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<VAR<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<VAR<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<VAR<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<VAR<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<VAR<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<VAR<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public VAR<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<VAR<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<VAR<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public VAR<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class KBD<T extends _> extends EImp<T> implements HamletSpec.KBD {
-    public KBD(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public KBD<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public KBD<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public KBD<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<KBD<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public KBD<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<KBD<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public KBD<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<KBD<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public KBD<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<KBD<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public KBD<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<KBD<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public KBD<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<KBD<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public KBD<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<KBD<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public KBD<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<KBD<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public KBD<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<KBD<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public KBD<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<KBD<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public KBD<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<KBD<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public KBD<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<KBD<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public KBD<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<KBD<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<KBD<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public KBD<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public KBD<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<KBD<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public KBD<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<KBD<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<KBD<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<KBD<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public KBD<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<KBD<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public KBD<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<KBD<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<KBD<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public KBD<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<KBD<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<KBD<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public KBD<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<KBD<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public KBD<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<KBD<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public KBD<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public KBD<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<KBD<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public KBD<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<KBD<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public KBD<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<KBD<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public KBD<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<KBD<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public KBD<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<KBD<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<KBD<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<KBD<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<KBD<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<KBD<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<KBD<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public KBD<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<KBD<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<KBD<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public KBD<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class SAMP<T extends _> extends EImp<T> implements HamletSpec.SAMP {
-    public SAMP(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public SAMP<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public SAMP<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<SAMP<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public SAMP<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<SAMP<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public SAMP<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<SAMP<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public SAMP<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<SAMP<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public SAMP<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<SAMP<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public SAMP<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<SAMP<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public SAMP<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<SAMP<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public SAMP<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<SAMP<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public SAMP<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<SAMP<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public SAMP<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<SAMP<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public SAMP<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<SAMP<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public SAMP<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<SAMP<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public SAMP<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<SAMP<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<SAMP<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public SAMP<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public SAMP<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<SAMP<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public SAMP<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<SAMP<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<SAMP<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<SAMP<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public SAMP<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<SAMP<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public SAMP<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<SAMP<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<SAMP<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public SAMP<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<SAMP<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<SAMP<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public SAMP<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<SAMP<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public SAMP<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<SAMP<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public SAMP<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<SAMP<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public SAMP<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<SAMP<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public SAMP<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<SAMP<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public SAMP<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<SAMP<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public SAMP<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<SAMP<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<SAMP<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<SAMP<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<SAMP<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<SAMP<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<SAMP<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public SAMP<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<SAMP<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<SAMP<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public SAMP<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class CODE<T extends _> extends EImp<T> implements HamletSpec.CODE {
-    public CODE(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public CODE<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public CODE<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public CODE<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<CODE<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public CODE<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<CODE<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public CODE<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<CODE<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public CODE<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<CODE<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public CODE<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<CODE<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public CODE<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<CODE<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public CODE<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<CODE<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public CODE<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<CODE<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public CODE<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<CODE<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public CODE<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<CODE<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public CODE<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<CODE<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public CODE<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<CODE<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public CODE<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<CODE<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<CODE<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public CODE<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public CODE<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<CODE<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public CODE<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<CODE<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<CODE<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<CODE<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public CODE<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<CODE<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public CODE<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<CODE<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<CODE<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public CODE<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<CODE<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<CODE<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public CODE<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<CODE<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public CODE<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<CODE<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public CODE<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public CODE<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<CODE<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public CODE<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<CODE<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public CODE<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<CODE<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public CODE<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<CODE<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public CODE<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<CODE<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<CODE<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<CODE<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<CODE<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<CODE<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<CODE<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public CODE<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<CODE<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<CODE<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public CODE<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class DFN<T extends _> extends EImp<T> implements HamletSpec.DFN {
-    public DFN(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public DFN<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public DFN<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public DFN<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<DFN<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public DFN<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<DFN<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public DFN<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<DFN<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public DFN<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<DFN<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public DFN<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<DFN<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public DFN<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<DFN<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public DFN<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<DFN<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public DFN<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<DFN<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public DFN<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<DFN<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public DFN<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<DFN<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public DFN<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<DFN<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public DFN<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<DFN<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public DFN<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<DFN<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<DFN<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public DFN<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public DFN<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<DFN<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public DFN<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<DFN<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<DFN<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<DFN<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public DFN<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<DFN<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public DFN<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<DFN<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<DFN<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public DFN<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<DFN<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<DFN<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public DFN<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<DFN<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public DFN<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<DFN<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public DFN<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public DFN<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<DFN<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public DFN<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<DFN<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public DFN<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<DFN<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public DFN<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<DFN<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public DFN<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<DFN<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<DFN<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<DFN<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<DFN<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<DFN<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<DFN<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public DFN<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<DFN<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<DFN<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public DFN<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class STRONG<T extends _> extends EImp<T> implements HamletSpec.STRONG {
-    public STRONG(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public STRONG<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public STRONG<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<STRONG<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public STRONG<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<STRONG<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public STRONG<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<STRONG<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public STRONG<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<STRONG<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public STRONG<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<STRONG<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public STRONG<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<STRONG<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public STRONG<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<STRONG<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public STRONG<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<STRONG<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public STRONG<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<STRONG<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public STRONG<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<STRONG<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public STRONG<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<STRONG<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public STRONG<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<STRONG<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public STRONG<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<STRONG<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<STRONG<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public STRONG<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public STRONG<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<STRONG<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public STRONG<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<STRONG<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<STRONG<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<STRONG<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public STRONG<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<STRONG<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public STRONG<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<STRONG<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<STRONG<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public STRONG<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<STRONG<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<STRONG<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public STRONG<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<STRONG<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public STRONG<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<STRONG<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public STRONG<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public STRONG<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<STRONG<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public STRONG<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<STRONG<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public STRONG<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<STRONG<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public STRONG<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<STRONG<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public STRONG<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<STRONG<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<STRONG<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<STRONG<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<STRONG<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<STRONG<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<STRONG<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public STRONG<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<STRONG<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<STRONG<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public STRONG<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class EM<T extends _> extends EImp<T> implements HamletSpec.EM {
-    public EM(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public EM<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public EM<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public EM<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<EM<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public EM<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<EM<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public EM<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<EM<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public EM<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public EM<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<EM<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public EM<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<EM<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public EM<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<EM<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public EM<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<EM<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public EM<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public EM<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<EM<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public EM<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<EM<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public EM<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<EM<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public EM<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<EM<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public EM<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<EM<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public EM<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<EM<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<EM<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public EM<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public EM<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<EM<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public EM<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<EM<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<EM<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<EM<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public EM<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<EM<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public EM<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<EM<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<EM<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public EM<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<EM<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<EM<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public EM<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<EM<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public EM<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<EM<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public EM<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public EM<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<EM<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public EM<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<EM<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public EM<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<EM<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public EM<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<EM<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public EM<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<EM<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<EM<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<EM<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<EM<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<EM<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<EM<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public EM<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<EM<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<EM<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public EM<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class SMALL<T extends _> extends EImp<T> implements HamletSpec.SMALL {
-    public SMALL(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public SMALL<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public SMALL<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<SMALL<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public SMALL<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<SMALL<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public SMALL<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<SMALL<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public SMALL<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<SMALL<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public SMALL<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<SMALL<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public SMALL<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<SMALL<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public SMALL<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<SMALL<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public SMALL<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<SMALL<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public SMALL<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<SMALL<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public SMALL<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<SMALL<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public SMALL<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<SMALL<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public SMALL<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<SMALL<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public SMALL<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<SMALL<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<SMALL<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public SMALL<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public SMALL<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<SMALL<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public SMALL<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<SMALL<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<SMALL<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<SMALL<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public SMALL<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<SMALL<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public SMALL<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<SMALL<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<SMALL<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public SMALL<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<SMALL<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<SMALL<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public SMALL<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<SMALL<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public SMALL<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<SMALL<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public SMALL<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public SMALL<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<SMALL<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public SMALL<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<SMALL<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public SMALL<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<SMALL<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public SMALL<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<SMALL<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public SMALL<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<SMALL<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<SMALL<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<SMALL<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<SMALL<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<SMALL<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<SMALL<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public SMALL<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<SMALL<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<SMALL<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public SMALL<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class B<T extends _> extends EImp<T> implements HamletSpec.B {
-    public B(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public B<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public B<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public B<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public B<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<B<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public B<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public B<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<B<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public B<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public B<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<B<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public B<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public B<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public B<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<B<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public B<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<B<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public B<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public B<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<B<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public B<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public B<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<B<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public B<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public B<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public B<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<B<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public B<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<B<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public B<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public B<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<B<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public B<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public B<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<B<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public B<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public B<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<B<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public B<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public B<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<B<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<B<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public B<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public B<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<B<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public B<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<B<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<B<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<B<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public B<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public B<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<B<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public B<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public B<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<B<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<B<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public B<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public B<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<B<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<B<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public B<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<B<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public B<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<B<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public B<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public B<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<B<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public B<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<B<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public B<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<B<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public B<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<B<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public B<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<B<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<B<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<B<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<B<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<B<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<B<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public B<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<B<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<B<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public B<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  public class I<T extends _> extends EImp<T> implements HamletSpec.I {
-    public I(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    @Override
-    public I<T> $id(String value) {
-      addAttr("id", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $class(String value) {
-      addAttr("class", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $title(String value) {
-      addAttr("title", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $style(String value) {
-      addAttr("style", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $lang(String value) {
-      addAttr("lang", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $dir(Dir value) {
-      addAttr("dir", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $onclick(String value) {
-      addAttr("onclick", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $ondblclick(String value) {
-      addAttr("ondblclick", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $onmousedown(String value) {
-      addAttr("onmousedown", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $onmouseup(String value) {
-      addAttr("onmouseup", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $onmouseover(String value) {
-      addAttr("onmouseover", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $onmousemove(String value) {
-      addAttr("onmousemove", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $onmouseout(String value) {
-      addAttr("onmouseout", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $onkeypress(String value) {
-      addAttr("onkeypress", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $onkeydown(String value) {
-      addAttr("onkeydown", value);
-      return this;
-    }
-
-    @Override
-    public I<T> $onkeyup(String value) {
-      addAttr("onkeyup", value);
-      return this;
-    }
-
-    @Override
-    public I<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public I<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-
-    @Override
-    public B<I<T>> b() {
-      closeAttrs();
-      return b_(this, true);
-    }
-
-    @Override
-    public I<T> b(String cdata) {
-      return b()._(cdata)._();
-    }
-
-    @Override
-    public I<T> b(String selector, String cdata) {
-      return setSelector(b(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<I<T>> i() {
-      closeAttrs();
-      return i_(this, true);
-    }
-
-    @Override
-    public I<T> i(String cdata) {
-      return i()._(cdata)._();
-    }
-
-    @Override
-    public I<T> i(String selector, String cdata) {
-      return setSelector(i(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SMALL<I<T>> small() {
-      closeAttrs();
-      return small_(this, true);
-    }
-
-    @Override
-    public I<T> small(String cdata) {
-      return small()._(cdata)._();
-    }
-
-    @Override
-    public I<T> small(String selector, String cdata) {
-      return setSelector(small(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<T> em(String cdata) {
-      return em()._(cdata)._();
-    }
-
-    @Override
-    public EM<I<T>> em() {
-      closeAttrs();
-      return em_(this, true);
-    }
-
-    @Override
-    public I<T> em(String selector, String cdata) {
-      return setSelector(em(), selector)._(cdata)._();
-    }
-
-    @Override
-    public STRONG<I<T>> strong() {
-      closeAttrs();
-      return strong_(this, true);
-    }
-
-    @Override
-    public I<T> strong(String cdata) {
-      return strong()._(cdata)._();
-    }
-
-    @Override
-    public I<T> strong(String selector, String cdata) {
-      return setSelector(strong(), selector)._(cdata)._();
-    }
-
-    @Override
-    public DFN<I<T>> dfn() {
-      closeAttrs();
-      return dfn_(this, true);
-    }
-
-    @Override
-    public I<T> dfn(String cdata) {
-      return dfn()._(cdata)._();
-    }
-
-    @Override
-    public I<T> dfn(String selector, String cdata) {
-      return setSelector(dfn(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CODE<I<T>> code() {
-      closeAttrs();
-      return code_(this, true);
-    }
-
-    @Override
-    public I<T> code(String cdata) {
-      return code()._(cdata)._();
-    }
-
-    @Override
-    public I<T> code(String selector, String cdata) {
-      return setSelector(code(), selector)._(cdata)._();
-    }
-
-    @Override
-    public I<T> samp(String cdata) {
-      return samp()._(cdata)._();
-    }
-
-    @Override
-    public SAMP<I<T>> samp() {
-      closeAttrs();
-      return samp_(this, true);
-    }
-
-    @Override
-    public I<T> samp(String selector, String cdata) {
-      return setSelector(samp(), selector)._(cdata)._();
-    }
-
-    @Override
-    public KBD<I<T>> kbd() {
-      closeAttrs();
-      return kbd_(this, true);
-    }
-
-    @Override
-    public I<T> kbd(String cdata) {
-      return kbd()._(cdata)._();
-    }
-
-    @Override
-    public I<T> kbd(String selector, String cdata) {
-      return setSelector(kbd(), selector)._(cdata)._();
-    }
-
-    @Override
-    public VAR<I<T>> var() {
-      closeAttrs();
-      return var_(this, true);
-    }
-
-    @Override
-    public I<T> var(String cdata) {
-      return var()._(cdata)._();
-    }
-
-    @Override
-    public I<T> var(String selector, String cdata) {
-      return setSelector(var(), selector)._(cdata)._();
-    }
-
-    @Override
-    public CITE<I<T>> cite() {
-      closeAttrs();
-      return cite_(this, true);
-    }
-
-    @Override
-    public I<T> cite(String cdata) {
-      return cite()._(cdata)._();
-    }
-
-    @Override
-    public I<T> cite(String selector, String cdata) {
-      return setSelector(cite(), selector)._(cdata)._();
-    }
-
-    @Override
-    public ABBR<I<T>> abbr() {
-      closeAttrs();
-      return abbr_(this, true);
-    }
-
-    @Override
-    public I<T> abbr(String cdata) {
-      return abbr()._(cdata)._();
-    }
-
-    @Override
-    public I<T> abbr(String selector, String cdata) {
-      return setSelector(abbr(), selector)._(cdata)._();
-    }
-
-    @Override
-    public A<I<T>> a() {
-      closeAttrs();
-      return a_(this, true);
-    }
-
-    @Override
-    public A<I<T>> a(String selector) {
-      return setSelector(a(), selector);
-    }
-
-    @Override
-    public I<T> a(String href, String anchorText) {
-      return a().$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public I<T> a(String selector, String href, String anchorText) {
-      return setSelector(a(), selector).$href(href)._(anchorText)._();
-    }
-
-    @Override
-    public IMG<I<T>> img() {
-      closeAttrs();
-      return img_(this, true);
-    }
-
-    @Override
-    public I<T> img(String src) {
-      return img().$src(src)._();
-    }
-
-    @Override
-    public OBJECT<I<T>> object() {
-      closeAttrs();
-      return object_(this, true);
-    }
-
-    @Override
-    public OBJECT<I<T>> object(String selector) {
-      return setSelector(object(), selector);
-    }
-
-    @Override
-    public SUB<I<T>> sub() {
-      closeAttrs();
-      return sub_(this, true);
-    }
-
-    @Override
-    public I<T> sub(String cdata) {
-      return sub()._(cdata)._();
-    }
-
-    @Override
-    public I<T> sub(String selector, String cdata) {
-      return setSelector(sub(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SUP<I<T>> sup() {
-      closeAttrs();
-      return sup_(this, true);
-    }
-
-    @Override
-    public I<T> sup(String cdata) {
-      return sup()._(cdata)._();
-    }
-
-    @Override
-    public I<T> sup(String selector, String cdata) {
-      return setSelector(sup(), selector)._(cdata)._();
-    }
-
-    @Override
-    public MAP<I<T>> map() {
-      closeAttrs();
-      return map_(this, true);
-    }
-
-    @Override
-    public MAP<I<T>> map(String selector) {
-      return setSelector(map(), selector);
-    }
-
-    @Override
-    public I<T> q(String cdata) {
-      return q()._(cdata)._();
-    }
-
-    @Override
-    public I<T> q(String selector, String cdata) {
-      return setSelector(q(), selector)._(cdata)._();
-    }
-
-    @Override
-    public Q<I<T>> q() {
-      closeAttrs();
-      return q_(this, true);
-    }
-
-    @Override
-    public BR<I<T>> br() {
-      closeAttrs();
-      return br_(this, true);
-    }
-
-    @Override
-    public I<T> br(String selector) {
-      return setSelector(br(), selector)._();
-    }
-
-    @Override
-    public BDO<I<T>> bdo() {
-      closeAttrs();
-      return bdo_(this, true);
-    }
-
-    @Override
-    public I<T> bdo(Dir dir, String cdata) {
-      return bdo().$dir(dir)._(cdata)._();
-    }
-
-    @Override
-    public SPAN<I<T>> span() {
-      closeAttrs();
-      return span_(this, true);
-    }
-
-    @Override
-    public I<T> span(String cdata) {
-      return span()._(cdata)._();
-    }
-
-    @Override
-    public I<T> span(String selector, String cdata) {
-      return setSelector(span(), selector)._(cdata)._();
-    }
-
-    @Override
-    public SCRIPT<I<T>> script() {
-      closeAttrs();
-      return script_(this, true);
-    }
-
-    @Override
-    public I<T> script(String src) {
-      return setScriptSrc(script(), src)._();
-    }
-
-    @Override
-    public INS<I<T>> ins() {
-      closeAttrs();
-      return ins_(this, true);
-    }
-
-    @Override
-    public I<T> ins(String cdata) {
-      return ins()._(cdata)._();
-    }
-
-    @Override
-    public DEL<I<T>> del() {
-      closeAttrs();
-      return del_(this, true);
-    }
-
-    @Override
-    public I<T> del(String cdata) {
-      return del()._(cdata)._();
-    }
-
-    @Override
-    public LABEL<I<T>> label() {
-      closeAttrs();
-      return label_(this, true);
-    }
-
-    @Override
-    public I<T> label(String forId, String cdata) {
-      return label().$for(forId)._(cdata)._();
-    }
-
-    @Override
-    public INPUT<I<T>> input(String selector) {
-      return setSelector(input(), selector);
-    }
-
-    @Override
-    public INPUT<I<T>> input() {
-      closeAttrs();
-      return input_(this, true);
-    }
-
-    @Override
-    public SELECT<I<T>> select() {
-      closeAttrs();
-      return select_(this, true);
-    }
-
-    @Override
-    public SELECT<I<T>> select(String selector) {
-      return setSelector(select(), selector);
-    }
-
-    @Override
-    public TEXTAREA<I<T>> textarea(String selector) {
-      return setSelector(textarea(), selector);
-    }
-
-    @Override
-    public TEXTAREA<I<T>> textarea() {
-      closeAttrs();
-      return textarea_(this, true);
-    }
-
-    @Override
-    public I<T> textarea(String selector, String cdata) {
-      return setSelector(textarea(), selector)._(cdata)._();
-    }
-
-    @Override
-    public BUTTON<I<T>> button() {
-      closeAttrs();
-      return button_(this, true);
-    }
-
-    @Override
-    public BUTTON<I<T>> button(String selector) {
-      return setSelector(button(), selector);
-    }
-
-    @Override
-    public I<T> button(String selector, String cdata) {
-      return setSelector(button(), selector)._(cdata)._();
-    }
-  }
-
-  private <T extends _> INPUT<T> input_(T e, boolean inline) {
-    return new INPUT<T>("input", e, opt(false, inline, false)); }
-
-  private <T extends _> SELECT<T> select_(T e, boolean inline) {
-    return new SELECT<T>("select", e, opt(true, inline, false)); }
-
-  private <T extends _> TEXTAREA<T> textarea_(T e, boolean inline) {
-    return new TEXTAREA<T>("textarea", e, opt(true, inline, false)); }
-
-  private <T extends _> BUTTON<T> button_(T e, boolean inline) {
-    return new BUTTON<T>("button", e, opt(true, inline, false)); }
-
-  private <T extends _> LABEL<T> label_(T e, boolean inline) {
-    return new LABEL<T>("label", e, opt(true, inline, false)); }
-
-  private <T extends _> MAP<T> map_(T e, boolean inline) {
-    return new MAP<T>("map", e, opt(true, inline, false)); }
-
-  private <T extends _> Q<T> q_(T e, boolean inline) {
-    return new Q<T>("q", e, opt(true, inline, false)); }
-
-  private <T extends _> BR<T> br_(T e, boolean inline) {
-    return new BR<T>("br", e, opt(false, inline, false)); }
-
-  private <T extends _> BDO<T> bdo_(T e, boolean inline) {
-    return new BDO<T>("bdo", e, opt(true, inline, false)); }
-
-  private <T extends _> SPAN<T> span_(T e, boolean inline) {
-    return new SPAN<T>("span", e, opt(true, inline, false)); }
-
-  private <T extends _> INS<T> ins_(T e, boolean inline) {
-    return new INS<T>("ins", e, opt(true, inline, false)); }
-
-  private <T extends _> DEL<T> del_(T e, boolean inline) {
-    return new DEL<T>("del", e, opt(true, inline, false)); }
-
-  private <T extends _> A<T> a_(T e, boolean inline) {
-    return new A<T>("a", e, opt(true, inline, false)); }
-
-  private <T extends _> SUB<T> sub_(T e, boolean inline) {
-    return new SUB<T>("sub", e, opt(true, inline, false)); }
-
-  private <T extends _> SUP<T> sup_(T e, boolean inline) {
-    return new SUP<T>("sup", e, opt(true, inline, false)); }
-
-  private <T extends _> IMG<T> img_(T e, boolean inline) {
-    return new IMG<T>("img", e, opt(false, inline, false)); }
-
-  private <T extends _> EM<T> em_(T e, boolean inline) {
-    return new EM<T>("em", e, opt(true, inline, false)); }
-
-  private <T extends _> STRONG<T> strong_(T e, boolean inline) {
-    return new STRONG<T>("strong", e, opt(true, inline, false)); }
-
-  private <T extends _> DFN<T> dfn_(T e, boolean inline) {
-    return new DFN<T>("dfn", e, opt(true, inline, false)); }
-
-  private <T extends _> CODE<T> code_(T e, boolean inline) {
-    return new CODE<T>("code", e, opt(true, inline, false)); }
-
-  private <T extends _> SAMP<T> samp_(T e, boolean inline) {
-    return new SAMP<T>("samp", e, opt(true, inline, false)); }
-
-  private <T extends _> KBD<T> kbd_(T e, boolean inline) {
-    return new KBD<T>("kbd", e, opt(true, inline, false)); }
-
-  private <T extends _> VAR<T> var_(T e, boolean inline) {
-    return new VAR<T>("var", e, opt(true, inline, false)); }
-
-  private <T extends _> CITE<T> cite_(T e, boolean inline) {
-    return new CITE<T>("cite", e, opt(true, inline, false)); }
-
-  private <T extends _> ABBR<T> abbr_(T e, boolean inline) {
-    return new ABBR<T>("abbr", e, opt(true, inline, false)); }
-
-  private <T extends _> B<T> b_(T e, boolean inline) {
-    return new B<T>("b", e, opt(true, inline, false)); }
-
-  private <T extends _> I<T> i_(T e, boolean inline) {
-    return new I<T>("i", e, opt(true, inline, false)); }
-
-  private <T extends _> SMALL<T> small_(T e, boolean inline) {
-    return new SMALL<T>("small", e, opt(true, inline, false)); }
-
-  private <T extends _> PRE<T> pre_(T e, boolean inline) {
-    return new PRE<T>("pre", e, opt(true, inline, true)); }
-
-  private <T extends _> UL<T> ul_(T e, boolean inline) {
-    return new UL<T>("ul", e, opt(true, inline, false)); }
-
-  private <T extends _> OL<T> ol_(T e, boolean inline) {
-    return new OL<T>("ol", e, opt(true, inline, false)); }
-
-  private <T extends _> H1<T> h1_(T e, boolean inline) {
-    return new H1<T>("h1", e, opt(true, inline, false)); }
-
-  private <T extends _> H2<T> h2_(T e, boolean inline) {
-    return new H2<T>("h2", e, opt(true, inline, false)); }
-
-  private <T extends _> H3<T> h3_(T e, boolean inline) {
-    return new H3<T>("h3", e, opt(true, inline, false)); }
-
-  private <T extends _> H4<T> h4_(T e, boolean inline) {
-    return new H4<T>("h4", e, opt(true, inline, false)); }
-
-  private <T extends _> H5<T> h5_(T e, boolean inline) {
-    return new H5<T>("h5", e, opt(true, inline, false)); }
-
-  private <T extends _> H6<T> h6_(T e, boolean inline) {
-    return new H6<T>("h6", e, opt(true, inline, false)); }
-
-  private <T extends _> STYLE<T> style_(T e, boolean inline) {
-    return new STYLE<T>("style", e, opt(true, inline, false)); }
-
-  private <T extends _> LINK<T> link_(T e, boolean inline) {
-    return new LINK<T>("link", e, opt(false, inline, false)); }
-
-  private <T extends _> META<T> meta_(T e, boolean inline) {
-    return new META<T>("meta", e, opt(false, inline, false)); }
-
-  private <T extends _> OBJECT<T> object_(T e, boolean inline) {
-    return new OBJECT<T>("object", e, opt(true, inline, false)); }
-
-  private <T extends _> SCRIPT<T> script_(T e, boolean inline) {
-    return new SCRIPT<T>("script", e, opt(true, inline, false)); }
-
-  @Override
-  public HEAD<Hamlet> head() {
-  return head_(this, false);
-  }
-
-  @Override
-  public BODY<Hamlet> body() {
-  return body_(this, false);
-  }
-
-  @Override
-  public BODY<Hamlet> body(String selector) {
-    return setSelector(body(), selector);
-  }
-
-  @Override
-  public BASE<Hamlet> base() {
-  return base_(this, false);
-  }
-
-  @Override
-  public Hamlet base(String href) {
-    return base().$href(href)._();
-  }
-
-  @Override
-  public TITLE<Hamlet> title() {
-  return title_(this, false);
-  }
-
-  @Override
-  public Hamlet title(String cdata) {
-    return title()._(cdata)._();
-  }
-
-  @Override
-  public STYLE<Hamlet> style() {
-  return style_(this, false);
-  }
-
-  @Override
-  public Hamlet style(Object... lines) {
-    return style().$type("text/css")._(lines)._();
-  }
-
-  @Override
-  public LINK<Hamlet> link() {
-  return link_(this, false);
-  }
-
-  @Override
-  public Hamlet link(String href) {
-    return setLinkHref(link(), href)._();
-  }
-
-  @Override
-  public META<Hamlet> meta() {
-  return meta_(this, false);
-  }
-
-  @Override
-  public Hamlet meta(String name, String content) {
-    return meta().$name(name).$content(content)._();
-  }
-
-  @Override
-  public Hamlet meta_http(String header, String content) {
-    return meta().$http_equiv(header).$content(content)._();
-  }
-
-  @Override
-  public SCRIPT<Hamlet> script() {
-  return script_(this, false);
-  }
-
-  @Override
-  public Hamlet script(String src) {
-    return setScriptSrc(script(), src)._();
-  }
-
-  @Override
-  public OBJECT<Hamlet> object() {
-  return object_(this, true);
-  }
-
-  @Override
-  public OBJECT<Hamlet> object(String selector) {
-    return setSelector(object(), selector);
-  }
-
-  @Override
-  public TABLE<Hamlet> table() {
-  return table_(this, false);
-  }
-
-  @Override
-  public TABLE<Hamlet> table(String selector) {
-    return setSelector(table(), selector);
-  }
-
-  @Override
-  public Hamlet address(String cdata) {
-    return address()._(cdata)._();
-  }
-
-  @Override
-  public ADDRESS<Hamlet> address() {
-  return address_(this, false);
-  }
-
-  @Override
-  public P<Hamlet> p(String selector) {
-    return setSelector(p(), selector);
-  }
-
-  @Override
-  public P<Hamlet> p() {
-  return p_(this, false);
-  }
-
-  @Override
-  public Hamlet _(Class<? extends SubView> cls) {
-    subView(cls);
-    return this;
-  }
-
-  @Override
-  public HR<Hamlet> hr() {
-  return hr_(this, false);
-  }
-
-  @Override
-  public Hamlet hr(String selector) {
-    return setSelector(hr(), selector)._();
-  }
-
-  @Override
-  public DL<Hamlet> dl(String selector) {
-    return setSelector(dl(), selector);
-  }
-
-  @Override
-  public DL<Hamlet> dl() {
-  return dl_(this, false);
-  }
-
-  @Override
-  public DIV<Hamlet> div(String selector) {
-    return setSelector(div(), selector);
-  }
-
-  @Override
-  public DIV<Hamlet> div() {
-  return div_(this, false);
-  }
-
-  @Override
-  public BLOCKQUOTE<Hamlet> blockquote() {
-  return blockquote_(this, false);
-  }
-
-  @Override
-  public BLOCKQUOTE<Hamlet> bq() {
-  return blockquote_(this, false);
-  }
-
-  @Override
-  public Hamlet h1(String cdata) {
-    return h1()._(cdata)._();
-  }
-
-  @Override
-  public H1<Hamlet> h1() {
-  return h1_(this, false);
-  }
-
-  @Override
-  public Hamlet h1(String selector, String cdata) {
-    return setSelector(h1(), selector)._(cdata)._();
-  }
-
-  @Override
-  public Hamlet h2(String cdata) {
-    return h2()._(cdata)._();
-  }
-
-  @Override
-  public H2<Hamlet> h2() {
-  return h2_(this, false);
-  }
-
-  @Override
-  public Hamlet h2(String selector, String cdata) {
-    return setSelector(h2(), selector)._(cdata)._();
-  }
-
-  @Override
-  public H3<Hamlet> h3() {
-  return h3_(this, false);
-  }
-
-  @Override
-  public Hamlet h3(String cdata) {
-    return h3()._(cdata)._();
-  }
-
-  @Override
-  public Hamlet h3(String selector, String cdata) {
-    return setSelector(h3(), selector)._(cdata)._();
-  }
-
-  @Override
-  public H4<Hamlet> h4() {
-  return h4_(this, false);
-  }
-
-  @Override
-  public Hamlet h4(String cdata) {
-    return h4()._(cdata)._();
-  }
-
-  @Override
-  public Hamlet h4(String selector, String cdata) {
-    return setSelector(h4(), selector)._(cdata)._();
-  }
-
-  @Override
-  public H5<Hamlet> h5() {
-  return h5_(this, false);
-  }
-
-  @Override
-  public Hamlet h5(String cdata) {
-    return h5()._(cdata)._();
-  }
-
-  @Override
-  public Hamlet h5(String selector, String cdata) {
-    return setSelector(h5(), selector)._(cdata)._();
-  }
-
-  @Override
-  public H6<Hamlet> h6() {
-  return h6_(this, false);
-  }
-
-  @Override
-  public Hamlet h6(String cdata) {
-    return h6()._(cdata)._();
-  }
-
-  @Override
-  public Hamlet h6(String selector, String cdata) {
-    return setSelector(h6(), selector)._(cdata)._();
-  }
-
-  @Override
-  public UL<Hamlet> ul() {
-  return ul_(this, false);
-  }
-
-  @Override
-  public UL<Hamlet> ul(String selector) {
-    return setSelector(ul(), selector);
-  }
-
-  @Override
-  public OL<Hamlet> ol() {
-  return ol_(this, false);
-  }
-
-  @Override
-  public OL<Hamlet> ol(String selector) {
-    return setSelector(ol(), selector);
-  }
-
-  @Override
-  public PRE<Hamlet> pre() {
-  return pre_(this, false);
-  }
-
-  @Override
-  public PRE<Hamlet> pre(String selector) {
-    return setSelector(pre(), selector);
-  }
-
-  @Override
-  public FORM<Hamlet> form() {
-  return form_(this, false);
-  }
-
-  @Override
-  public FORM<Hamlet> form(String selector) {
-    return setSelector(form(), selector);
-  }
-
-  @Override
-  public FIELDSET<Hamlet> fieldset() {
-  return fieldset_(this, false);
-  }
-
-  @Override
-  public FIELDSET<Hamlet> fieldset(String selector) {
-    return setSelector(fieldset(), selector);
-  }
-
-  @Override
-  public INS<Hamlet> ins() {
-  return ins_(this, false);
-  }
-
-  @Override
-  public Hamlet ins(String cdata) {
-    return ins()._(cdata)._();
-  }
-
-  @Override
-  public DEL<Hamlet> del() {
-  return del_(this, false);
-  }
-
-  @Override
-  public Hamlet del(String cdata) {
-    return del()._(cdata)._();
-  }
-}

+ 0 - 451
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/hamlet/HamletGen.java

@@ -1,451 +0,0 @@
-/**
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.apache.hadoop.yarn.webapp.hamlet;
-
-import org.apache.hadoop.thirdparty.com.google.common.collect.Sets;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.GnuParser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Options;
-import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.util.StringUtils;
-import org.apache.hadoop.yarn.webapp.WebAppException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Generates a specific hamlet implementation class from a spec class
- * using a generic hamlet implementation class.
- * @deprecated Use org.apache.hadoop.yarn.webapp.hamlet2 package instead.
- */
-@Deprecated
-@InterfaceAudience.LimitedPrivate({"YARN", "MapReduce"})
-public class HamletGen {
-  static final Logger LOG = LoggerFactory.getLogger(HamletGen.class);
-  static final Options opts = new Options();
-  static {
-    opts.addOption("h", "help", false, "Print this help message").
-         addOption("s", "spec-class", true,
-                   "The class that holds the spec interfaces. e.g. HamletSpec").
-         addOption("i", "impl-class", true,
-                   "An implementation class. e.g. HamletImpl").
-         addOption("o", "output-class", true, "Output class name").
-         addOption("p", "output-package", true, "Output package name");
-  };
-
-  static final Pattern elementRegex = Pattern.compile("^[A-Z][A-Z0-9]*$");
-
-  int bytes = 0;
-  PrintWriter out;
-  final Set<String> endTagOptional = Sets.newHashSet();
-  final Set<String> inlineElements = Sets.newHashSet();
-  Class<?> top; // html top-level interface
-  String hamlet; // output class simple name;
-  boolean topMode;
-
-  /**
-   * Generate a specific Hamlet implementation from a spec.
-   * @param specClass holds hamlet interfaces. e.g. {@link HamletSpec}
-   * @param implClass a generic hamlet implementation. e.g. {@link HamletImpl}
-   * @param outputName name of the output class. e.g. {@link Hamlet}
-   * @param outputPkg package name of the output class.
-   * @throws IOException
-   */
-  public void generate(Class<?> specClass, Class<?> implClass,
-                       String outputName, String outputPkg) throws IOException {
-    LOG.info("Generating {} using {} and {}", new Object[]{outputName,
-             specClass, implClass});
-    out = new PrintWriter(outputName +".java", "UTF-8");
-    hamlet = basename(outputName);
-    String pkg = pkgName(outputPkg, implClass.getPackage().getName());
-    puts(0, "// Generated by HamletGen. Do NOT edit!\n",
-         "package ", pkg, ";\n",
-         "import java.io.PrintWriter;\n",
-         "import java.util.EnumSet;\n",
-         "import static java.util.EnumSet.*;\n",
-         "import static ", implClass.getName(), ".EOpt.*;\n",
-         "import org.apache.hadoop.yarn.webapp.SubView;");
-    String implClassName = implClass.getSimpleName();
-    if (!implClass.getPackage().getName().equals(pkg)) {
-      puts(0, "import ", implClass.getName(), ';');
-    }
-    puts(0, "\n",
-         "public class ", hamlet, " extends ", implClassName,
-         " implements ", specClass.getSimpleName(), "._Html {\n",
-         "  public ", hamlet, "(PrintWriter out, int nestLevel,",
-         " boolean wasInline) {\n",
-         "    super(out, nestLevel, wasInline);\n",
-         "  }\n\n", // inline is context sensitive
-         "  static EnumSet<EOpt> opt(boolean endTag, boolean inline, ",
-         "boolean pre) {\n",
-         "    EnumSet<EOpt> opts = of(ENDTAG);\n",
-         "    if (!endTag) opts.remove(ENDTAG);\n",
-         "    if (inline) opts.add(INLINE);\n",
-         "    if (pre) opts.add(PRE);\n",
-         "    return opts;\n",
-         "  }");
-    initLut(specClass);
-    genImpl(specClass, implClassName, 1);
-    LOG.info("Generating {} methods", hamlet);
-    genMethods(hamlet, top, 1);
-    puts(0, "}");
-    out.close();
-    LOG.info("Wrote {} bytes to {}.java", bytes, outputName);
-  }
-
-  String basename(String path) {
-    return path.substring(path.lastIndexOf('/') + 1);
-  }
-
-  String pkgName(String pkg, String defaultPkg) {
-    if (pkg == null || pkg.isEmpty()) return defaultPkg;
-    return pkg;
-  }
-
-  void initLut(Class<?> spec) {
-    endTagOptional.clear();
-    inlineElements.clear();
-    for (Class<?> cls : spec.getClasses()) {
-      Annotation a = cls.getAnnotation(HamletSpec.Element.class);
-      if (a != null && !((HamletSpec.Element) a).endTag()) {
-        endTagOptional.add(cls.getSimpleName());
-      }
-      if (cls.getSimpleName().equals("Inline")) {
-        for (Method method : cls.getMethods()) {
-          String retName = method.getReturnType().getSimpleName();
-          if (isElement(retName)) {
-            inlineElements.add(retName);
-          }
-        }
-      }
-    }
-  }
-
-  void genImpl(Class<?> spec, String implClassName, int indent) {
-    String specName = spec.getSimpleName();
-    for (Class<?> cls : spec.getClasses()) {
-      String className = cls.getSimpleName();
-      if (cls.isInterface()) {
-        genFactoryMethods(cls, indent);
-      }
-      if (isElement(className)) {
-        LOG.info("Generating class {}<T>", className);
-        puts(indent, "\n",
-             "public class ", className, "<T extends _>",
-             " extends EImp<T> implements ", specName, ".", className, " {\n",
-             "  public ", className, "(String name, T parent,",
-             " EnumSet<EOpt> opts) {\n",
-             "    super(name, parent, opts);\n",
-             "  }");
-        genMethods(className, cls, indent + 1);
-        puts(indent, "}");
-      } else if (className.equals("_Html")) {
-        top = cls;
-      }
-    }
-  }
-
-  void genFactoryMethods(Class<?> cls, int indent) {
-    for (Method method : cls.getDeclaredMethods()) {
-      String retName = method.getReturnType().getSimpleName();
-      String methodName = method.getName();
-      if (methodName.charAt(0) == '$') continue;
-      if (isElement(retName) && method.getParameterTypes().length == 0) {
-        genFactoryMethod(retName, methodName, indent);
-      }
-    }
-  }
-
-  void genMethods(String className, Class<?> cls, int indent) {
-    topMode = (top != null && cls.equals(top));
-    for (Method method : cls.getMethods()) {
-      String retName = method.getReturnType().getSimpleName();
-      if (method.getName().charAt(0) == '$') {
-        genAttributeMethod(className, method, indent);
-      } else if (isElement(retName)) {
-        genNewElementMethod(className, method, indent);
-      } else {
-        genCurElementMethod(className, method, indent);
-      }
-    }
-  }
-
-  void genAttributeMethod(String className, Method method, int indent) {
-    String methodName = method.getName();
-    String attrName = methodName.substring(1).replace('_', '-');
-    Type[] params = method.getGenericParameterTypes();
-    echo(indent, "\n",
-         "@Override\n",
-         "public ", className, topMode ? " " : "<T> ", methodName, "(");
-    if (params.length == 0) {
-      puts(0, ") {");
-      puts(indent,
-           "  addAttr(\"", attrName, "\", null);\n",
-           "  return this;\n", "}");
-    } else if (params.length == 1) {
-      String typeName = getTypeName(params[0]);
-      puts(0, typeName, " value) {");
-      if (typeName.equals("EnumSet<LinkType>")) {
-        puts(indent,
-             "  addRelAttr(\"", attrName, "\", value);\n",
-             "  return this;\n", "}");
-      } else if (typeName.equals("EnumSet<Media>")) {
-        puts(indent,
-             "  addMediaAttr(\"", attrName, "\", value);\n",
-             "  return this;\n", "}");
-      } else {
-        puts(indent,
-             "  addAttr(\"", attrName, "\", value);\n",
-             "  return this;\n", "}");
-      }
-    } else {
-      throwUnhandled(className, method);
-    }
-  }
-
-  String getTypeName(Type type) {
-    if (type instanceof Class<?>) {
-      return ((Class<?>)type).getSimpleName();
-    }
-    ParameterizedType pt = (ParameterizedType) type;
-    return ((Class<?>)pt.getRawType()).getSimpleName() +"<"+
-        ((Class<?>)pt.getActualTypeArguments()[0]).getSimpleName() +">";
-  }
-
-  void genFactoryMethod(String retName, String methodName, int indent) {
-    puts(indent, "\n",
-         "private <T extends _> ", retName, "<T> ", methodName,
-         "_(T e, boolean inline) {\n",
-         "  return new ", retName, "<T>(\"", StringUtils.toLowerCase(retName),
-         "\", e, opt(", !endTagOptional.contains(retName), ", inline, ",
-         retName.equals("PRE"), ")); }");
-  }
-
-  void genNewElementMethod(String className, Method method, int indent) {
-    String methodName = method.getName();
-    String retName = method.getReturnType().getSimpleName();
-    Class<?>[] params = method.getParameterTypes();
-    echo(indent, "\n",
-         "@Override\n",
-         "public ", retName, "<", className, topMode ? "> " : "<T>> ",
-         methodName, "(");
-    if (params.length == 0) {
-      puts(0, ") {");
-      puts(indent,
-           topMode ? "" : "  closeAttrs();\n",
-           "  return ", StringUtils.toLowerCase(retName), "_" + "(this, ",
-           isInline(className, retName), ");\n", "}");
-    } else if (params.length == 1) {
-      puts(0, "String selector) {");
-      puts(indent,
-           "  return setSelector(", methodName, "(), selector);\n", "}");
-    } else {
-      throwUnhandled(className, method);
-    }
-  }
-
-  boolean isInline(String container, String className) {
-    if ((container.equals("BODY") || container.equals(hamlet) ||
-         container.equals("HEAD") || container.equals("HTML")) &&
-        (className.equals("INS") || className.equals("DEL") ||
-         className.equals("SCRIPT"))) {
-      return false;
-    }
-    return inlineElements.contains(className);
-  }
-
-  void genCurElementMethod(String className, Method method, int indent) {
-    String methodName = method.getName();
-    Class<?>[] params = method.getParameterTypes();
-    if (topMode || params.length > 0) {
-      echo(indent, "\n",
-         "@Override\n",
-         "public ", className, topMode ? " " : "<T> ", methodName, "(");
-    }
-    if (params.length == 0) {
-      if (topMode) {
-        puts(0, ") {");
-        puts(indent, "  return this;\n", "}");
-      }
-    } else if (params.length == 1) {
-      if (methodName.equals("base")) {
-        puts(0, "String href) {");
-        puts(indent,
-             "  return base().$href(href)._();\n", "}");
-      } else if (methodName.equals("script")) {
-        puts(0, "String src) {");
-        puts(indent,
-             "  return setScriptSrc(script(), src)._();\n", "}");
-      } else if (methodName.equals("style")) {
-        puts(0, "Object... lines) {");
-        puts(indent,
-             "  return style().$type(\"text/css\")._(lines)._();\n", "}");
-      } else if (methodName.equals("img")) {
-        puts(0, "String src) {");
-        puts(indent,
-             "  return ", methodName, "().$src(src)._();\n", "}");
-      } else if (methodName.equals("br") || methodName.equals("hr") ||
-                 methodName.equals("col")) {
-        puts(0, "String selector) {");
-        puts(indent,
-             "  return setSelector(", methodName, "(), selector)._();\n", "}");
-      }  else if (methodName.equals("link")) {
-        puts(0, "String href) {");
-        puts(indent,
-             "  return setLinkHref(", methodName, "(), href)._();\n", "}");
-      } else if (methodName.equals("_")) {
-        if (params[0].getSimpleName().equals("Class")) {
-          puts(0, "Class<? extends SubView> cls) {");
-          puts(indent,
-               "  ", topMode ? "subView" : "_v", "(cls);\n",
-               "  return this;\n", "}");
-        } else {
-          puts(0, "Object... lines) {");
-          puts(indent,
-               "  _p(", needsEscaping(className), ", lines);\n",
-               "  return this;\n", "}");
-        }
-      } else if (methodName.equals("_r")) {
-        puts(0, "Object... lines) {");
-        puts(indent,
-             "  _p(false, lines);\n",
-             "  return this;\n", "}");
-      } else {
-        puts(0, "String cdata) {");
-        puts(indent,
-             "  return ", methodName, "()._(cdata)._();\n", "}");
-      }
-    } else if (params.length == 2) {
-      if (methodName.equals("meta")) {
-        puts(0, "String name, String content) {");
-        puts(indent,
-             "  return meta().$name(name).$content(content)._();\n", "}");
-      } else if (methodName.equals("meta_http")) {
-        puts(0, "String header, String content) {");
-        puts(indent,
-             "  return meta().$http_equiv(header).$content(content)._();\n",
-             "}");
-      } else if (methodName.equals("a")) {
-        puts(0, "String href, String anchorText) {");
-        puts(indent,
-             "  return a().$href(href)._(anchorText)._();\n", "}");
-      } else if (methodName.equals("bdo")) {
-        puts(0, "Dir dir, String cdata) {");
-        puts(indent, "  return bdo().$dir(dir)._(cdata)._();\n", "}");
-      } else if (methodName.equals("label")) {
-        puts(0, "String forId, String cdata) {");
-        puts(indent, "  return label().$for(forId)._(cdata)._();\n", "}");
-      } else if (methodName.equals("param")) {
-        puts(0, "String name, String value) {");
-        puts(indent,
-             "  return param().$name(name).$value(value)._();\n", "}");
-      } else {
-        puts(0, "String selector, String cdata) {");
-        puts(indent,
-             "  return setSelector(", methodName,
-             "(), selector)._(cdata)._();\n", "}");
-      } 
-    } else if (params.length == 3) {
-      if (methodName.equals("a")) {
-        puts(0, "String selector, String href, String anchorText) {");
-        puts(indent,
-             "  return setSelector(a(), selector)",
-             ".$href(href)._(anchorText)._();\n", "}");
-      }
-    } else {
-      throwUnhandled(className, method);
-    }
-  }
-
-  static boolean needsEscaping(String eleName) {
-    return !eleName.equals("SCRIPT") && !eleName.equals("STYLE");
-  }
-
-  static void throwUnhandled(String className, Method method) {
-    throw new WebAppException("Unhandled " + className + "#" + method);
-  }
-
-  void echo(int indent, Object... args) {
-    String prev = null;
-    for (Object o : args) {
-      String s = String.valueOf(o);
-      if (!s.isEmpty() && !s.equals("\n") &&
-          (prev == null || prev.endsWith("\n"))) {
-        indent(indent);
-      }
-      prev = s;
-      out.print(s);
-      bytes += s.length();
-    }
-  }
-
-  void indent(int indent) {
-    for (int i = 0; i < indent; ++i) {
-      out.print("  ");
-      bytes += 2;
-    }
-  }
-
-  void puts(int indent, Object... args) {
-    echo(indent, args);
-    out.println();
-    ++bytes;
-  }
-
-  boolean isElement(String s) {
-    return elementRegex.matcher(s).matches();
-  }
-
-  public static void main(String[] args) throws Exception {
-    CommandLine cmd = new GnuParser().parse(opts, args);
-    if (cmd.hasOption("help")) {
-      new HelpFormatter().printHelp("Usage: hbgen [OPTIONS]", opts);
-      return;
-    }
-    // defaults
-    Class<?> specClass = HamletSpec.class;
-    Class<?> implClass = HamletImpl.class;
-    String outputClass = "HamletTmp";
-    String outputPackage = implClass.getPackage().getName();
-    if (cmd.hasOption("spec-class")) {
-      specClass = Class.forName(cmd.getOptionValue("spec-class"));
-    }
-    if (cmd.hasOption("impl-class")) {
-      implClass = Class.forName(cmd.getOptionValue("impl-class"));
-    }
-    if (cmd.hasOption("output-class")) {
-      outputClass = cmd.getOptionValue("output-class");
-    }
-    if (cmd.hasOption("output-package")) {
-      outputPackage = cmd.getOptionValue("output-package");
-    }
-    new HamletGen().generate(specClass, implClass, outputClass, outputPackage);
-  }
-}

+ 0 - 387
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/hamlet/HamletImpl.java

@@ -1,387 +0,0 @@
-/**
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.apache.hadoop.yarn.webapp.hamlet;
-
-import org.apache.hadoop.thirdparty.com.google.common.base.Joiner;
-import static org.apache.hadoop.thirdparty.com.google.common.base.Preconditions.*;
-import org.apache.hadoop.thirdparty.com.google.common.base.Splitter;
-import org.apache.hadoop.thirdparty.com.google.common.collect.Iterables;
-
-import java.io.PrintWriter;
-import java.util.EnumSet;
-import static java.util.EnumSet.*;
-import java.util.Iterator;
-
-import static org.apache.commons.text.StringEscapeUtils.*;
-import static org.apache.hadoop.yarn.webapp.hamlet.HamletImpl.EOpt.*;
-
-import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.yarn.webapp.SubView;
-import org.apache.hadoop.yarn.webapp.WebAppException;
-
-
-/**
- * A simple unbuffered generic hamlet implementation.
- *
- * Zero copy but allocation on every element, which could be
- * optimized to use a thread-local element pool.
- *
- * Prints HTML as it builds. So the order is important.
- * @deprecated Use org.apache.hadoop.yarn.webapp.hamlet2 package instead.
- */
-@Deprecated
-@InterfaceAudience.Private
-public class HamletImpl extends HamletSpec {
-  private static final String INDENT_CHARS = "  ";
-  private static final Splitter SS = Splitter.on('.').
-      omitEmptyStrings().trimResults();
-  private static final Joiner SJ = Joiner.on(' ');
-  private static final Joiner CJ = Joiner.on(", ");
-  static final int S_ID = 0;
-  static final int S_CLASS = 1;
-
-  int nestLevel;
-  int indents; // number of indent() called. mostly for testing.
-  private final PrintWriter out;
-  private final StringBuilder sb = new StringBuilder(); // not shared
-  private boolean wasInline = false;
-
-  /**
-   * Element options. (whether it needs end tag, is inline etc.)
-   */
-  public enum EOpt {
-    /** needs end(close) tag */
-    ENDTAG,
-    /** The content is inline */
-    INLINE,
-    /** The content is preformatted */
-    PRE
-  };
-
-  /**
-   * The base class for elements
-   * @param <T> type of the parent (containing) element for the element
-   */
-  public class EImp<T extends _> implements _Child {
-    private final String name;
-    private final T parent; // short cut for parent element
-    private final EnumSet<EOpt> opts; // element options
-
-    private boolean started = false;
-    private boolean attrsClosed = false;
-
-    EImp(String name, T parent, EnumSet<EOpt> opts) {
-      this.name = name;
-      this.parent = parent;
-      this.opts = opts;
-    }
-
-    @Override
-    public T _() {
-      closeAttrs();
-      --nestLevel;  
-      printEndTag(name, opts);
-      return parent;
-    }
-
-    protected void _p(boolean quote, Object... args) {
-      closeAttrs();
-      for (Object s : args) {
-        if (!opts.contains(PRE)) {
-          indent(opts);
-        }
-        out.print(quote ? escapeHtml4(String.valueOf(s))
-                        : String.valueOf(s));
-        if (!opts.contains(INLINE) && !opts.contains(PRE)) {
-          out.println();
-        }
-      }
-    }
-
-    protected void _v(Class<? extends SubView> cls) {
-      closeAttrs();
-      subView(cls);
-    }
-
-    protected void closeAttrs() {
-      if (!attrsClosed) {
-        startIfNeeded();
-        ++nestLevel;
-        out.print('>');
-        if (!opts.contains(INLINE) && !opts.contains(PRE)) {
-          out.println();
-        }
-        attrsClosed = true;
-      }
-    }
-
-    protected void addAttr(String name, String value) {
-      checkState(!attrsClosed, "attribute added after content");
-      startIfNeeded();
-      printAttr(name, value);
-    }
-
-    protected void addAttr(String name, Object value) {
-      addAttr(name, String.valueOf(value));
-    }
-
-    protected void addMediaAttr(String name, EnumSet<Media> media) {
-      // 6.13 comma-separated list
-      addAttr(name, CJ.join(media));
-    }
-
-    protected void addRelAttr(String name, EnumSet<LinkType> types) {
-      // 6.12 space-separated list
-      addAttr(name, SJ.join(types));
-    }
-
-    private void startIfNeeded() {
-      if (!started) {
-        printStartTag(name, opts);
-        started = true;
-      }
-    }
-
-    protected void _inline(boolean choice) {
-      if (choice) {
-        opts.add(INLINE);
-      } else {
-        opts.remove(INLINE);
-      }
-    }
-
-    protected void _endTag(boolean choice) {
-      if (choice) {
-        opts.add(ENDTAG);
-      } else {
-        opts.remove(ENDTAG);
-      }
-    }
-
-    protected void _pre(boolean choice) {
-      if (choice) {
-        opts.add(PRE);
-      } else {
-        opts.remove(PRE);
-      }
-    }
-  }
-
-  public class Generic<T extends _> extends EImp<T> implements PCData {
-    Generic(String name, T parent, EnumSet<EOpt> opts) {
-      super(name, parent, opts);
-    }
-
-    public Generic<T> _inline() {
-      super._inline(true);
-      return this;
-    }
-
-    public Generic<T> _noEndTag() {
-      super._endTag(false);
-      return this;
-    }
-
-    public Generic<T> _pre() {
-      super._pre(true);
-      return this;
-    }
-
-    public Generic<T> _attr(String name, String value) {
-      addAttr(name, value);
-      return this;
-    }
-
-    public Generic<Generic<T>> _elem(String name, EnumSet<EOpt> opts) {
-      closeAttrs();
-      return new Generic<Generic<T>>(name, this, opts);
-    }
-
-    public Generic<Generic<T>> elem(String name) {
-      return _elem(name, of(ENDTAG));
-    }
-
-    @Override
-    public Generic<T> _(Object... lines) {
-      _p(true, lines);
-      return this;
-    }
-
-    @Override
-    public Generic<T> _r(Object... lines) {
-      _p(false, lines);
-      return this;
-    }
-  }
-
-  public HamletImpl(PrintWriter out, int nestLevel, boolean wasInline) {
-    this.out = out;
-    this.nestLevel = nestLevel;
-    this.wasInline = wasInline;
-  }
-
-  public int nestLevel() {
-    return nestLevel;
-  }
-
-  public boolean wasInline() {
-    return wasInline;
-  }
-
-  public void setWasInline(boolean state) {
-    wasInline = state;
-  }
-
-  public PrintWriter getWriter() {
-    return out;
-  }
-
-  /**
-   * Create a root-level generic element.
-   * Mostly for testing purpose.
-   * @param <T> type of the parent element
-   * @param name of the element
-   * @param opts {@link EOpt element options}
-   * @return the element
-   */
-  public <T extends _>
-  Generic<T> root(String name, EnumSet<EOpt> opts) {
-    return new Generic<T>(name, null, opts);
-  }
-
-  public <T extends _> Generic<T> root(String name) {
-    return root(name, of(ENDTAG));
-  }
-
-  protected void printStartTag(String name, EnumSet<EOpt> opts) {
-    indent(opts);
-    sb.setLength(0);
-    out.print(sb.append('<').append(name).toString()); // for easier mock test
-  }
-
-  protected void indent(EnumSet<EOpt> opts) {
-    if (opts.contains(INLINE) && wasInline) {
-      return;
-    }
-    if (wasInline) {
-      out.println();
-    }
-    wasInline = opts.contains(INLINE) || opts.contains(PRE);
-    for (int i = 0; i < nestLevel; ++i) {
-      out.print(INDENT_CHARS);
-    }
-    ++indents;
-  }
-
-  protected void printEndTag(String name, EnumSet<EOpt> opts) {
-    if (!opts.contains(ENDTAG)) {
-      return;
-    }
-    if (!opts.contains(PRE)) {
-      indent(opts);
-    } else {
-      wasInline = opts.contains(INLINE);
-    }
-    sb.setLength(0);
-    out.print(sb.append("</").append(name).append('>').toString()); // ditto
-    if (!opts.contains(INLINE)) {
-      out.println();
-    }
-  }
-
-  protected void printAttr(String name, String value) {
-    sb.setLength(0);
-    sb.append(' ').append(name);
-    if (value != null) {
-      sb.append("=\"").append(escapeHtml4(value)).append("\"");
-    }
-    out.print(sb.toString());
-  }
-
-  /**
-   * Sub-classes should override this to do something interesting.
-   * @param cls the sub-view class
-   */
-  protected void subView(Class<? extends SubView> cls) {
-    indent(of(ENDTAG)); // not an inline view
-    sb.setLength(0);
-    out.print(sb.append('[').append(cls.getName()).append(']').toString());
-    out.println();
-  }
-
-  /**
-   * Parse selector into id and classes
-   * @param selector in the form of (#id)?(.class)*
-   * @return an two element array [id, "space-separated classes"].
-   *         Either element could be null.
-   * @throws WebAppException when both are null or syntax error.
-   */
-  public static String[] parseSelector(String selector) {
-    String[] result = new String[]{null, null};
-    Iterable<String> rs = SS.split(selector);
-    Iterator<String> it = rs.iterator();
-    if (it.hasNext()) {
-      String maybeId = it.next();
-      if (maybeId.charAt(0) == '#') {
-        result[S_ID] = maybeId.substring(1);
-        if (it.hasNext()) {
-          result[S_CLASS] = SJ.join(Iterables.skip(rs, 1));
-        }
-      } else {
-        result[S_CLASS] = SJ.join(rs);
-      }
-      return result;
-    }
-    throw new WebAppException("Error parsing selector: "+ selector);
-  }
-
-  /**
-   * Set id and/or class attributes for an element.
-   * @param <E> type of the element
-   * @param e the element
-   * @param selector Haml form of "(#id)?(.class)*"
-   * @return the element
-   */
-  public static <E extends CoreAttrs> E setSelector(E e, String selector) {
-    String[] res = parseSelector(selector);
-    if (res[S_ID] != null) {
-      e.$id(res[S_ID]);
-    }
-    if (res[S_CLASS] != null) {
-      e.$class(res[S_CLASS]);
-    }
-    return e;
-  }
-
-  public static <E extends LINK> E setLinkHref(E e, String href) {
-    if (href.endsWith(".css")) {
-      e.$rel("stylesheet"); // required in html5
-    }
-    e.$href(href);
-    return e;
-  }
-
-  public static <E extends SCRIPT> E setScriptSrc(E e, String src) {
-    if (src.endsWith(".js")) {
-      e.$type("text/javascript"); // required in html4
-    }
-    e.$src(src);
-    return e;
-  }
-}

+ 0 - 3103
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/hamlet/HamletSpec.java

@@ -1,3103 +0,0 @@
-/**
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.apache.hadoop.yarn.webapp.hamlet;
-
-import java.lang.annotation.*;
-import java.util.EnumSet;
-
-import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.yarn.webapp.SubView;
-
-/**
- * HTML5 compatible HTML4 builder interfaces.
- *
- * <p>Generated from HTML 4.01 strict DTD and HTML5 diffs.
- * <br>cf. http://www.w3.org/TR/html4/
- * <br>cf. http://www.w3.org/TR/html5-diff/
- * <p> The omitted attributes and elements (from the 4.01 DTD)
- * are for HTML5 compatibility.
- *
- * <p>Note, the common argument selector uses the same syntax as Haml/Sass:
- * <pre>  selector ::= (#id)?(.class)*</pre>
- * cf. http://haml-lang.com/
- *
- * <p>The naming convention used in this class is slightly different from
- * normal classes. A CamelCase interface corresponds to an entity in the DTD.
- * _CamelCase is for internal refactoring. An element builder interface is in
- * UPPERCASE, corresponding to an element definition in the DTD. $lowercase is
- * used as attribute builder methods to differentiate from element builder
- * methods.
- * @deprecated Use org.apache.hadoop.yarn.webapp.hamlet2 package instead.
- */
-@Deprecated
-@InterfaceAudience.LimitedPrivate({"YARN", "MapReduce"})
-public class HamletSpec {
-  // The enum values are lowercase for better compression,
-  // while avoiding runtime conversion.
-  // cf. http://www.w3.org/Protocols/HTTP/Performance/Compression/HTMLCanon.html
-  //     http://www.websiteoptimization.com/speed/tweak/lowercase/
-  /** %Shape (case-insensitive) */
-  public enum Shape {
-    /**
-     * rectangle
-     */
-    rect,
-    /**
-     * circle
-     */
-    circle,
-    /**
-     * polygon
-     */
-    poly,
-    /**
-     * default
-     */
-    Default
-  };
-
-  /** Values for the %18n dir attribute (case-insensitive) */
-  public enum Dir {
-    /**
-     * left to right
-     */
-    ltr,
-    /**
-     * right to left
-     */
-    rtl
-  };
-
-  /** %MediaDesc (case-sensitive) */
-  public enum Media {
-    /**
-     * computer screen
-     */
-    screen,
-    /**
-     * teletype/terminal
-     */
-    tty,
-    /**
-     * television
-     */
-    tv,
-    /**
-     * projection
-     */
-    projection,
-    /**
-     * mobile device
-     */
-    handheld,
-    /**
-     * print media
-     */
-    print,
-    /**
-     * braille
-     */
-    braille,
-    /**
-     * aural
-     */
-    aural,
-    /**
-     * suitable all media
-     */
-    all
-  };
-
-  /** %LinkTypes (case-insensitive) */
-  public enum LinkType {
-    /**
-     *
-     */
-    alternate,
-    /**
-     *
-     */
-    stylesheet,
-    /**
-     *
-     */
-    start,
-    /**
-     *
-     */
-    next,
-    /**
-     *
-     */
-    prev,
-    /**
-     *
-     */
-    contents,
-    /**
-     *
-     */
-    index,
-    /**
-     *
-     */
-    glossary,
-    /**
-     *
-     */
-    copyright,
-    /**
-     *
-     */
-    chapter,
-    /**
-     *
-     */
-    section,
-    /**
-     *
-     */
-    subsection,
-    /**
-     *
-     */
-    appendix,
-    /**
-     *
-     */
-    help,
-    /**
-     *
-     */
-    bookmark
-  };
-
-  /** Values for form methods (case-insensitive) */
-  public enum Method {
-    /**
-     * HTTP GET
-     */
-    get,
-    /**
-     * HTTP POST
-     */
-    post
-  };
-
-  /** %InputType (case-insensitive) */
-  public enum InputType {
-    /**
-     *
-     */
-    text,
-    /**
-     *
-     */
-    password,
-    /**
-     *
-     */
-    checkbox,
-    /**
-     *
-     */
-    radio,
-    /**
-     *
-     */
-    submit,
-    /**
-     *
-     */
-    reset,
-    /**
-     *
-     */
-    file,
-    /**
-     *
-     */
-    hidden,
-    /**
-     *
-     */
-    image,
-    /**
-     *
-     */
-    button
-  };
-
-  /** Values for button types */
-  public enum ButtonType {
-    /**
-     *
-     */
-    button,
-    /**
-     *
-     */
-    submit,
-    /**
-     *
-     */
-    reset
-  };
-
-  /** %Scope (case-insensitive) */
-  public enum Scope {
-    /**
-     *
-     */
-    row,
-    /**
-     *
-     */
-    col,
-    /**
-     *
-     */
-    rowgroup,
-    /**
-     *
-     */
-    colgroup
-  };
-
-  /**
-   * The element annotation for specifying element options other than
-   * attributes and allowed child elements
-   */
-  @Target({ElementType.TYPE})
-  @Retention(RetentionPolicy.RUNTIME)
-  public @interface Element {
-    /**
-     * Whether the start tag is required for the element.
-     * @return true if start tag is required
-     */
-    boolean startTag() default true;
-
-    /**
-     * Whether the end tag is required.
-     * @return true if end tag is required
-     */
-    boolean endTag() default true;
-  }
-
-  /**
-   *
-   */
-  public interface _ {}
-
-  /**
-   *
-   */
-  public interface _Child extends _ {
-    /**
-     * Finish the current element.
-     * @return the parent element
-     */
-    _ _();
-  }
-
-  /**
-   *
-   */
-  public interface _Script {
-    /**
-     * Add a script element.
-     * @return a script element builder
-     */
-    SCRIPT script();
-
-    /**
-     * Add a script element
-     * @param src uri of the script
-     * @return the current element builder
-     */
-    _Script script(String src);
-  }
-
-  /**
-   *
-   */
-  public interface _Object {
-      /**
-     * Add an object element.
-     * @return an object element builder
-     */
-    OBJECT object();
-
-    /**
-     * Add an object element.
-     * @param selector as #id.class etc.
-     * @return an object element builder
-     */
-    OBJECT object(String selector);
-  }
-
-  /** %head.misc */
-  public interface HeadMisc extends _Script, _Object {
-    /**
-     * Add a style element.
-     * @return a style element builder
-     */
-    STYLE style();
-
-    /**
-     * Add a css style element.
-     * @param lines content of the style sheet
-     * @return the current element builder
-     */
-    HeadMisc style(Object... lines);
-
-    /**
-     * Add a meta element.
-     * @return a meta element builder
-     */
-    META meta();
-
-    /**
-     * Add a meta element.
-     * Shortcut of <code>meta().$name(name).$content(content)._();</code>
-     * @param name of the meta element
-     * @param content of the meta element
-     * @return the current element builder
-     */
-    HeadMisc meta(String name, String content);
-
-    /**
-     * Add a meta element with http-equiv attribute.
-     * Shortcut of <br>
-     * <code>meta().$http_equiv(header).$content(content)._();</code>
-     * @param header for the http-equiv attribute
-     * @param content of the header
-     * @return the current element builder
-     */
-    HeadMisc meta_http(String header, String content);
-
-    /**
-     * Add a link element.
-     * @return a link element builder
-     */
-    LINK link();
-
-    /**
-     * Add a link element.
-     * Implementation should try to figure out type by the suffix of href.
-     * So <code>link("style.css");</code> is a shortcut of
-     * <code>link().$rel("stylesheet").$type("text/css").$href("style.css")._();
-     * </code>
-     * @param href of the link
-     * @return the current element builder
-     */
-    HeadMisc link(String href);
-  }
-
-  /** %heading */
-  public interface Heading {
-    /**
-     * Add an H1 element.
-     * @return a new H1 element builder
-     */
-    H1 h1();
-
-    /**
-     * Add a complete H1 element.
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    Heading h1(String cdata);
-
-    /**
-     * Add a complete H1 element
-     * @param selector the css selector in the form of (#id)?(.class)*
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    Heading h1(String selector, String cdata);
-
-    /**
-     * Add an H2 element.
-     * @return a new H2 element builder
-     */
-    H2 h2();
-
-    /**
-     * Add a complete H2 element.
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    Heading h2(String cdata);
-
-    /**
-     * Add a complete H1 element
-     * @param selector the css selector in the form of (#id)?(.class)*
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    Heading h2(String selector, String cdata);
-
-    /**
-     * Add an H3 element.
-     * @return a new H3 element builder
-     */
-    H3 h3();
-
-    /**
-     * Add a complete H3 element.
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    Heading h3(String cdata);
-
-    /**
-     * Add a complete H1 element
-     * @param selector the css selector in the form of (#id)?(.class)*
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    Heading h3(String selector, String cdata);
-
-    /**
-     * Add an H4 element.
-     * @return a new H4 element builder
-     */
-    H4 h4();
-
-    /**
-     * Add a complete H4 element.
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    Heading h4(String cdata);
-
-    /**
-     * Add a complete H4 element
-     * @param selector the css selector in the form of (#id)?(.class)*
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    Heading h4(String selector, String cdata);
-
-    /**
-     * Add an H5 element.
-     * @return a new H5 element builder
-     */
-    H5 h5();
-
-    /**
-     * Add a complete H5 element.
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    Heading h5(String cdata);
-
-    /**
-     * Add a complete H5 element
-     * @param selector the css selector in the form of (#id)?(.class)*
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    Heading h5(String selector, String cdata);
-
-    /**
-     * Add an H6 element.
-     * @return a new H6 element builder
-     */
-    H6 h6();
-
-    /**
-     * Add a complete H6 element.
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    Heading h6(String cdata);
-
-    /**
-     * Add a complete H6 element.
-     * @param selector the css selector in the form of (#id)?(.class)*
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    Heading h6(String selector, String cdata);
-  }
-
-  /** %list */
-  public interface Listing {
-
-    /**
-     * Add a UL (unordered list) element.
-     * @return a new UL element builder
-     */
-    UL ul();
-
-    /**
-     * Add a UL (unordered list) element.
-     * @param selector the css selector in the form of (#id)?(.class)*
-     * @return a new UL element builder
-     */
-    UL ul(String selector);
-
-    /**
-     * Add a OL (ordered list) element.
-     * @return a new UL element builder
-     */
-    OL ol();
-
-    /**
-     * Add a OL (ordered list) element.
-     * @param selector the css selector in the form of (#id)?(.class)*
-     * @return a new UL element builder
-     */
-    OL ol(String selector);
-  }
-
-  /** % preformatted */
-  public interface Preformatted {
-
-    /**
-     * Add a PRE (preformatted) element.
-     * @return a new PRE element builder
-     */
-    PRE pre();
-
-    /**
-     * Add a PRE (preformatted) element.
-     * @param selector the css selector in the form of (#id)?(.class)*
-     * @return a new PRE element builder
-     */
-    PRE pre(String selector);
-  }
-
-  /** %coreattrs */
-  public interface CoreAttrs {
-    /** document-wide unique id
-     * @param id the id
-     * @return the current element builder
-     */
-    CoreAttrs $id(String id);
-
-    /** space-separated list of classes
-     * @param cls the classes
-     * @return the current element builder
-     */
-    CoreAttrs $class(String cls);
-
-    /** associated style info
-     * @param style the style
-     * @return the current element builder
-     */
-    CoreAttrs $style(String style);
-
-    /** advisory title
-     * @param title the title
-     * @return the current element builder
-     */
-    CoreAttrs $title(String title);
-  }
-
-  /** %i18n */
-  public interface I18nAttrs {
-    /** language code
-     * @param lang the code
-     * @return the current element builder
-     */
-    I18nAttrs $lang(String lang);
-
-    /** direction for weak/neutral text
-     * @param dir the {@link Dir} value
-     * @return the current element builder
-     */
-    I18nAttrs $dir(Dir dir);
-  }
-
-  /** %events */
-  public interface EventsAttrs {
-
-    /** a pointer button was clicked
-     * @param onclick the script
-     * @return the current element builder
-     */
-    EventsAttrs $onclick(String onclick);
-
-    /** a pointer button was double clicked
-     * @param ondblclick the script
-     * @return the current element builder
-     */
-    EventsAttrs $ondblclick(String ondblclick);
-
-    /** a pointer button was pressed down
-     * @param onmousedown the script
-     * @return the current element builder
-     */
-    EventsAttrs $onmousedown(String onmousedown);
-
-    /** a pointer button was released
-     * @param onmouseup the script
-     * @return the current element builder
-     */
-    EventsAttrs $onmouseup(String onmouseup);
-
-    /** a pointer was moved onto
-     * @param onmouseover the script
-     * @return the current element builder
-     */
-    EventsAttrs $onmouseover(String onmouseover);
-
-    /** a pointer was moved within
-     * @param onmousemove the script
-     * @return the current element builder
-     */
-    EventsAttrs $onmousemove(String onmousemove);
-
-    /** a pointer was moved away
-     * @param onmouseout the script
-     * @return the current element builder
-     */
-    EventsAttrs $onmouseout(String onmouseout);
-
-    /** a key was pressed and released
-     * @param onkeypress the script
-     * @return the current element builder
-     */
-    EventsAttrs $onkeypress(String onkeypress);
-
-    /** a key was pressed down
-     * @param onkeydown the script
-     * @return the current element builder
-     */
-    EventsAttrs $onkeydown(String onkeydown);
-
-    /** a key was released
-     * @param onkeyup the script
-     * @return the current element builder
-     */
-    EventsAttrs $onkeyup(String onkeyup);
-  }
-
-  /** %attrs */
-  public interface Attrs extends CoreAttrs, I18nAttrs, EventsAttrs {
-  }
-
-  /** Part of %pre.exclusion */
-  public interface _FontSize extends _Child {
-    // BIG omitted cf. http://www.w3.org/TR/html5-diff/
-
-    /**
-     * Add a SMALL (small print) element
-     * @return a new SMALL element builder
-     */
-    SMALL small();
-
-    /**
-     * Add a complete small (small print) element.
-     * Shortcut of: small()._(cdata)._();
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    _FontSize small(String cdata);
-
-    /**
-     * Add a complete small (small print) element.
-     * Shortcut of: small().$id(id).$class(class)._(cdata)._();
-     * @param selector css selector in the form of (#id)?(.class)*
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    _FontSize small(String selector, String cdata);
-  }
-
-  /** %fontstyle -(%pre.exclusion) */
-  public interface _FontStyle extends _Child {
-    // TT omitted
-
-    /**
-     * Add an I (italic, alt voice/mood) element.
-     * @return the new I element builder
-     */
-    I i();
-
-    /**
-     * Add a complete I (italic, alt voice/mood) element.
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    _FontStyle i(String cdata);
-
-    /**
-     * Add a complete I (italic, alt voice/mood) element.
-     * @param selector the css selector in the form of (#id)?(.class)*
-     * @param cdata the content of the element
-     * @return the current element builder
-     */
-    _FontStyle i(String selector, String cdata);
-
-    /**
-     * Add a new B (bold/important) element.
-     * @return a new B element builder
-     */
-    B b();
-
-    /**
-     * Add a complete B (bold/important) element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _FontStyle b(String cdata);
-
-    /**
-     * Add a complete B (bold/important) element.
-     * @param selector the css select (#id)?(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-     _FontStyle b(String selector, String cdata);
-  }
-
-  /** %fontstyle */
-  public interface FontStyle extends _FontStyle, _FontSize {
-  }
-
-  /** %phrase */
-  public interface Phrase extends _Child {
-
-    /**
-     * Add an EM (emphasized) element.
-     * @return a new EM element builder
-     */
-    EM em();
-
-    /**
-     * Add an EM (emphasized) element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase em(String cdata);
-
-    /**
-     * Add an EM (emphasized) element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase em(String selector, String cdata);
-
-    /**
-     * Add a STRONG (important) element.
-     * @return a new STRONG element builder
-     */
-    STRONG strong();
-
-    /**
-     * Add a complete STRONG (important) element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase strong(String cdata);
-
-    /**
-     * Add a complete STRONG (important) element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase strong(String selector, String cdata);
-
-    /**
-     * Add a DFN element.
-     * @return a new DFN element builder
-     */
-    DFN dfn();
-
-    /**
-     * Add a complete DFN element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase dfn(String cdata);
-
-    /**
-     * Add a complete DFN element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase dfn(String selector, String cdata);
-
-    /**
-     * Add a CODE (code fragment) element.
-     * @return a new CODE element builder
-     */
-    CODE code();
-
-    /**
-     * Add a complete CODE element.
-     * @param cdata the code
-     * @return the current element builder
-     */
-    Phrase code(String cdata);
-
-    /**
-     * Add a complete CODE element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the code
-     * @return the current element builder
-     */
-    Phrase code(String selector, String cdata);
-
-    /**
-     * Add a SAMP (sample) element.
-     * @return a new SAMP element builder
-     */
-    SAMP samp();
-
-    /**
-     * Add a complete SAMP (sample) element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase samp(String cdata);
-
-    /**
-     * Add a complete SAMP (sample) element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase samp(String selector, String cdata);
-
-    /**
-     * Add a KBD (keyboard) element.
-     * @return a new KBD element builder
-     */
-    KBD kbd();
-
-    /**
-     * Add a KBD (keyboard) element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase kbd(String cdata);
-
-    /**
-     * Add a KBD (keyboard) element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase kbd(String selector, String cdata);
-
-    /**
-     * Add a VAR (variable) element.
-     * @return a new VAR element builder
-     */
-    VAR var();
-
-    /**
-     * Add a VAR (variable) element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase var(String cdata);
-
-    /**
-     * Add a VAR (variable) element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase var(String selector, String cdata);
-
-    /**
-     * Add a CITE element.
-     * @return a new CITE element builder
-     */
-    CITE cite();
-
-    /**
-     * Add a CITE element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase cite(String cdata);
-
-    /**
-     * Add a CITE element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase cite(String selector, String cdata);
-
-    /**
-     * Add an ABBR (abbreviation) element.
-     * @return a new ABBR element builder
-     */
-    ABBR abbr();
-
-    /**
-     * Add a ABBR (abbreviation) element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase abbr(String cdata);
-
-    /**
-     * Add a ABBR (abbreviation) element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    Phrase abbr(String selector, String cdata);
-
-    // ACRONYM omitted, use ABBR
-  }
-
-  /** Part of %pre.exclusion */
-  public interface _ImgObject extends _Object, _Child {
-
-    /**
-     * Add a IMG (image) element.
-     * @return a new IMG element builder
-     */
-    IMG img();
-
-    /**
-     * Add a IMG (image) element.
-     * @param src the source URL of the image
-     * @return the current element builder
-     */
-    _ImgObject img(String src);
-  }
-
-  /** Part of %pre.exclusion */
-  public interface _SubSup extends _Child {
-
-    /**
-     * Add a SUB (subscript) element.
-     * @return a new SUB element builder
-     */
-    SUB sub();
-
-    /**
-     * Add a complete SUB (subscript) element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _SubSup sub(String cdata);
-
-    /**
-     * Add a complete SUB (subscript) element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _SubSup sub(String selector, String cdata);
-
-    /**
-     * Add a SUP (superscript) element.
-     * @return a new SUP element builder
-     */
-    SUP sup();
-
-    /**
-     * Add a SUP (superscript) element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _SubSup sup(String cdata);
-
-    /**
-     * Add a SUP (superscript) element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _SubSup sup(String selector, String cdata);
-  }
-
-  /**
-   *
-   */
-  public interface _Anchor {
-
-    /**
-     * Add a A (anchor) element.
-     * @return a new A element builder
-     */
-    A a();
-
-    /**
-     * Add a A (anchor) element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new A element builder
-     */
-    A a(String selector);
-
-    /** Shortcut for <code>a().$href(href)._(anchorText)._();</code>
-     * @param href the URI
-     * @param anchorText for the URI
-     * @return the current element builder
-     */
-    _Anchor a(String href, String anchorText);
-
-    /** Shortcut for <code>a(selector).$href(href)._(anchorText)._();</code>
-     * @param selector in the form of (#id)?(.class)*
-     * @param href the URI
-     * @param anchorText for the URI
-     * @return the current element builder
-     */
-    _Anchor a(String selector, String href, String anchorText);
-  }
-
-  /**
-   * INS and DEL are unusual for HTML
-   * "in that they may serve as either block-level or inline elements
-   * (but not both)".
-   * <br>cf. http://www.w3.org/TR/html4/struct/text.html#h-9.4
-   * <br>cf. http://www.w3.org/TR/html5/edits.html#edits
-   */
-  public interface _InsDel {
-
-    /**
-     * Add an INS (insert) element.
-     * @return an INS element builder
-     */
-    INS ins();
-
-    /**
-     * Add a complete INS element.
-     * @param cdata inserted data
-     * @return the current element builder
-     */
-    _InsDel ins(String cdata);
-
-    /**
-     * Add a DEL (delete) element.
-     * @return a DEL element builder
-     */
-    DEL del();
-
-    /**
-     * Add a complete DEL element.
-     * @param cdata deleted data
-     * @return the current element builder
-     */
-    _InsDel del(String cdata);
-  }
-
-  /** %special -(A|%pre.exclusion) */
-  public interface _Special extends _Script, _InsDel {
-
-    /**
-     * Add a BR (line break) element.
-     * @return a new BR element builder
-     */
-    BR br();
-
-    /**
-     * Add a BR (line break) element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return the current element builder
-     */
-    _Special br(String selector);
-
-    /**
-     * Add a MAP element.
-     * @return a new MAP element builder
-     */
-    MAP map();
-
-    /**
-     * Add a MAP element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new MAP element builder
-     */
-    MAP map(String selector);
-
-    /**
-     * Add a Q (inline quotation) element.
-     * @return a q (inline quotation) element builder
-     */
-    Q q();
-
-    /**
-     * Add a complete Q element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Special q(String cdata);
-
-    /**
-     * Add a Q element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Special q(String selector, String cdata);
-
-    /**
-     * Add a SPAN element.
-     * @return a new SPAN element builder
-     */
-    SPAN span();
-
-    /**
-     * Add a SPAN element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Special span(String cdata);
-
-    /**
-     * Add a SPAN element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Special span(String selector, String cdata);
-
-    /**
-     * Add a bdo (bidirectional override) element
-     * @return a bdo element builder
-     */
-    BDO bdo();
-
-    /**
-     * Add a bdo (bidirectional override) element
-     * @param dir the direction of the text
-     * @param cdata the text
-     * @return the current element builder
-     */
-    _Special bdo(Dir dir, String cdata);
-  }
-
-  /** %special */
-  public interface Special extends _Anchor, _ImgObject, _SubSup, _Special {
-  }
-
-  /**
-   *
-   */
-  public interface _Label extends _Child {
-
-    /**
-     * Add a LABEL element.
-     * @return a new LABEL element builder
-     */
-    LABEL label();
-
-    /**
-     * Add a LABEL element.
-     * Shortcut of <code>label().$for(forId)._(cdata)._();</code>
-     * @param forId the for attribute
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Label label(String forId, String cdata);
-  }
-
-  /**
-   *
-   */
-  public interface _FormCtrl {
-
-    /**
-     * Add a INPUT element.
-     * @return a new INPUT element builder
-     */
-    INPUT input();
-
-    /**
-     * Add a INPUT element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new INPUT element builder
-     */
-    INPUT input(String selector);
-
-    /**
-     * Add a SELECT element.
-     * @return a new SELECT element builder
-     */
-    SELECT select();
-
-    /**
-     * Add a SELECT element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new SELECT element builder
-     */
-    SELECT select(String selector);
-
-    /**
-     * Add a TEXTAREA element.
-     * @return a new TEXTAREA element builder
-     */
-    TEXTAREA textarea();
-
-    /**
-     * Add a TEXTAREA element.
-     * @param selector
-     * @return a new TEXTAREA element builder
-     */
-    TEXTAREA textarea(String selector);
-
-    /**
-     * Add a complete TEXTAREA element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _FormCtrl textarea(String selector, String cdata);
-
-    /**
-     * Add a BUTTON element.
-     * @return a new BUTTON element builder
-     */
-    BUTTON button();
-
-    /**
-     * Add a BUTTON element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new BUTTON element builder
-     */
-    BUTTON button(String selector);
-
-    /**
-     * Add a complete BUTTON element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _FormCtrl button(String selector, String cdata);
-  }
-
-  /** %formctrl */
-  public interface FormCtrl extends _Label, _FormCtrl {
-  }
-
-  /**
-   *
-   */
-  public interface _Content extends _Child {
-    /**
-     * Content of the element
-     * @param lines of content
-     * @return the current element builder
-     */
-    _Content _(Object... lines);
-  }
-
-  /**
-   *
-   */
-  public interface _RawContent extends _Child {
-    /**
-     * Raw (no need to be HTML escaped) content
-     * @param lines of content
-     * @return the current element builder
-     */
-    _RawContent _r(Object... lines);
-  }
-
-  /** #PCDATA */
-  public interface PCData extends _Content, _RawContent {
-  }
-
-  /** %inline */
-  public interface Inline extends PCData, FontStyle, Phrase, Special, FormCtrl {
-  }
-
-  /**
-   *
-   */
-  public interface I extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface B extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface SMALL extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface EM extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface STRONG extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface DFN extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface CODE extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface SAMP extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface KBD extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface VAR extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface CITE extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface ABBR extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface ACRONYM extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface SUB extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface SUP extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface SPAN extends Attrs, Inline, _Child {
-  }
-
-  /** The dir attribute is required for the BDO element */
-  public interface BDO extends CoreAttrs, I18nAttrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface BR extends CoreAttrs, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface _Form {
-
-    /**
-     * Add a FORM element.
-     * @return a new FORM element builder
-     */
-    FORM form();
-
-    /**
-     * Add a FORM element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new FORM element builder
-     */
-    FORM form(String selector);
-  }
-
-  /**
-   *
-   */
-  public interface _FieldSet {
-
-    /**
-     * Add a FIELDSET element.
-     * @return a new FIELDSET element builder
-     */
-    FIELDSET fieldset();
-
-    /**
-     * Add a FIELDSET element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new FIELDSET element builder
-     */
-    FIELDSET fieldset(String selector);
-  }
-
-  /** %block -(FORM|FIELDSET) */
-  public interface _Block extends Heading, Listing, Preformatted {
-
-    /**
-     * Add a P (paragraph) element.
-     * @return a new P element builder
-     */
-    P p();
-
-    /**
-     * Add a P (paragraph) element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new P element builder
-     */
-    P p(String selector);
-
-    /**
-     * Add a DL (description list) element.
-     * @return a new DL element builder
-     */
-    DL dl();
-
-    /**
-     * Add a DL element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new DL element builder
-     */
-    DL dl(String selector);
-
-    /**
-     * Add a DIV element.
-     * @return a new DIV element builder
-     */
-    DIV div();
-
-    /**
-     * Add a DIV element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new DIV element builder
-     */
-    DIV div(String selector);
-
-    // NOSCRIPT omitted
-    // cf. http://www.w3.org/html/wg/tracker/issues/117
-
-    /**
-     * Add a BLOCKQUOTE element.
-     * @return a new BLOCKQUOTE element builder
-     */
-    BLOCKQUOTE blockquote();
-
-    /**
-     * Alias of blockquote
-     * @return a new BLOCKQUOTE element builder
-     */
-    BLOCKQUOTE bq();
-
-    /**
-     * Add a HR (horizontal rule) element.
-     * @return a new HR element builder
-     */
-    HR hr();
-
-    /**
-     * Add a HR element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new HR element builder
-     */
-    _Block hr(String selector);
-
-    /**
-     * Add a TABLE element.
-     * @return a new TABLE element builder
-     */
-    TABLE table();
-
-    /**
-     * Add a TABLE element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new TABLE element builder
-     */
-    TABLE table(String selector);
-
-    /**
-     * Add a ADDRESS element.
-     * @return a new ADDRESS element builder
-     */
-    ADDRESS address();
-
-    /**
-     * Add a complete ADDRESS element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Block address(String cdata);
-
-    /**
-     * Embed a sub-view.
-     * @param cls the sub-view class
-     * @return the current element builder
-     */
-    _Block _(Class<? extends SubView> cls);
-  }
-
-  /** %block */
-  public interface Block extends _Block, _Form, _FieldSet {
-  }
-
-  /** %flow */
-  public interface Flow extends Block, Inline {
-  }
-
-  /**
-   *
-   */
-  public interface _Body extends Block, _Script, _InsDel {
-  }
-
-  /**
-   *
-   */
-  public interface BODY extends Attrs, _Body, _Child {
-
-    /**
-     * The document has been loaded.
-     * @param script to invoke
-     * @return the current element builder
-     */
-    BODY $onload(String script);
-
-    /**
-     * The document has been removed
-     * @param script to invoke
-     * @return the current element builder
-     */
-    BODY $onunload(String script);
-  }
-
-  /**
-   *
-   */
-  public interface ADDRESS extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface DIV extends Attrs, Flow, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface A extends Attrs, _Child, /* %inline -(A) */
-                             PCData, FontStyle, Phrase, _ImgObject, _Special,
-                             _SubSup, FormCtrl {
-    // $charset omitted.
-
-    /** advisory content type
-     * @param cdata the content-type
-     * @return the current element builder
-     */
-    A $type(String cdata);
-
-    // $name omitted. use id instead.
-    /** URI for linked resource
-     * @param uri the URI
-     * @return the current element builder
-     */
-    A $href(String uri);
-
-    /** language code
-     * @param cdata the code
-     * @return the current element builder
-     */
-    A $hreflang(String cdata);
-
-    /** forward link types
-     * @param linkTypes the types
-     * @return the current element builder
-     */
-    A $rel(EnumSet<LinkType> linkTypes);
-
-    /**
-     * forward link types
-     * @param linkTypes space-separated list of link types
-     * @return the current element builder.
-     */
-    A $rel(String linkTypes);
-
-    // $rev omitted. Instead of rev="made", use rel="author"
-
-    /** accessibility key character
-     * @param cdata the key
-     * @return the current element builder
-     */
-    A $accesskey(String cdata);
-
-    // $shape and coords omitted. use area instead of a for image maps.
-    /** position in tabbing order
-     * @param index the index
-     * @return the current element builder
-     */
-    A $tabindex(int index);
-
-    /** the element got the focus
-     * @param script to invoke
-     * @return the current element builder
-     */
-    A $onfocus(String script);
-
-    /** the element lost the focus
-     * @param script to invoke
-     * @return the current element builder
-     */
-    A $onblur(String script);
-  }
-
-  /**
-   *
-   */
-  public interface MAP extends Attrs, Block, _Child {
-
-    /**
-     * Add a AREA element.
-     * @return a new AREA element builder
-     */
-    AREA area();
-
-    /**
-     * Add a AREA element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new AREA element builder
-     */
-    AREA area(String selector);
-
-    /** for reference by usemap
-     * @param name of the map
-     * @return the current element builder
-     */
-    MAP $name(String name);
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface AREA extends Attrs, _Child {
-
-    /** controls interpretation of coords
-     * @param shape of the area
-     * @return the current element builder
-     */
-    AREA $shape(Shape shape);
-
-    /** comma-separated list of lengths
-     * @param cdata coords of the area
-     * @return the current element builder
-     */
-    AREA $coords(String cdata);
-
-    /** URI for linked resource
-     * @param uri the URI
-     * @return the current element builder
-     */
-    AREA $href(String uri);
-
-    // $nohref omitted./
-    /** short description
-     * @param desc the description
-     * @return the current element builder
-     */
-    AREA $alt(String desc);
-
-    /** position in tabbing order
-     * @param index of the order
-     * @return the current element builder
-     */
-    AREA $tabindex(int index);
-
-    /** accessibility key character
-     * @param cdata the key
-     * @return the current element builder
-     */
-    AREA $accesskey(String cdata);
-
-    /** the element got the focus
-     * @param script to invoke
-     * @return the current element builder
-     */
-    AREA $onfocus(String script);
-
-    /** the element lost the focus
-     * @param script to invoke
-     * @return the current element builder
-     */
-    AREA $onblur(String script);
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface LINK extends Attrs, _Child {
-    // $charset omitted
-    /** URI for linked resource
-     * @param uri the URI
-     * @return the current element builder
-     */
-    LINK $href(String uri);
-
-    /** language code
-     * @param cdata the code
-     * @return the current element builder
-     */
-    LINK $hreflang(String cdata);
-
-    /** advisory content type
-     * @param cdata the type
-     * @return the current element builder
-     */
-    LINK $type(String cdata);
-
-    /** forward link types
-     * @param linkTypes the types
-     * @return the current element builder
-     */
-    LINK $rel(EnumSet<LinkType> linkTypes);
-
-    /**
-     * forward link types.
-     * @param linkTypes space-separated link types
-     * @return the current element builder
-     */
-    LINK $rel(String linkTypes);
-
-    // $rev omitted. Instead of rev="made", use rel="author"
-
-    /** for rendering on these media
-     * @param mediaTypes the media types
-     * @return the current element builder
-     */
-    LINK $media(EnumSet<Media> mediaTypes);
-
-    /**
-     * for rendering on these media.
-     * @param mediaTypes comma-separated list of media
-     * @return the current element builder
-     */
-    LINK $media(String mediaTypes);
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface IMG extends Attrs, _Child {
-
-    /** URI of image to embed
-     * @param uri the URI
-     * @return the current element builder
-     */
-    IMG $src(String uri);
-
-    /** short description
-     * @param desc the description
-     * @return the current element builder
-     */
-    IMG $alt(String desc);
-
-    // $longdesc omitted. use <a...><img..></a> instead
-    // $name omitted. use id instead.
-
-    /** override height
-     * @param pixels the height
-     * @return the current element builder
-     */
-    IMG $height(int pixels);
-
-    /**
-     * override height
-     * @param cdata the height (can use %, * etc.)
-     * @return the current element builder
-     */
-    IMG $height(String cdata);
-
-    /** override width
-     * @param pixels the width
-     * @return the current element builder
-     */
-    IMG $width(int pixels);
-
-    /**
-     * override width
-     * @param cdata the width (can use %, * etc.)
-     * @return the current element builder
-     */
-    IMG $width(String cdata);
-
-    /** use client-side image map
-     * @param uri the URI
-     * @return the current element builder
-     */
-    IMG $usemap(String uri);
-
-    /** use server-side image map
-     * @return the current element builder
-     */
-    IMG $ismap();
-  }
-
-  /**
-   *
-   */
-  public interface _Param extends _Child {
-
-    /**
-     * Add a PARAM (parameter) element.
-     * @return a new PARAM element builder
-     */
-    PARAM param();
-
-    /**
-     * Add a PARAM element.
-     * Shortcut of <code>param().$name(name).$value(value)._();</code>
-     * @param name of the value
-     * @param value the value
-     * @return the current element builder
-     */
-    _Param param(String name, String value);
-  }
-
-  /**
-   *
-   */
-  public interface OBJECT extends Attrs, _Param, Flow, _Child {
-    // $declare omitted. repeat element completely
-
-    // $archive, classid, codebase, codetype ommited. use data and type
-
-    /** reference to object's data
-     * @param uri the URI
-     * @return the current element builder
-     */
-    OBJECT $data(String uri);
-
-    /** content type for data
-     * @param contentType the type
-     * @return the current element builder
-     */
-    OBJECT $type(String contentType);
-
-    // $standby omitted. fix the resource instead.
-
-    /** override height
-     * @param pixels the height
-     * @return the current element builder
-     */
-    OBJECT $height(int pixels);
-
-    /**
-     * override height
-     * @param length the height (can use %, *)
-     * @return the current element builder
-     */
-    OBJECT $height(String length);
-
-    /** override width
-     * @param pixels the width
-     * @return the current element builder
-     */
-    OBJECT $width(int pixels);
-
-    /**
-     * override width
-     * @param length the height (can use %, *)
-     * @return the current element builder
-     */
-    OBJECT $width(String length);
-
-    /** use client-side image map
-     * @param uri the URI/name of the map
-     * @return the current element builder
-     */
-    OBJECT $usemap(String uri);
-
-    /** submit as part of form
-     * @param cdata the name of the object
-     * @return the current element builder
-     */
-    OBJECT $name(String cdata);
-
-    /** position in tabbing order
-     * @param index of the order
-     * @return the current element builder
-     */
-    OBJECT $tabindex(int index);
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface PARAM {
-
-    /** document-wide unique id
-     * @param cdata the id
-     * @return the current element builder
-     */
-    PARAM $id(String cdata);
-
-    /** property name. Required.
-     * @param cdata the name
-     * @return the current element builder
-     */
-    PARAM $name(String cdata);
-
-    /** property value
-     * @param cdata the value
-     * @return the current element builder
-     */
-    PARAM $value(String cdata);
-
-    // $type and valuetype omitted
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface HR extends Attrs, _Child {
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface P extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface H1 extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface H2 extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface H3 extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface H4 extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface H5 extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface H6 extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface PRE extends Attrs, _Child, /* (%inline;)* -(%pre.exclusion) */
-                               PCData, _FontStyle, Phrase, _Anchor, _Special,
-                               FormCtrl {
-  }
-
-  /**
-   *
-   */
-  public interface Q extends Attrs, Inline, _Child {
-
-    /** URI for source document or msg
-     * @param uri the URI
-     * @return the current element builder
-     */
-    Q $cite(String uri);
-  }
-
-  /**
-   *
-   */
-  public interface BLOCKQUOTE extends Attrs, Block, _Script, _Child {
-
-    /** URI for source document or msg
-     * @param uri the URI
-     * @return the current element builder
-     */
-    BLOCKQUOTE $cite(String uri);
-  }
-
-  /**
-   * @see _InsDel INS/DEL quirks.
-   */
-  public interface INS extends Attrs, Flow, _Child {
-    /** info on reason for change
-     * @param uri
-     * @return the current element builder
-     */
-    INS $cite(String uri);
-
-    /** date and time of change
-     * @param datetime
-     * @return the current element builder
-     */
-    INS $datetime(String datetime);
-  }
-
-  /**
-   * @see _InsDel INS/DEL quirks.
-   */
-  public interface DEL extends Attrs, Flow, _Child {
-    /** info on reason for change
-     * @param uri the info URI
-     * @return the current element builder
-     */
-    DEL $cite(String uri);
-
-    /** date and time of change
-     * @param datetime the time
-     * @return the current element builder
-     */
-    DEL $datetime(String datetime);
-  }
-
-  /**
-   *
-   */
-  public interface _Dl extends _Child {
-
-    /**
-     * Add a DT (term of the item) element.
-     * @return a new DT element builder
-     */
-    DT dt();
-
-    /**
-     * Add a complete DT element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Dl dt(String cdata);
-
-    /**
-     * Add a DD (definition/description) element.
-     * @return a new DD element builder
-     */
-    DD dd();
-
-    /**
-     * Add a complete DD element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Dl dd(String cdata);
-  }
-
-  /**
-   *
-   */
-  public interface DL extends Attrs, _Dl, _Child {
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface DT extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface DD extends Attrs, Flow, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface _Li extends _Child {
-
-    /**
-     * Add a LI (list item) element.
-     * @return a new LI element builder
-     */
-    LI li();
-
-    /**
-     * Add a LI element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Li li(String cdata);
-  }
-
-  /**
-   *
-   */
-  public interface OL extends Attrs, _Li, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface UL extends Attrs, _Li, _Child {
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface LI extends Attrs, Flow, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface FORM extends Attrs, _Child, /* (%block;|SCRIPT)+ -(FORM) */
-                                _Script, _Block, _FieldSet {
-    /** server-side form handler
-     * @param uri
-     * @return the current element builder
-     */
-    FORM $action(String uri);
-
-    /** HTTP method used to submit the form
-     * @param method
-     * @return the current element builder
-     */
-    FORM $method(Method method);
-
-    /**
-     * contentype for "POST" method.
-     * The default is "application/x-www-form-urlencoded".
-     * Use "multipart/form-data" for input type=file
-     * @param enctype
-     * @return the current element builder
-     */
-    FORM $enctype(String enctype);
-
-    /** list of MIME types for file upload
-     * @param cdata
-     * @return the current element builder
-     */
-    FORM $accept(String cdata);
-
-    /** name of form for scripting
-     * @param cdata
-     * @return the current element builder
-     */
-    FORM $name(String cdata);
-
-    /** the form was submitted
-     * @param script
-     * @return the current element builder
-     */
-    FORM $onsubmit(String script);
-
-    /** the form was reset
-     * @param script
-     * @return the current element builder
-     */
-    FORM $onreset(String script);
-
-    /** (space and/or comma separated) list of supported charsets
-     * @param cdata
-     * @return the current element builder
-     */
-    FORM $accept_charset(String cdata);
-  }
-
-  /**
-   *
-   */
-  public interface LABEL extends Attrs, _Child, /* (%inline;)* -(LABEL) */
-                                 PCData, FontStyle, Phrase, Special, _FormCtrl {
-    /** matches field ID value
-     * @param cdata
-     * @return the current element builder
-     */
-    LABEL $for(String cdata);
-
-    /** accessibility key character
-     * @param cdata
-     * @return the current element builder
-     */
-    LABEL $accesskey(String cdata);
-
-    /** the element got the focus
-     * @param script
-     * @return the current element builder
-     */
-    LABEL $onfocus(String script);
-
-    /** the element lost the focus
-     * @param script
-     * @return the current element builder
-     */
-    LABEL $onblur(String script);
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface INPUT extends Attrs, _Child {
-    /** what kind of widget is needed. default is "text".
-     * @param inputType
-     * @return the current element builder
-     */
-    INPUT $type(InputType inputType);
-
-    /** submit as part of form
-     * @param cdata
-     * @return the current element builder
-     */
-    INPUT $name(String cdata);
-
-    /** Specify for radio buttons and checkboxes
-     * @param cdata
-     * @return the current element builder
-     */
-    INPUT $value(String cdata);
-
-    /** for radio buttons and check boxes
-     * @return the current element builder
-     */
-    INPUT $checked();
-
-    /** unavailable in this context
-     * @return the current element builder
-     */
-    INPUT $disabled();
-
-    /** for text and passwd
-     * @return the current element builder
-     */
-    INPUT $readonly();
-
-    /** specific to each type of field
-     * @param cdata
-     * @return the current element builder
-     */
-    INPUT $size(String cdata);
-
-    /** max chars for text fields
-     * @param length
-     * @return the current element builder
-     */
-    INPUT $maxlength(int length);
-
-    /** for fields with images
-     * @param uri
-     * @return the current element builder
-     */
-    INPUT $src(String uri);
-
-    /** short description
-     * @param cdata
-     * @return the current element builder
-     */
-    INPUT $alt(String cdata);
-
-    // $usemap omitted. use img instead of input for image maps.
-    /** use server-side image map
-     * @return the current element builder
-     */
-    INPUT $ismap();
-
-    /** position in tabbing order
-     * @param index
-     * @return the current element builder
-     */
-    INPUT $tabindex(int index);
-
-    /** accessibility key character
-     * @param cdata
-     * @return the current element builder
-     */
-    INPUT $accesskey(String cdata);
-
-    /** the element got the focus
-     * @param script
-     * @return the current element builder
-     */
-    INPUT $onfocus(String script);
-
-    /** the element lost the focus
-     * @param script
-     * @return the current element builder
-     */
-    INPUT $onblur(String script);
-
-    /** some text was selected
-     * @param script
-     * @return the current element builder
-     */
-    INPUT $onselect(String script);
-
-    /** the element value was changed
-     * @param script
-     * @return the current element builder
-     */
-    INPUT $onchange(String script);
-
-    /** list of MIME types for file upload (csv)
-     * @param contentTypes
-     * @return the current element builder
-     */
-    INPUT $accept(String contentTypes);
-  }
-
-  /**
-   *
-   */
-  public interface _Option extends _Child {
-    /**
-     * Add a OPTION element.
-     * @return a new OPTION element builder
-     */
-    OPTION option();
-
-    /**
-     * Add a complete OPTION element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Option option(String cdata);
-  }
-
-  /**
-   *
-   */
-  public interface SELECT extends Attrs, _Option, _Child {
-    /**
-     * Add a OPTGROUP element.
-     * @return a new OPTGROUP element builder
-     */
-    OPTGROUP optgroup();
-
-    /** field name
-     * @param cdata
-     * @return the current element builder
-     */
-    SELECT $name(String cdata);
-
-    /** rows visible
-     * @param rows
-     * @return the current element builder
-     */
-    SELECT $size(int rows);
-
-    /** default is single selection
-     * @return the current element builder
-     */
-    SELECT $multiple();
-
-    /** unavailable in this context
-     * @return the current element builder
-     */
-    SELECT $disabled();
-
-    /** position in tabbing order
-     * @param index
-     * @return the current element builder
-     */
-    SELECT $tabindex(int index);
-
-    /** the element got the focus
-     * @param script
-     * @return the current element builder
-     */
-    SELECT $onfocus(String script);
-
-    /** the element lost the focus
-     * @param script
-     * @return the current element builder
-     */
-    SELECT $onblur(String script);
-
-    /** the element value was changed
-     * @param script
-     * @return the current element builder
-     */
-    SELECT $onchange(String script);
-  }
-
-  /**
-   *
-   */
-  public interface OPTGROUP extends Attrs, _Option, _Child {
-    /** unavailable in this context
-     * @return the current element builder
-     */
-    OPTGROUP $disabled();
-
-    /** for use in hierarchical menus
-     * @param cdata
-     * @return the current element builder
-     */
-    OPTGROUP $label(String cdata);
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface OPTION extends Attrs, PCData, _Child {
-    /** currently selected option
-     * @return the current element builder
-     */
-    OPTION $selected();
-
-    /** unavailable in this context
-     * @return the current element builder
-     */
-    OPTION $disabled();
-
-    /** for use in hierarchical menus
-     * @param cdata
-     * @return the current element builder
-     */
-    OPTION $label(String cdata);
-
-    /** defaults to element content
-     * @param cdata
-     * @return the current element builder
-     */
-    OPTION $value(String cdata);
-  }
-
-  /**
-   *
-   */
-  public interface TEXTAREA extends Attrs, PCData, _Child {
-    /** variable name for the text
-     * @param cdata
-     * @return the current element builder
-     */
-    TEXTAREA $name(String cdata);
-
-    /** visible rows
-     * @param rows
-     * @return the current element builder
-     */
-    TEXTAREA $rows(int rows);
-
-    /** visible columns
-     * @param cols
-     * @return the current element builder
-     */
-    TEXTAREA $cols(int cols);
-
-    /** unavailable in this context
-     * @return the current element builder
-     */
-    TEXTAREA $disabled();
-
-    /** text is readonly
-     * @return the current element builder
-     */
-    TEXTAREA $readonly();
-
-    /** position in tabbing order
-     * @param index
-     * @return the current element builder
-     */
-    TEXTAREA $tabindex(int index);
-
-    /** accessibility key character
-     * @param cdata
-     * @return the current element builder
-     */
-    TEXTAREA $accesskey(String cdata);
-
-    /** the element got the focus
-     * @param script
-     * @return the current element builder
-     */
-    TEXTAREA $onfocus(String script);
-
-    /** the element lost the focus
-     * @param script
-     * @return the current element builder
-     */
-    TEXTAREA $onblur(String script);
-
-    /** some text was selected
-     * @param script
-     * @return the current element builder
-     */
-    TEXTAREA $onselect(String script);
-
-    /** the element value was changed
-     * @param script
-     * @return the current element builder
-     */
-    TEXTAREA $onchange(String script);
-  }
-
-  /**
-   *
-   */
-  public interface _Legend extends _Child {
-    /**
-     * Add a LEGEND element.
-     * @return a new LEGEND element builder
-     */
-    LEGEND legend();
-
-    /**
-     * Add a LEGEND element.
-     * @param cdata
-     * @return the current element builder
-     */
-    _Legend legend(String cdata);
-  }
-
-  /**
-   *
-   */
-  public interface FIELDSET extends Attrs, _Legend, PCData, Flow, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface LEGEND extends Attrs, Inline, _Child {
-    /** accessibility key character
-     * @param cdata
-     * @return the current element builder
-     */
-    LEGEND $accesskey(String cdata);
-  }
-
-  /**
-   *
-   */
-  public interface BUTTON extends /* (%flow;)* -(A|%formctrl|FORM|FIELDSET) */
-      _Block, PCData, FontStyle, Phrase, _Special, _ImgObject, _SubSup, Attrs {
-    /** name of the value
-     * @param cdata
-     * @return the current element builder
-     */
-    BUTTON $name(String cdata);
-
-    /** sent to server when submitted
-     * @param cdata
-     * @return the current element builder
-     */
-    BUTTON $value(String cdata);
-
-    /** for use as form button
-     * @param type
-     * @return the current element builder
-     */
-    BUTTON $type(ButtonType type);
-
-    /** unavailable in this context
-     * @return the current element builder
-     */
-    BUTTON $disabled();
-
-    /** position in tabbing order
-     * @param index
-     * @return the current element builder
-     */
-    BUTTON $tabindex(int index);
-
-    /** accessibility key character
-     * @param cdata
-     * @return the current element builder
-     */
-    BUTTON $accesskey(String cdata);
-
-    /** the element got the focus
-     * @param script
-     * @return the current element builder
-     */
-    BUTTON $onfocus(String script);
-
-    /** the element lost the focus
-     * @param script
-     * @return the current element builder
-     */
-    BUTTON $onblur(String script);
-  }
-
-  /**
-   *
-   */
-  public interface _TableRow {
-    /**
-     * Add a TR (table row) element.
-     * @return a new TR element builder
-     */
-    TR tr();
-
-    /**
-     * Add a TR element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new TR element builder
-     */
-    TR tr(String selector);
-  }
-
-  /**
-   *
-   */
-  public interface _TableCol extends _Child {
-    /**
-     * Add a COL element.
-     * @return a new COL element builder
-     */
-    COL col();
-
-    /**
-     * Add a COL element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return the current element builder
-     */
-    _TableCol col(String selector);
-  }
-
-  /**
-   *
-   */
-  public interface _Table extends _TableRow, _TableCol {
-    /**
-     * Add a CAPTION element.
-     * @return a new CAPTION element builder
-     */
-    CAPTION caption();
-
-    /**
-     * Add a CAPTION element.
-     * @param cdata
-     * @return the current element builder
-     */
-    _Table caption(String cdata);
-
-    /**
-     * Add a COLGROPU element.
-     * @return a new COLGROUP element builder
-     */
-    COLGROUP colgroup();
-
-    /**
-     * Add a THEAD element.
-     * @return a new THEAD element builder
-     */
-    THEAD thead();
-
-    /**
-     * Add a THEAD element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new THEAD element builder
-     */
-    THEAD thead(String selector);
-
-    /**
-     * Add a TFOOT element.
-     * @return a new TFOOT element builder
-     */
-    TFOOT tfoot();
-
-    /**
-     * Add a TFOOT element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new TFOOT element builder
-     */
-    TFOOT tfoot(String selector);
-
-    /**
-     * Add a tbody (table body) element.
-     * Must be after thead/tfoot and no tr at the same level.
-     * @return a new tbody element builder
-     */
-    TBODY tbody();
-
-    /**
-     * Add a TBODY element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new TBODY element builder
-     */
-    TBODY tbody(String selector);
-
-    // $summary, width, border, frame, rules, cellpadding, cellspacing omitted
-    // use css instead
-  }
-  /**
-   * TBODY should be used after THEAD/TFOOT, iff there're no TABLE.TR elements.
-   */
-  public interface TABLE extends Attrs, _Table, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface CAPTION extends Attrs, Inline, _Child {
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface THEAD extends Attrs, _TableRow, _Child {
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface TFOOT extends Attrs, _TableRow, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface TBODY extends Attrs, _TableRow, _Child {
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface COLGROUP extends Attrs, _TableCol, _Child {
-    /** default number of columns in group. default: 1
-     * @param cols
-     * @return the current element builder
-     */
-    COLGROUP $span(int cols);
-
-    // $width omitted. use css instead.
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface COL extends Attrs, _Child {
-    /** COL attributes affect N columns. default: 1
-     * @param cols
-     * @return the current element builder
-     */
-    COL $span(int cols);
-    // $width omitted. use css instead.
-  }
-
-  /**
-   *
-   */
-  public interface _Tr extends _Child {
-    /**
-     * Add a TH element.
-     * @return a new TH element builder
-     */
-    TH th();
-
-    /**
-     * Add a complete TH element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Tr th(String cdata);
-
-    /**
-     * Add a TH element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Tr th(String selector, String cdata);
-
-    /**
-     * Add a TD element.
-     * @return a new TD element builder
-     */
-    TD td();
-
-    /**
-     * Add a TD element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Tr td(String cdata);
-
-    /**
-     * Add a TD element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Tr td(String selector, String cdata);
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface TR extends Attrs, _Tr, _Child {
-  }
-
-  /**
-   *
-   */
-  public interface _Cell extends Attrs, Flow, _Child {
-    // $abbr omited. begin cell text with terse text instead.
-    // use $title for elaberation, when appropriate.
-    // $axis omitted. use scope.
-    /** space-separated list of id's for header cells
-     * @param cdata
-     * @return the current element builder
-     */
-    _Cell $headers(String cdata);
-
-    /** scope covered by header cells
-     * @param scope
-     * @return the current element builder
-     */
-    _Cell $scope(Scope scope);
-
-    /** number of rows spanned by cell. default: 1
-     * @param rows
-     * @return the current element builder
-     */
-    _Cell $rowspan(int rows);
-
-    /** number of cols spanned by cell. default: 1
-     * @param cols
-     * @return the current element builder
-     */
-    _Cell $colspan(int cols);
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface TH extends _Cell {
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface TD extends _Cell {
-  }
-
-  /**
-   *
-   */
-  public interface _Head extends HeadMisc {
-    /**
-     * Add a TITLE element.
-     * @return a new TITLE element builder
-     */
-    TITLE title();
-
-    /**
-     * Add a TITLE element.
-     * @param cdata the content
-     * @return the current element builder
-     */
-    _Head title(String cdata);
-
-    /**
-     * Add a BASE element.
-     * @return a new BASE element builder
-     */
-    BASE base();
-
-    /**
-     * Add a complete BASE element.
-     * @param uri
-     * @return the current element builder
-     */
-    _Head base(String uri);
-  }
-
-  /**
-   *
-   */
-  public interface HEAD extends I18nAttrs, _Head, _Child {
-    // $profile omitted
-  }
-
-  /**
-   *
-   */
-  public interface TITLE extends I18nAttrs, PCData, _Child {
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface BASE extends _Child {
-    /** URI that acts as base URI
-     * @param uri
-     * @return the current element builder
-     */
-    BASE $href(String uri);
-  }
-
-  /**
-   *
-   */
-  @Element(endTag=false)
-  public interface META extends I18nAttrs, _Child {
-    /** HTTP response header name
-     * @param header
-     * @return the current element builder
-     */
-    META $http_equiv(String header);
-
-    /** metainformation name
-     * @param name
-     * @return the current element builder
-     */
-    META $name(String name);
-
-    /** associated information
-     * @param cdata
-     * @return the current element builder
-     */
-    META $content(String cdata);
-
-    // $scheme omitted
-  }
-
-  /**
-   *
-   */
-  public interface STYLE extends I18nAttrs, _Content, _Child {
-    /** content type of style language
-     * @param cdata
-     * @return the current element builder
-     */
-    STYLE $type(String cdata);
-
-    /** designed for use with these media
-     * @param media
-     * @return the current element builder
-     */
-    STYLE $media(EnumSet<Media> media);
-
-    /** advisory title
-     * @param cdata
-     * @return the current element builder
-     */
-    STYLE $title(String cdata);
-  }
-
-  /**
-   *
-   */
-  public interface SCRIPT extends _Content, _Child {
-    /** char encoding of linked resource
-     * @param cdata
-     * @return the current element builder
-     */
-    SCRIPT $charset(String cdata);
-
-    /** content type of script language
-     * @param cdata
-     * @return the current element builder
-     */
-    SCRIPT $type(String cdata);
-
-    /** URI for an external script
-     * @param cdata
-     * @return the current element builder
-     */
-    SCRIPT $src(String cdata);
-
-    /** UA may defer execution of script
-     * @param cdata
-     * @return the current element builder
-     */
-    SCRIPT $defer(String cdata);
-  }
-
-  /**
-   *
-   */
-  public interface _Html extends _Head, _Body, _ {
-    /**
-     * Add a HEAD element.
-     * @return a new HEAD element builder
-     */
-    HEAD head();
-
-    /**
-     * Add a BODY element.
-     * @return a new BODY element builder
-     */
-    BODY body();
-
-    /**
-     * Add a BODY element.
-     * @param selector the css selector in the form of (#id)*(.class)*
-     * @return a new BODY element builder
-     */
-    BODY body(String selector);
-  }
-
-  // There is only one HEAD and BODY, in that order.
-  /**
-   * The root element
-   */
-  public interface HTML extends I18nAttrs, _Html {
-  }
-}

+ 0 - 27
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/hamlet/package-info.java

@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Deprecated.
- * Use org.apache.hadoop.yarn.webapp.hamlet2 package instead.
- */
-@Deprecated
-@InterfaceAudience.LimitedPrivate({"YARN", "MapReduce"})
-package org.apache.hadoop.yarn.webapp.hamlet;
-import org.apache.hadoop.classification.InterfaceAudience;
-

+ 0 - 57
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/webapp/hamlet/TestParseSelector.java

@@ -1,57 +0,0 @@
-/**
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.apache.hadoop.yarn.webapp.hamlet;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-import org.apache.hadoop.yarn.webapp.WebAppException;
-
-import static org.apache.hadoop.yarn.webapp.hamlet.HamletImpl.*;
-
-public class TestParseSelector {
-
-  @Test public void testNormal() {
-    String[] res = parseSelector("#id.class");
-    assertEquals("id", res[S_ID]);
-    assertEquals("class", res[S_CLASS]);
-  }
-
-  @Test public void testMultiClass() {
-    String[] res = parseSelector("#id.class1.class2");
-    assertEquals("id", res[S_ID]);
-    assertEquals("class1 class2", res[S_CLASS]);
-  }
-
-  @Test public void testMissingId() {
-    String[] res = parseSelector(".class");
-    assertNull(res[S_ID]);
-    assertEquals("class", res[S_CLASS]);
-  }
-
-  @Test public void testMissingClass() {
-    String[] res = parseSelector("#id");
-    assertEquals("id", res[S_ID]);
-    assertNull(res[S_CLASS]);
-  }
-
-  @Test(expected=WebAppException.class) public void testMissingAll() {
-    parseSelector("");
-  }
-}

+ 41 - 43
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/webapp/hamlet/TestHamlet.java → hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/webapp/hamlet2/TestHamlet.java

@@ -1,33 +1,31 @@
-/**
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.apache.hadoop.yarn.webapp.hamlet;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.webapp.hamlet2;
 
 import java.util.EnumSet;
 import java.io.PrintWriter;
 import org.junit.Test;
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
 
 import org.apache.hadoop.yarn.webapp.SubView;
-import org.apache.hadoop.yarn.webapp.hamlet.Hamlet;
 
-import static org.apache.hadoop.yarn.webapp.hamlet.HamletSpec.*;
+import static org.apache.hadoop.yarn.webapp.hamlet2.HamletSpec.*;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.*;
 
 public class TestHamlet {
 
@@ -36,11 +34,11 @@ public class TestHamlet {
         title("test").
         h1("heading 1").
         p("#id.class").
-          b("hello").
-          em("world!")._().
+        b("hello").
+        em("world!").__().
         div("#footer").
-          _("Brought to you by").
-          a("http://hostname/", "Somebody")._();
+        __("Brought to you by").
+        a("https://hostname/", "Somebody").__();
 
     PrintWriter out = h.getWriter();
     out.flush();
@@ -64,7 +62,7 @@ public class TestHamlet {
     verify(out).print(" id=\"footer\"");
     verify(out).print("Brought to you by");
     verify(out).print("<a");
-    verify(out).print(" href=\"http://hostname/\"");
+    verify(out).print(" href=\"https://hostname/\"");
     verify(out).print("Somebody");
     verify(out).print("</a>");
     verify(out).print("</div>");
@@ -79,9 +77,9 @@ public class TestHamlet {
     TABLE t = h.table("#id");
 
     for (int i = 0; i < 3; ++i) {
-      t.tr().td("1").td("2")._();
+      t.tr().td("1").td("2").__();
     }
-    t._();
+    t.__();
 
     PrintWriter out = h.getWriter();
     out.flush();
@@ -97,12 +95,12 @@ public class TestHamlet {
         meta_http("Content-type", "text/html; charset=utf-8").
         title("test enum attrs").
         link().$rel("stylesheet").
-          $media(EnumSet.of(Media.screen, Media.print)).
-          $type("text/css").$href("style.css")._().
+        $media(EnumSet.of(Media.screen, Media.print)).
+        $type("text/css").$href("style.css").__().
         link().$rel(EnumSet.of(LinkType.index, LinkType.start)).
-          $href("index.html")._();
+        $href("index.html").__();
 
-    h.div("#content")._("content")._();
+    h.div("#content").__("content").__();
 
     PrintWriter out = h.getWriter();
     out.flush();
@@ -126,12 +124,12 @@ public class TestHamlet {
   @Test public void testPreformatted() {
     Hamlet h = newHamlet().
         div().
-          i("inline before pre").
-          pre().
-            _("pre text1\npre text2").
-            i("inline in pre").
-            _("pre text after inline")._().
-          i("inline after pre")._();
+        i("inline before pre").
+        pre().
+        __("pre text1\npre text2").
+        i("inline in pre").
+        __("pre text after inline").__().
+        i("inline after pre").__();
 
     PrintWriter out = h.getWriter();
     out.flush();
@@ -149,8 +147,8 @@ public class TestHamlet {
   @Test public void testSubViews() {
     Hamlet h = newHamlet().
         title("test sub-views").
-        div("#view1")._(TestView1.class)._().
-        div("#view2")._(TestView2.class)._();
+        div("#view1").__(TestView1.class).__().
+        div("#view2").__(TestView2.class).__();
 
     PrintWriter out = h.getWriter();
     out.flush();
@@ -163,4 +161,4 @@ public class TestHamlet {
     PrintWriter out = spy(new PrintWriter(System.out));
     return new Hamlet(out, 0, false);
   }
-}
+}

+ 37 - 38
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/webapp/hamlet/TestHamletImpl.java → hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/webapp/hamlet2/TestHamletImpl.java

@@ -1,30 +1,29 @@
-/**
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements.  See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership.  The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package org.apache.hadoop.yarn.webapp.hamlet;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.webapp.hamlet2;
 
 import java.io.PrintWriter;
 import org.junit.Test;
-import static org.junit.Assert.*;
+
+import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.*;
 
-import org.apache.hadoop.yarn.webapp.hamlet.HamletImpl;
-import org.apache.hadoop.yarn.webapp.hamlet.HamletSpec.*;
+import org.apache.hadoop.yarn.webapp.hamlet2.HamletSpec.*;
 
 public class TestHamletImpl {
   /**
@@ -35,25 +34,25 @@ public class TestHamletImpl {
     PrintWriter out = spy(new PrintWriter(System.out));
     HamletImpl hi = new HamletImpl(out, 0, false);
     hi.
-      root("start")._attr("name", "value").
-        _("start text").
+        root("start")._attr("name", "value").
+        __("start text").
         elem("sub")._attr("name", "value").
-          _("sub text")._().
+        __("sub text").__().
         elem("sub1")._noEndTag()._attr("boolean", null).
-          _("sub1text")._().
-        _("start text2").
+        __("sub1text").__().
+        __("start text2").
         elem("pre")._pre().
-          _("pre text").
-          elem("i")._inline()._("inline")._()._().
-        elem("i")._inline()._("inline after pre")._().
-        _("start text3").
+        __("pre text").
+        elem("i")._inline().__("inline").__().__().
+        elem("i")._inline().__("inline after pre").__().
+        __("start text3").
         elem("sub2").
-          _("sub2text")._().
+        __("sub2text").__().
         elem("sub3")._noEndTag().
-          _("sub3text")._().
+        __("sub3text").__().
         elem("sub4")._noEndTag().
-          elem("i")._inline()._("inline")._().
-          _("sub4text")._()._();
+        elem("i")._inline().__("inline").__().
+        __("sub4text").__().__();
 
     out.flush();
     assertEquals(0, hi.nestLevel);
@@ -75,11 +74,11 @@ public class TestHamletImpl {
     verify(e).$class("class");
 
     H1 t = mock(H1.class);
-    HamletImpl.setSelector(t, "#id.class")._("heading");
+    HamletImpl.setSelector(t, "#id.class").__("heading");
 
     verify(t).$id("id");
     verify(t).$class("class");
-    verify(t)._("heading");
+    verify(t).__("heading");
   }
 
   @Test public void testSetLinkHref() {
@@ -105,4 +104,4 @@ public class TestHamletImpl {
 
     verifyNoMoreInteractions(script);
   }
-}
+}

+ 57 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/webapp/hamlet2/TestParseSelector.java

@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.webapp.hamlet2;
+
+import org.junit.Test;
+
+import static org.apache.hadoop.yarn.webapp.hamlet2.HamletImpl.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import org.apache.hadoop.yarn.webapp.WebAppException;
+
+public class TestParseSelector {
+
+  @Test public void testNormal() {
+    String[] res = parseSelector("#id.class");
+    assertEquals("id", res[S_ID]);
+    assertEquals("class", res[S_CLASS]);
+  }
+
+  @Test public void testMultiClass() {
+    String[] res = parseSelector("#id.class1.class2");
+    assertEquals("id", res[S_ID]);
+    assertEquals("class1 class2", res[S_CLASS]);
+  }
+
+  @Test public void testMissingId() {
+    String[] res = parseSelector(".class");
+    assertNull(res[S_ID]);
+    assertEquals("class", res[S_CLASS]);
+  }
+
+  @Test public void testMissingClass() {
+    String[] res = parseSelector("#id");
+    assertEquals("id", res[S_ID]);
+    assertNull(res[S_CLASS]);
+  }
+
+  @Test(expected=WebAppException.class) public void testMissingAll() {
+    parseSelector("");
+  }
+}