All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.hadoop.yarn.webapp.hamlet2.Hamlet Maven / Gradle / Ivy

There is a newer version: 3.4.0
Show newest version
/**
* 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 org.apache.hadoop.shaded.com.liance
* with the License.  You may obtain a copy of the License at
*
*     http://www.apache.org.apache.hadoop.shaded.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.shaded.org.apache.hadoop.yarn.webapp.hamlet2;
import static java.util.EnumSet.of;
import static org.apache.hadoop.shaded.org.apache.hadoop.yarn.webapp.hamlet2.HamletImpl.EOpt.ENDTAG;
import static org.apache.hadoop.shaded.org.apache.hadoop.yarn.webapp.hamlet2.HamletImpl.EOpt.INLINE;
import static org.apache.hadoop.shaded.org.apache.hadoop.yarn.webapp.hamlet2.HamletImpl.EOpt.PRE;

import java.org.apache.hadoop.shaded.io.PrintWriter;
import java.util.EnumSet;

import org.apache.hadoop.shaded.org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.shaded.org.apache.hadoop.yarn.webapp.SubView;

@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 opt(boolean endTag, boolean inline, boolean pre) {
    EnumSet opts = of(ENDTAG);
    if (!endTag) opts.remove(ENDTAG);
    if (inline) opts.add(INLINE);
    if (pre) opts.add(PRE);
    return opts;
  }

  public class HTML extends EImp implements HamletSpec.HTML {
    public HTML(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public HTML $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public HTML $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public HEAD> head() {
      closeAttrs();
      return head_(this, false);
    }

    @Override
    public BODY> body() {
      closeAttrs();
      return body_(this, false);
    }

    @Override
    public BODY> body(String selector) {
      return setSelector(body(), selector);
    }

    @Override
    public BASE> base() {
      closeAttrs();
      return base_(this, false);
    }

    @Override
    public HTML base(String href) {
      return base().$href(href).__();
    }

    @Override
    public TITLE> title() {
      closeAttrs();
      return title_(this, false);
    }

    @Override
    public HTML title(String cdata) {
      return title().__(cdata).__();
    }

    @Override
    public STYLE> style() {
      closeAttrs();
      return style_(this, false);
    }

    @Override
    public HTML style(Object... lines) {
      return style().$type("text/css").__(lines).__();
    }

    @Override
    public LINK> link() {
      closeAttrs();
      return link_(this, false);
    }

    @Override
    public HTML link(String href) {
      return setLinkHref(link(), href).__();
    }

    @Override
    public META> meta() {
      closeAttrs();
      return meta_(this, false);
    }

    @Override
    public HTML meta(String name, String content) {
      return meta().$name(name).$content(content).__();
    }

    @Override
    public HTML meta_http(String header, String content) {
      return meta().$http_equiv(header).$content(content).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, false);
    }

    @Override
    public HTML script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public HTML address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public HTML __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public HTML hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public HTML h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public HTML h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public HTML h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public HTML h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public HTML h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public HTML h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public HTML h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public HTML h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public HTML h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public HTML h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public HTML h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public HTML h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FORM> form() {
      closeAttrs();
      return form_(this, false);
    }

    @Override
    public FORM> form(String selector) {
      return setSelector(form(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public HTML ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public HTML del(String cdata) {
      return del().__(cdata).__();
    }
  }

  private  HEAD head_(T e, boolean inline) {
    return new HEAD("head", e, opt(true, inline, false)); }

  private  BODY body_(T e, boolean inline) {
    return new BODY("body", e, opt(true, inline, false)); }

  public class SCRIPT extends EImp implements HamletSpec.SCRIPT {
    public SCRIPT(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public SCRIPT $type(String value) {
      addAttr("type", value);
      return this;
    }

    @Override
    public SCRIPT $src(String value) {
      addAttr("src", value);
      return this;
    }

    @Override
    public SCRIPT $charset(String value) {
      addAttr("charset", value);
      return this;
    }

    @Override
    public SCRIPT $defer(String value) {
      addAttr("defer", value);
      return this;
    }

    @Override
    public SCRIPT __(Object... lines) {
      _p(false, lines);
      return this;
    }
  }

  public class STYLE extends EImp implements HamletSpec.STYLE {
    public STYLE(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public STYLE $type(String value) {
      addAttr("type", value);
      return this;
    }

    @Override
    public STYLE $media(EnumSet value) {
      addMediaAttr("media", value);
      return this;
    }

    @Override
    public STYLE $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public STYLE $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public STYLE $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public STYLE __(Object... lines) {
      _p(false, lines);
      return this;
    }
  }

  public class META extends EImp implements HamletSpec.META {
    public META(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public META $http_equiv(String value) {
      addAttr("http-equiv", value);
      return this;
    }

    @Override
    public META $name(String value) {
      addAttr("name", value);
      return this;
    }

    @Override
    public META $content(String value) {
      addAttr("content", value);
      return this;
    }

    @Override
    public META $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public META $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }
  }

  public class BASE extends EImp implements HamletSpec.BASE {
    public BASE(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public BASE $href(String value) {
      addAttr("href", value);
      return this;
    }
  }

  public class TITLE extends EImp implements HamletSpec.TITLE {
    public TITLE(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public TITLE $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public TITLE $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public TITLE __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public TITLE _r(Object... lines) {
      _p(false, lines);
      return this;
    }
  }

  public class HEAD extends EImp implements HamletSpec.HEAD {
    public HEAD(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public HEAD $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public HEAD $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public BASE> base() {
      closeAttrs();
      return base_(this, false);
    }

    @Override
    public HEAD base(String href) {
      return base().$href(href).__();
    }

    @Override
    public TITLE> title() {
      closeAttrs();
      return title_(this, false);
    }

    @Override
    public HEAD title(String cdata) {
      return title().__(cdata).__();
    }

    @Override
    public STYLE> style() {
      closeAttrs();
      return style_(this, false);
    }

    @Override
    public HEAD style(Object... lines) {
      return style().$type("text/css").__(lines).__();
    }

    @Override
    public LINK> link() {
      closeAttrs();
      return link_(this, false);
    }

    @Override
    public HEAD link(String href) {
      return setLinkHref(link(), href).__();
    }

    @Override
    public META> meta() {
      closeAttrs();
      return meta_(this, false);
    }

    @Override
    public HEAD meta(String name, String content) {
      return meta().$name(name).$content(content).__();
    }

    @Override
    public HEAD meta_http(String header, String content) {
      return meta().$http_equiv(header).$content(content).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, false);
    }

    @Override
    public HEAD script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }
  }

  private  BASE base_(T e, boolean inline) {
    return new BASE("base", e, opt(false, inline, false)); }

  private  TITLE title_(T e, boolean inline) {
    return new TITLE("title", e, opt(true, inline, false)); }

  public class TD extends EImp implements HamletSpec.TD {
    public TD(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public TD $headers(String value) {
      addAttr("headers", value);
      return this;
    }

    @Override
    public TD $scope(Scope value) {
      addAttr("scope", value);
      return this;
    }

    @Override
    public TD $rowspan(int value) {
      addAttr("rowspan", value);
      return this;
    }

    @Override
    public TD $colspan(int value) {
      addAttr("colspan", value);
      return this;
    }

    @Override
    public TD $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public TD $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public TD $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public TD $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public TD $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public TD $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public TD $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public TD $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public TD $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public TD $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public TD $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public TD $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public TD $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public TD $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public TD $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public TD $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public TD address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public TD __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public TD hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public TD h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public TD h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public TD h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public TD h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public TD h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public TD h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public TD h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public TD h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public TD h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public TD h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public TD h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public TD h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FORM> form() {
      closeAttrs();
      return form_(this, false);
    }

    @Override
    public FORM> form(String selector) {
      return setSelector(form(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }

    @Override
    public TD __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public TD _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public TD b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public TD b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public TD i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public TD i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public TD small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public TD small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public TD em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public TD em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public TD strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public TD strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public TD dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public TD dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public TD code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public TD code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public TD samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public TD samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public TD kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public TD kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public TD var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public TD var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public TD cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public TD cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public TD abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public TD abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public TD a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public TD a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public TD img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public TD sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public TD sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public TD sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public TD sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public TD q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public TD q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public TD br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public TD bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public TD span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public TD span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public TD script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public TD ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public TD del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public TD label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public TD textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public TD button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class TH extends EImp implements HamletSpec.TH {
    public TH(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public TH $headers(String value) {
      addAttr("headers", value);
      return this;
    }

    @Override
    public TH $scope(Scope value) {
      addAttr("scope", value);
      return this;
    }

    @Override
    public TH $rowspan(int value) {
      addAttr("rowspan", value);
      return this;
    }

    @Override
    public TH $colspan(int value) {
      addAttr("colspan", value);
      return this;
    }

    @Override
    public TH $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public TH $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public TH $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public TH $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public TH $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public TH $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public TH $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public TH $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public TH $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public TH $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public TH $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public TH $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public TH $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public TH $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public TH $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public TH $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public TH address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public TH __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public TH hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public TH h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public TH h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public TH h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public TH h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public TH h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public TH h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public TH h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public TH h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public TH h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public TH h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public TH h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public TH h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FORM> form() {
      closeAttrs();
      return form_(this, false);
    }

    @Override
    public FORM> form(String selector) {
      return setSelector(form(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }

    @Override
    public TH __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public TH _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public TH b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public TH b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public TH i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public TH i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public TH small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public TH small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public TH em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public TH em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public TH strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public TH strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public TH dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public TH dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public TH code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public TH code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public TH samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public TH samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public TH kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public TH kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public TH var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public TH var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public TH cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public TH cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public TH abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public TH abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public TH a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public TH a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public TH img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public TH sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public TH sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public TH sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public TH sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public TH q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public TH q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public TH br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public TH bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public TH span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public TH span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public TH script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public TH ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public TH del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public TH label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public TH textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public TH button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class TR extends EImp implements HamletSpec.TR {
    public TR(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public TR $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public TR $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public TR $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public TR $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public TR $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public TR $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public TR $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public TR $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public TR $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public TR $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public TR $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public TR $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public TR $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public TR $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public TR $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public TR $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TH> th() {
      closeAttrs();
      return th_(this, false);
    }

    @Override
    public TR th(String cdata) {
      return th().__(cdata).__();
    }

    @Override
    public TR th(String selector, String cdata) {
      return setSelector(th(), selector).__(cdata).__();
    }

    public TR th(String selector, String title, String cdata) {
      return setSelector(th(), selector).$title(title).__(cdata).__();
    }

    @Override
    public TD> td() {
      closeAttrs();
      return td_(this, false);
    }

    @Override
    public TR td(String cdata) {
      return td().__(cdata).__();
    }

    @Override
    public TR td(String selector, String cdata) {
      return setSelector(td(), selector).__(cdata).__();
    }
  }

  private  TH th_(T e, boolean inline) {
    return new TH("th", e, opt(true, inline, false)); }

  private  TD td_(T e, boolean inline) {
    return new TD("td", e, opt(true, inline, false)); }

  public class COL extends EImp implements HamletSpec.COL {
    public COL(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public COL $span(int value) {
      addAttr("span", value);
      return this;
    }

    @Override
    public COL $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public COL $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public COL $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public COL $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public COL $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public COL $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public COL $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public COL $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public COL $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public COL $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public COL $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public COL $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public COL $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public COL $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public COL $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public COL $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }
  }

  public class COLGROUP extends EImp implements HamletSpec.COLGROUP {
    public COLGROUP(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public COLGROUP $span(int value) {
      addAttr("span", value);
      return this;
    }

    @Override
    public COLGROUP $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public COLGROUP $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public COLGROUP $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public COLGROUP $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public COLGROUP $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public COLGROUP $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public COLGROUP $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public COLGROUP $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public COLGROUP $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public COLGROUP $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public COLGROUP $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public COLGROUP $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public COLGROUP $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public COLGROUP $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public COLGROUP $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public COLGROUP $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public COL> col() {
      closeAttrs();
      return col_(this, false);
    }

    @Override
    public COLGROUP col(String selector) {
      return setSelector(col(), selector).__();
    }
  }

  public class TBODY extends EImp implements HamletSpec.TBODY {
    public TBODY(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public TBODY $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public TBODY $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public TBODY $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public TBODY $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public TBODY $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public TBODY $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public TBODY $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public TBODY $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public TBODY $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public TBODY $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public TBODY $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public TBODY $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public TBODY $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public TBODY $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public TBODY $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public TBODY $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TR> tr() {
      closeAttrs();
      return tr_(this, false);
    }

    @Override
    public TR> tr(String selector) {
      return setSelector(tr(), selector);
    }
  }

  public class TFOOT extends EImp implements HamletSpec.TFOOT {
    public TFOOT(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public TFOOT $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public TFOOT $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public TFOOT $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public TFOOT $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public TFOOT $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public TFOOT $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public TFOOT $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public TFOOT $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public TFOOT $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public TFOOT $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public TFOOT $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public TFOOT $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public TFOOT $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public TFOOT $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public TFOOT $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public TFOOT $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TR> tr() {
      closeAttrs();
      return tr_(this, false);
    }

    @Override
    public TR> tr(String selector) {
      return setSelector(tr(), selector);
    }
  }

  public class THEAD extends EImp implements HamletSpec.THEAD {
    public THEAD(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public THEAD $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public THEAD $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public THEAD $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public THEAD $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public THEAD $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public THEAD $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public THEAD $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public THEAD $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public THEAD $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public THEAD $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public THEAD $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public THEAD $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public THEAD $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public THEAD $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public THEAD $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public THEAD $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TR> tr() {
      closeAttrs();
      return tr_(this, false);
    }

    @Override
    public TR> tr(String selector) {
      return setSelector(tr(), selector);
    }
  }

  public class CAPTION extends EImp implements HamletSpec.CAPTION {
    public CAPTION(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public CAPTION $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public CAPTION $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public CAPTION $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public CAPTION $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public CAPTION $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public CAPTION $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public CAPTION $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public CAPTION $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public CAPTION $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public CAPTION $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public CAPTION $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public CAPTION $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public CAPTION $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public CAPTION $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public CAPTION $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public CAPTION $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public CAPTION __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public CAPTION _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public CAPTION b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public CAPTION b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public CAPTION i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public CAPTION i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public CAPTION small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public CAPTION small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public CAPTION em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public CAPTION em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public CAPTION strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public CAPTION strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public CAPTION dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public CAPTION dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public CAPTION code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public CAPTION code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public CAPTION samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public CAPTION samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public CAPTION kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public CAPTION kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public CAPTION var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public CAPTION var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public CAPTION cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public CAPTION cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public CAPTION abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public CAPTION abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public CAPTION a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public CAPTION a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public CAPTION img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public CAPTION sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public CAPTION sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public CAPTION sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public CAPTION sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public CAPTION q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public CAPTION q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public CAPTION br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public CAPTION bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public CAPTION span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public CAPTION span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public CAPTION script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public CAPTION ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public CAPTION del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public CAPTION label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public CAPTION textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public CAPTION button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class TABLE extends EImp implements HamletSpec.TABLE {
    public TABLE(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public TABLE $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public TABLE $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public TABLE $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public TABLE $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public TABLE $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public TABLE $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public TABLE $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public TABLE $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public TABLE $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public TABLE $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public TABLE $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public TABLE $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public TABLE $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public TABLE $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public TABLE $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public TABLE $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TABLE caption(String cdata) {
      return caption().__(cdata).__();
    }

    @Override
    public CAPTION> caption() {
      closeAttrs();
      return caption_(this, false);
    }

    @Override
    public COLGROUP> colgroup() {
      closeAttrs();
      return colgroup_(this, false);
    }

    @Override
    public THEAD> thead(String selector) {
      return setSelector(thead(), selector);
    }

    @Override
    public THEAD> thead() {
      closeAttrs();
      return thead_(this, false);
    }

    @Override
    public TFOOT> tfoot() {
      closeAttrs();
      return tfoot_(this, false);
    }

    @Override
    public TFOOT> tfoot(String selector) {
      return setSelector(tfoot(), selector);
    }

    @Override
    public TBODY> tbody() {
      closeAttrs();
      return tbody_(this, false);
    }

    @Override
    public TBODY> tbody(String selector) {
      return setSelector(tbody(), selector);
    }

    @Override
    public TR> tr() {
      closeAttrs();
      return tr_(this, false);
    }

    @Override
    public TR> tr(String selector) {
      return setSelector(tr(), selector);
    }

    @Override
    public COL> col() {
      closeAttrs();
      return col_(this, false);
    }

    @Override
    public TABLE col(String selector) {
      return setSelector(col(), selector).__();
    }
  }

  private  CAPTION caption_(T e, boolean inline) {
    return new CAPTION("caption", e, opt(true, inline, false)); }

  private  COLGROUP colgroup_(T e, boolean inline) {
    return new COLGROUP("colgroup", e, opt(false, inline, false)); }

  private  THEAD thead_(T e, boolean inline) {
    return new THEAD("thead", e, opt(true, inline, false)); }

  private  TFOOT tfoot_(T e, boolean inline) {
    return new TFOOT("tfoot", e, opt(true, inline, false)); }

  private  TBODY tbody_(T e, boolean inline) {
    return new TBODY("tbody", e, opt(true, inline, false)); }

  private  COL col_(T e, boolean inline) {
    return new COL("col", e, opt(false, inline, false)); }

  private  TR tr_(T e, boolean inline) {
    return new TR("tr", e, opt(true, inline, false)); }

  public class BUTTON extends EImp implements HamletSpec.BUTTON {
    public BUTTON(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public BUTTON $type(ButtonType value) {
      addAttr("type", value);
      return this;
    }

    @Override
    public BUTTON $name(String value) {
      addAttr("name", value);
      return this;
    }

    @Override
    public BUTTON $value(String value) {
      addAttr("value", value);
      return this;
    }

    @Override
    public BUTTON $disabled() {
      addAttr("disabled", null);
      return this;
    }

    @Override
    public BUTTON $tabindex(int value) {
      addAttr("tabindex", value);
      return this;
    }

    @Override
    public BUTTON $accesskey(String value) {
      addAttr("accesskey", value);
      return this;
    }

    @Override
    public BUTTON $onfocus(String value) {
      addAttr("onfocus", value);
      return this;
    }

    @Override
    public BUTTON $onblur(String value) {
      addAttr("onblur", value);
      return this;
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public BUTTON address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public BUTTON __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public BUTTON hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BUTTON h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public BUTTON h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public BUTTON h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public BUTTON h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public BUTTON h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public BUTTON h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public BUTTON h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public BUTTON h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public BUTTON h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public BUTTON h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public BUTTON h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public BUTTON h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public BUTTON __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public BUTTON _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public BUTTON b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public BUTTON b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public BUTTON i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public BUTTON i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public BUTTON small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public BUTTON small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public BUTTON em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public BUTTON em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public BUTTON strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public BUTTON strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public BUTTON dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public BUTTON dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public BUTTON code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public BUTTON code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public BUTTON samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public BUTTON samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public BUTTON kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public BUTTON kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public BUTTON var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public BUTTON var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public BUTTON cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public BUTTON cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public BUTTON abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public BUTTON abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public BUTTON q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public BUTTON q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public BUTTON br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public BUTTON bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public BUTTON span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public BUTTON span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public BUTTON script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public BUTTON ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public BUTTON del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public BUTTON img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public BUTTON sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public BUTTON sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public BUTTON sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public BUTTON sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public BUTTON $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public BUTTON $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public BUTTON $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public BUTTON $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public BUTTON $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public BUTTON $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public BUTTON $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public BUTTON $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public BUTTON $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public BUTTON $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public BUTTON $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public BUTTON $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public BUTTON $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public BUTTON $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public BUTTON $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public BUTTON $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }
  }

  public class LEGEND extends EImp implements HamletSpec.LEGEND {
    public LEGEND(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public LEGEND $accesskey(String value) {
      addAttr("accesskey", value);
      return this;
    }

    @Override
    public LEGEND $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public LEGEND $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public LEGEND $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public LEGEND $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public LEGEND $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public LEGEND $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public LEGEND $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public LEGEND $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public LEGEND $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public LEGEND $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public LEGEND $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public LEGEND $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public LEGEND $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public LEGEND $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public LEGEND $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public LEGEND $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public LEGEND __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public LEGEND _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public LEGEND b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public LEGEND b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public LEGEND i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public LEGEND i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public LEGEND small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public LEGEND small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public LEGEND em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public LEGEND em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public LEGEND strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public LEGEND strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public LEGEND dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public LEGEND dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public LEGEND code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public LEGEND code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public LEGEND samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public LEGEND samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public LEGEND kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public LEGEND kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public LEGEND var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public LEGEND var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public LEGEND cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public LEGEND cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public LEGEND abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public LEGEND abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public LEGEND a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public LEGEND a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public LEGEND img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public LEGEND sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public LEGEND sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public LEGEND sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public LEGEND sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public LEGEND q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public LEGEND q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public LEGEND br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public LEGEND bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public LEGEND span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public LEGEND span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public LEGEND script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public LEGEND ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public LEGEND del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public LEGEND label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public LEGEND textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public LEGEND button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class FIELDSET extends EImp implements HamletSpec.FIELDSET {
    public FIELDSET(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public FIELDSET $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public FIELDSET $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public FIELDSET $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public FIELDSET $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public FIELDSET $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public FIELDSET $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public FIELDSET $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public FIELDSET $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public FIELDSET $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public FIELDSET $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public FIELDSET $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public FIELDSET $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public FIELDSET $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public FIELDSET $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public FIELDSET $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public FIELDSET $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public LEGEND> legend() {
      closeAttrs();
      return legend_(this, false);
    }

    @Override
    public FIELDSET legend(String cdata) {
      return legend().__(cdata).__();
    }

    @Override
    public FIELDSET __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public FIELDSET _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public FIELDSET address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public FIELDSET __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public FIELDSET hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public FIELDSET h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public FIELDSET h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public FIELDSET h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public FIELDSET h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public FIELDSET h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public FIELDSET h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public FIELDSET h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public FIELDSET h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public FIELDSET h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public FIELDSET h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public FIELDSET h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public FIELDSET h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FORM> form() {
      closeAttrs();
      return form_(this, false);
    }

    @Override
    public FORM> form(String selector) {
      return setSelector(form(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public FIELDSET b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public FIELDSET b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public FIELDSET i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public FIELDSET i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public FIELDSET small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public FIELDSET small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public FIELDSET em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public FIELDSET em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public FIELDSET strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public FIELDSET strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public FIELDSET dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public FIELDSET dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public FIELDSET code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public FIELDSET code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public FIELDSET samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public FIELDSET samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public FIELDSET kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public FIELDSET kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public FIELDSET var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public FIELDSET var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public FIELDSET cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public FIELDSET cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public FIELDSET abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public FIELDSET abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public FIELDSET a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public FIELDSET a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public FIELDSET img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public FIELDSET sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public FIELDSET sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public FIELDSET sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public FIELDSET sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public FIELDSET q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public FIELDSET q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public FIELDSET br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public FIELDSET bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public FIELDSET span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public FIELDSET span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public FIELDSET script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public FIELDSET ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public FIELDSET del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public FIELDSET label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public FIELDSET textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public FIELDSET button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  private  LEGEND legend_(T e, boolean inline) {
    return new LEGEND("legend", e, opt(true, inline, false)); }

  public class TEXTAREA extends EImp implements HamletSpec.TEXTAREA {
    public TEXTAREA(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public TEXTAREA $name(String value) {
      addAttr("name", value);
      return this;
    }

    @Override
    public TEXTAREA $disabled() {
      addAttr("disabled", null);
      return this;
    }

    @Override
    public TEXTAREA $tabindex(int value) {
      addAttr("tabindex", value);
      return this;
    }

    @Override
    public TEXTAREA $accesskey(String value) {
      addAttr("accesskey", value);
      return this;
    }

    @Override
    public TEXTAREA $onfocus(String value) {
      addAttr("onfocus", value);
      return this;
    }

    @Override
    public TEXTAREA $onblur(String value) {
      addAttr("onblur", value);
      return this;
    }

    @Override
    public TEXTAREA $rows(int value) {
      addAttr("rows", value);
      return this;
    }

    @Override
    public TEXTAREA $cols(int value) {
      addAttr("cols", value);
      return this;
    }

    @Override
    public TEXTAREA $readonly() {
      addAttr("readonly", null);
      return this;
    }

    @Override
    public TEXTAREA $onselect(String value) {
      addAttr("onselect", value);
      return this;
    }

    @Override
    public TEXTAREA $onchange(String value) {
      addAttr("onchange", value);
      return this;
    }

    @Override
    public TEXTAREA $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public TEXTAREA $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public TEXTAREA $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public TEXTAREA $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public TEXTAREA $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public TEXTAREA $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public TEXTAREA $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public TEXTAREA $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public TEXTAREA $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public TEXTAREA $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public TEXTAREA $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public TEXTAREA $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public TEXTAREA $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public TEXTAREA $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public TEXTAREA $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public TEXTAREA $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TEXTAREA __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public TEXTAREA _r(Object... lines) {
      _p(false, lines);
      return this;
    }
  }

  public class OPTION extends EImp implements HamletSpec.OPTION {
    public OPTION(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public OPTION $value(String value) {
      addAttr("value", value);
      return this;
    }

    @Override
    public OPTION $disabled() {
      addAttr("disabled", null);
      return this;
    }

    @Override
    public OPTION $selected() {
      addAttr("selected", null);
      return this;
    }

    @Override
    public OPTION $label(String value) {
      addAttr("label", value);
      return this;
    }

    @Override
    public OPTION $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public OPTION $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public OPTION $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public OPTION $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public OPTION $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public OPTION $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public OPTION $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public OPTION $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public OPTION $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public OPTION $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public OPTION $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public OPTION $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public OPTION $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public OPTION $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public OPTION $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public OPTION $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public OPTION __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public OPTION _r(Object... lines) {
      _p(false, lines);
      return this;
    }
  }

  public class OPTGROUP extends EImp implements HamletSpec.OPTGROUP {
    public OPTGROUP(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public OPTGROUP $disabled() {
      addAttr("disabled", null);
      return this;
    }

    @Override
    public OPTGROUP $label(String value) {
      addAttr("label", value);
      return this;
    }

    @Override
    public OPTGROUP $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public OPTGROUP $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public OPTGROUP $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public OPTGROUP $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public OPTGROUP $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public OPTGROUP $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public OPTGROUP $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public OPTGROUP $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public OPTGROUP $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public OPTGROUP $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public OPTGROUP $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public OPTGROUP $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public OPTGROUP $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public OPTGROUP $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public OPTGROUP $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public OPTGROUP $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public OPTION> option() {
      closeAttrs();
      return option_(this, false);
    }

    @Override
    public OPTGROUP option(String cdata) {
      return option().__(cdata).__();
    }
  }

  private  OPTGROUP optgroup_(T e, boolean inline) {
    return new OPTGROUP("optgroup", e, opt(true, inline, false)); }

  public class SELECT extends EImp implements HamletSpec.SELECT {
    public SELECT(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public SELECT $name(String value) {
      addAttr("name", value);
      return this;
    }

    @Override
    public SELECT $disabled() {
      addAttr("disabled", null);
      return this;
    }

    @Override
    public SELECT $tabindex(int value) {
      addAttr("tabindex", value);
      return this;
    }

    @Override
    public SELECT $onfocus(String value) {
      addAttr("onfocus", value);
      return this;
    }

    @Override
    public SELECT $onblur(String value) {
      addAttr("onblur", value);
      return this;
    }

    @Override
    public SELECT $onchange(String value) {
      addAttr("onchange", value);
      return this;
    }

    @Override
    public OPTGROUP> optgroup() {
      closeAttrs();
      return optgroup_(this, false);
    }

    @Override
    public SELECT $size(int value) {
      addAttr("size", value);
      return this;
    }

    @Override
    public SELECT $multiple() {
      addAttr("multiple", null);
      return this;
    }

    @Override
    public SELECT $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public SELECT $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public SELECT $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public SELECT $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public SELECT $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public SELECT $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public SELECT $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public SELECT $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public SELECT $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public SELECT $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public SELECT $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public SELECT $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public SELECT $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public SELECT $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public SELECT $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public SELECT $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public OPTION> option() {
      closeAttrs();
      return option_(this, false);
    }

    @Override
    public SELECT option(String cdata) {
      return option().__(cdata).__();
    }
  }

  private  OPTION option_(T e, boolean inline) {
    return new OPTION("option", e, opt(false, inline, false)); }

  public class INPUT extends EImp implements HamletSpec.INPUT {
    public INPUT(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public INPUT $type(InputType value) {
      addAttr("type", value);
      return this;
    }

    @Override
    public INPUT $src(String value) {
      addAttr("src", value);
      return this;
    }

    @Override
    public INPUT $name(String value) {
      addAttr("name", value);
      return this;
    }

    @Override
    public INPUT $value(String value) {
      addAttr("value", value);
      return this;
    }

    @Override
    public INPUT $disabled() {
      addAttr("disabled", null);
      return this;
    }

    @Override
    public INPUT $tabindex(int value) {
      addAttr("tabindex", value);
      return this;
    }

    @Override
    public INPUT $accesskey(String value) {
      addAttr("accesskey", value);
      return this;
    }

    @Override
    public INPUT $onfocus(String value) {
      addAttr("onfocus", value);
      return this;
    }

    @Override
    public INPUT $onblur(String value) {
      addAttr("onblur", value);
      return this;
    }

    @Override
    public INPUT $readonly() {
      addAttr("readonly", null);
      return this;
    }

    @Override
    public INPUT $onselect(String value) {
      addAttr("onselect", value);
      return this;
    }

    @Override
    public INPUT $onchange(String value) {
      addAttr("onchange", value);
      return this;
    }

    @Override
    public INPUT $size(String value) {
      addAttr("size", value);
      return this;
    }

    @Override
    public INPUT $checked() {
      addAttr("checked", null);
      return this;
    }

    @Override
    public INPUT $maxlength(int value) {
      addAttr("maxlength", value);
      return this;
    }

    @Override
    public INPUT $alt(String value) {
      addAttr("alt", value);
      return this;
    }

    @Override
    public INPUT $ismap() {
      addAttr("ismap", null);
      return this;
    }

    @Override
    public INPUT $accept(String value) {
      addAttr("accept", value);
      return this;
    }

    @Override
    public INPUT $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public INPUT $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public INPUT $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public INPUT $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public INPUT $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public INPUT $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public INPUT $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public INPUT $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public INPUT $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public INPUT $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public INPUT $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public INPUT $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public INPUT $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public INPUT $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public INPUT $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public INPUT $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }
  }

  public class LABEL extends EImp implements HamletSpec.LABEL {
    public LABEL(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public LABEL $accesskey(String value) {
      addAttr("accesskey", value);
      return this;
    }

    @Override
    public LABEL $onfocus(String value) {
      addAttr("onfocus", value);
      return this;
    }

    @Override
    public LABEL $onblur(String value) {
      addAttr("onblur", value);
      return this;
    }

    @Override
    public LABEL $for(String value) {
      addAttr("for", value);
      return this;
    }

    @Override
    public LABEL $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public LABEL $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public LABEL $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public LABEL $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public LABEL $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public LABEL $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public LABEL $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public LABEL $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public LABEL $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public LABEL $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public LABEL $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public LABEL $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public LABEL $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public LABEL $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public LABEL $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public LABEL $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public LABEL __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public LABEL _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public LABEL b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public LABEL b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public LABEL i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public LABEL i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public LABEL small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public LABEL small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public LABEL em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public LABEL em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public LABEL strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public LABEL strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public LABEL dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public LABEL dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public LABEL code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public LABEL code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public LABEL samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public LABEL samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public LABEL kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public LABEL kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public LABEL var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public LABEL var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public LABEL cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public LABEL cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public LABEL abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public LABEL abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public LABEL a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public LABEL a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public LABEL img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public LABEL sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public LABEL sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public LABEL sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public LABEL sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public LABEL q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public LABEL q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public LABEL br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public LABEL bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public LABEL span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public LABEL span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public LABEL script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public LABEL ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public LABEL del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public LABEL textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public LABEL button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class FORM extends EImp implements HamletSpec.FORM {
    public FORM(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public FORM $name(String value) {
      addAttr("name", value);
      return this;
    }

    @Override
    public FORM $accept(String value) {
      addAttr("accept", value);
      return this;
    }

    @Override
    public FORM $action(String value) {
      addAttr("action", value);
      return this;
    }

    @Override
    public FORM $method(Method value) {
      addAttr("method", value);
      return this;
    }

    @Override
    public FORM $enctype(String value) {
      addAttr("enctype", value);
      return this;
    }

    @Override
    public FORM $onsubmit(String value) {
      addAttr("onsubmit", value);
      return this;
    }

    @Override
    public FORM $onreset(String value) {
      addAttr("onreset", value);
      return this;
    }

    @Override
    public FORM $accept_charset(String value) {
      addAttr("accept-charset", value);
      return this;
    }

    @Override
    public FORM $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public FORM $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public FORM $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public FORM $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public FORM $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public FORM $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public FORM $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public FORM $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public FORM $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public FORM $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public FORM $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public FORM $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public FORM $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public FORM $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public FORM $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public FORM $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public FORM script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public FORM address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public FORM __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public FORM hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public FORM h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public FORM h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public FORM h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public FORM h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public FORM h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public FORM h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public FORM h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public FORM h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public FORM h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public FORM h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public FORM h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public FORM h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }
  }

  public class LI extends EImp implements HamletSpec.LI {
    public LI(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public LI $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public LI $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public LI $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public LI $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public LI $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public LI $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public LI $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public LI $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public LI $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public LI $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public LI $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public LI $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public LI $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public LI $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public LI $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public LI $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public LI address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public LI __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public LI hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public LI h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public LI h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public LI h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public LI h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public LI h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public LI h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public LI h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public LI h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public LI h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public LI h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public LI h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public LI h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FORM> form() {
      closeAttrs();
      return form_(this, false);
    }

    @Override
    public FORM> form(String selector) {
      return setSelector(form(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }

    @Override
    public LI __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public LI _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public LI b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public LI b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public LI i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public LI i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public LI small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public LI small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public LI em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public LI em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public LI strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public LI strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public LI dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public LI dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public LI code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public LI code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public LI samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public LI samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public LI kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public LI kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public LI var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public LI var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public LI cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public LI cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public LI abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public LI abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public LI a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public LI a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public LI img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public LI sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public LI sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public LI sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public LI sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public LI q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public LI q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public LI br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public LI bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public LI span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public LI span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public LI script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public LI ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public LI del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public LI label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public LI textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public LI button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class UL extends EImp implements HamletSpec.UL {
    public UL(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public UL $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public UL $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public UL $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public UL $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public UL $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public UL $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public UL $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public UL $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public UL $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public UL $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public UL $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public UL $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public UL $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public UL $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public UL $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public UL $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public LI> li() {
      closeAttrs();
      return li_(this, false);
    }

    @Override
    public UL li(String cdata) {
      return li().__(cdata).__();
    }
  }

  public class OL extends EImp implements HamletSpec.OL {
    public OL(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public OL $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public OL $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public OL $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public OL $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public OL $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public OL $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public OL $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public OL $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public OL $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public OL $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public OL $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public OL $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public OL $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public OL $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public OL $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public OL $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public LI> li() {
      closeAttrs();
      return li_(this, false);
    }

    @Override
    public OL li(String cdata) {
      return li().__(cdata).__();
    }
  }

  private  LI li_(T e, boolean inline) {
    return new LI("li", e, opt(false, inline, false)); }

  public class DD extends EImp implements HamletSpec.DD {
    public DD(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public DD $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public DD $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public DD $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public DD $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public DD $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public DD $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public DD $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public DD $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public DD $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public DD $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public DD $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public DD $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public DD $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public DD $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public DD $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public DD $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public DD address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public DD __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public DD hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public DD h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public DD h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public DD h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public DD h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public DD h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public DD h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public DD h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public DD h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public DD h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public DD h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public DD h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public DD h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FORM> form() {
      closeAttrs();
      return form_(this, false);
    }

    @Override
    public FORM> form(String selector) {
      return setSelector(form(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }

    @Override
    public DD __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public DD _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public DD b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public DD b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public DD i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public DD i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public DD small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public DD small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public DD em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public DD em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public DD strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public DD strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public DD dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public DD dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public DD code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public DD code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public DD samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public DD samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public DD kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public DD kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public DD var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public DD var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public DD cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public DD cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public DD abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public DD abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public DD a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public DD a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public DD img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public DD sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public DD sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public DD sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public DD sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public DD q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public DD q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public DD br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public DD bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public DD span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public DD span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public DD script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public DD ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public DD del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public DD label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public DD textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public DD button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class DT extends EImp implements HamletSpec.DT {
    public DT(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public DT $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public DT $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public DT $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public DT $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public DT $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public DT $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public DT $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public DT $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public DT $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public DT $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public DT $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public DT $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public DT $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public DT $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public DT $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public DT $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public DT __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public DT _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public DT b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public DT b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public DT i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public DT i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public DT small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public DT small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public DT em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public DT em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public DT strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public DT strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public DT dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public DT dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public DT code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public DT code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public DT samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public DT samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public DT kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public DT kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public DT var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public DT var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public DT cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public DT cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public DT abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public DT abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public DT a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public DT a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public DT img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public DT sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public DT sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public DT sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public DT sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public DT q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public DT q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public DT br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public DT bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public DT span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public DT span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public DT script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public DT ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public DT del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public DT label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public DT textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public DT button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class DL extends EImp implements HamletSpec.DL {
    public DL(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public DL $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public DL $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public DL $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public DL $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public DL $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public DL $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public DL $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public DL $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public DL $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public DL $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public DL $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public DL $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public DL $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public DL $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public DL $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public DL $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public DT> dt() {
      closeAttrs();
      return dt_(this, false);
    }

    @Override
    public DL dt(String cdata) {
      return dt().__(cdata).__();
    }

    @Override
    public DD> dd() {
      closeAttrs();
      return dd_(this, false);
    }

    @Override
    public DL dd(String cdata) {
      return dd().__(cdata).__();
    }
  }

  private  DT dt_(T e, boolean inline) {
    return new DT("dt", e, opt(false, inline, false)); }

  private  DD dd_(T e, boolean inline) {
    return new DD("dd", e, opt(false, inline, false)); }

  public class DEL extends EImp implements HamletSpec.DEL {
    public DEL(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public DEL $cite(String value) {
      addAttr("cite", value);
      return this;
    }

    @Override
    public DEL $datetime(String value) {
      addAttr("datetime", value);
      return this;
    }

    @Override
    public DEL $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public DEL $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public DEL $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public DEL $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public DEL $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public DEL $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public DEL $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public DEL $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public DEL $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public DEL $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public DEL $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public DEL $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public DEL $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public DEL $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public DEL $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public DEL $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public DEL address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public DEL __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public DEL hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public DEL h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public DEL h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public DEL h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public DEL h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public DEL h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public DEL h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public DEL h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public DEL h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public DEL h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public DEL h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public DEL h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public DEL h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FORM> form() {
      closeAttrs();
      return form_(this, false);
    }

    @Override
    public FORM> form(String selector) {
      return setSelector(form(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }

    @Override
    public DEL __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public DEL _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public DEL b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public DEL b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public DEL i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public DEL i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public DEL small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public DEL small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public DEL em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public DEL em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public DEL strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public DEL strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public DEL dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public DEL dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public DEL code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public DEL code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public DEL samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public DEL samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public DEL kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public DEL kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public DEL var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public DEL var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public DEL cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public DEL cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public DEL abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public DEL abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public DEL a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public DEL a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public DEL img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public DEL sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public DEL sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public DEL sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public DEL sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public DEL q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public DEL q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public DEL br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public DEL bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public DEL span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public DEL span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public DEL script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public DEL ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public DEL del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public DEL label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public DEL textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public DEL button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class INS extends EImp implements HamletSpec.INS {
    public INS(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public INS $cite(String value) {
      addAttr("cite", value);
      return this;
    }

    @Override
    public INS $datetime(String value) {
      addAttr("datetime", value);
      return this;
    }

    @Override
    public INS $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public INS $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public INS $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public INS $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public INS $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public INS $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public INS $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public INS $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public INS $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public INS $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public INS $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public INS $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public INS $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public INS $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public INS $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public INS $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public INS address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public INS __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public INS hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public INS h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public INS h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public INS h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public INS h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public INS h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public INS h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public INS h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public INS h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public INS h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public INS h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public INS h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public INS h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FORM> form() {
      closeAttrs();
      return form_(this, false);
    }

    @Override
    public FORM> form(String selector) {
      return setSelector(form(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }

    @Override
    public INS __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public INS _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public INS b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public INS b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public INS i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public INS i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public INS small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public INS small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public INS em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public INS em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public INS strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public INS strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public INS dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public INS dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public INS code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public INS code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public INS samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public INS samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public INS kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public INS kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public INS var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public INS var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public INS cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public INS cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public INS abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public INS abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public INS a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public INS a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public INS img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public INS sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public INS sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public INS sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public INS sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public INS q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public INS q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public INS br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public INS bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public INS span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public INS span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public INS script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public INS ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public INS del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public INS label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public INS textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public INS button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class BLOCKQUOTE extends EImp implements HamletSpec.BLOCKQUOTE {
    public BLOCKQUOTE(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public BLOCKQUOTE $cite(String value) {
      addAttr("cite", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public BLOCKQUOTE $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public BLOCKQUOTE address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public BLOCKQUOTE __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public BLOCKQUOTE hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public BLOCKQUOTE h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public BLOCKQUOTE h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public BLOCKQUOTE h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public BLOCKQUOTE h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public BLOCKQUOTE h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public BLOCKQUOTE h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public BLOCKQUOTE h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public BLOCKQUOTE h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public BLOCKQUOTE h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public BLOCKQUOTE h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public BLOCKQUOTE h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FORM> form() {
      closeAttrs();
      return form_(this, false);
    }

    @Override
    public FORM> form(String selector) {
      return setSelector(form(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public BLOCKQUOTE script(String src) {
      return setScriptSrc(script(), src).__();
    }
  }

  public class Q extends EImp implements HamletSpec.Q {
    public Q(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public Q $cite(String value) {
      addAttr("cite", value);
      return this;
    }

    @Override
    public Q $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public Q $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public Q $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public Q $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public Q $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public Q $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public Q $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public Q $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public Q $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public Q $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public Q $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public Q $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public Q $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public Q $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public Q $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public Q $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public Q __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public Q _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public Q b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public Q b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public Q i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public Q i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public Q small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public Q small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public Q em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public Q em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public Q strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public Q strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public Q dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public Q dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public Q code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public Q code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public Q samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public Q samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public Q kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public Q kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public Q var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public Q var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public Q cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public Q cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public Q abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public Q abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public Q a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public Q a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public Q img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public Q sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public Q sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public Q sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public Q sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public Q q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public Q q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public Q br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public Q bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public Q span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public Q span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public Q script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public Q ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public Q del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public Q label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public Q textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public Q button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class PRE extends EImp implements HamletSpec.PRE {
    public PRE(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public PRE $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public PRE $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public PRE $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public PRE $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public PRE $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public PRE $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public PRE $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public PRE $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public PRE $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public PRE $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public PRE $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public PRE $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public PRE $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public PRE $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public PRE $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public PRE $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public PRE __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public PRE _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public PRE b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public PRE b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public PRE i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public PRE i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public PRE em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public PRE em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public PRE strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public PRE strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public PRE dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public PRE dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public PRE code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public PRE code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public PRE samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public PRE samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public PRE kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public PRE kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public PRE var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public PRE var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public PRE cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public PRE cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public PRE abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public PRE abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public PRE a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public PRE a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public PRE q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public PRE q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public PRE br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public PRE bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public PRE span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public PRE span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public PRE script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public PRE ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public PRE del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public PRE label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public PRE textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public PRE button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class H6 extends EImp implements HamletSpec.H6 {
    public H6(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public H6 $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public H6 $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public H6 $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public H6 $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public H6 $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public H6 $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public H6 $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public H6 $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public H6 $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public H6 $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public H6 $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public H6 $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public H6 $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public H6 $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public H6 $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public H6 $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public H6 __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public H6 _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public H6 b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public H6 b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public H6 i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public H6 i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public H6 small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public H6 small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public H6 em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public H6 em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public H6 strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public H6 strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public H6 dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public H6 dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public H6 code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public H6 code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public H6 samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public H6 samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public H6 kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public H6 kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public H6 var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public H6 var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public H6 cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public H6 cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public H6 abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public H6 abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public H6 a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public H6 a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public H6 img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public H6 sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public H6 sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public H6 sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public H6 sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public H6 q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public H6 q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public H6 br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public H6 bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public H6 span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public H6 span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public H6 script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public H6 ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public H6 del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public H6 label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public H6 textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public H6 button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class H5 extends EImp implements HamletSpec.H5 {
    public H5(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public H5 $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public H5 $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public H5 $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public H5 $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public H5 $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public H5 $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public H5 $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public H5 $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public H5 $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public H5 $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public H5 $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public H5 $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public H5 $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public H5 $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public H5 $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public H5 $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public H5 __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public H5 _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public H5 b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public H5 b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public H5 i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public H5 i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public H5 small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public H5 small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public H5 em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public H5 em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public H5 strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public H5 strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public H5 dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public H5 dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public H5 code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public H5 code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public H5 samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public H5 samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public H5 kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public H5 kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public H5 var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public H5 var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public H5 cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public H5 cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public H5 abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public H5 abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public H5 a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public H5 a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public H5 img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public H5 sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public H5 sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public H5 sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public H5 sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public H5 q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public H5 q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public H5 br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public H5 bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public H5 span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public H5 span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public H5 script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public H5 ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public H5 del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public H5 label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public H5 textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public H5 button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class H4 extends EImp implements HamletSpec.H4 {
    public H4(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public H4 $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public H4 $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public H4 $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public H4 $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public H4 $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public H4 $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public H4 $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public H4 $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public H4 $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public H4 $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public H4 $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public H4 $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public H4 $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public H4 $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public H4 $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public H4 $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public H4 __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public H4 _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public H4 b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public H4 b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public H4 i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public H4 i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public H4 small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public H4 small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public H4 em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public H4 em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public H4 strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public H4 strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public H4 dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public H4 dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public H4 code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public H4 code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public H4 samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public H4 samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public H4 kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public H4 kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public H4 var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public H4 var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public H4 cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public H4 cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public H4 abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public H4 abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public H4 a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public H4 a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public H4 img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public H4 sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public H4 sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public H4 sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public H4 sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public H4 q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public H4 q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public H4 br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public H4 bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public H4 span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public H4 span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public H4 script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public H4 ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public H4 del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public H4 label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public H4 textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public H4 button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class H3 extends EImp implements HamletSpec.H3 {
    public H3(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public H3 $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public H3 $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public H3 $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public H3 $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public H3 $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public H3 $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public H3 $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public H3 $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public H3 $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public H3 $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public H3 $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public H3 $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public H3 $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public H3 $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public H3 $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public H3 $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public H3 __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public H3 _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public H3 b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public H3 b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public H3 i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public H3 i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public H3 small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public H3 small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public H3 em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public H3 em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public H3 strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public H3 strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public H3 dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public H3 dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public H3 code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public H3 code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public H3 samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public H3 samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public H3 kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public H3 kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public H3 var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public H3 var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public H3 cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public H3 cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public H3 abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public H3 abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public H3 a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public H3 a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public H3 img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public H3 sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public H3 sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public H3 sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public H3 sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public H3 q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public H3 q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public H3 br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public H3 bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public H3 span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public H3 span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public H3 script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public H3 ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public H3 del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public H3 label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public H3 textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public H3 button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class H2 extends EImp implements HamletSpec.H2 {
    public H2(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public H2 $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public H2 $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public H2 $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public H2 $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public H2 $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public H2 $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public H2 $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public H2 $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public H2 $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public H2 $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public H2 $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public H2 $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public H2 $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public H2 $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public H2 $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public H2 $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public H2 __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public H2 _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public H2 b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public H2 b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public H2 i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public H2 i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public H2 small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public H2 small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public H2 em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public H2 em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public H2 strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public H2 strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public H2 dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public H2 dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public H2 code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public H2 code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public H2 samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public H2 samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public H2 kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public H2 kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public H2 var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public H2 var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public H2 cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public H2 cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public H2 abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public H2 abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public H2 a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public H2 a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public H2 img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public H2 sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public H2 sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public H2 sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public H2 sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public H2 q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public H2 q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public H2 br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public H2 bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public H2 span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public H2 span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public H2 script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public H2 ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public H2 del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public H2 label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public H2 textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public H2 button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class H1 extends EImp implements HamletSpec.H1 {
    public H1(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public H1 $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public H1 $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public H1 $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public H1 $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public H1 $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public H1 $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public H1 $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public H1 $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public H1 $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public H1 $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public H1 $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public H1 $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public H1 $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public H1 $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public H1 $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public H1 $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public H1 __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public H1 _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public H1 b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public H1 b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public H1 i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public H1 i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public H1 small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public H1 small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public H1 em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public H1 em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public H1 strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public H1 strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public H1 dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public H1 dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public H1 code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public H1 code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public H1 samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public H1 samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public H1 kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public H1 kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public H1 var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public H1 var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public H1 cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public H1 cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public H1 abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public H1 abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public H1 a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public H1 a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public H1 img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public H1 sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public H1 sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public H1 sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public H1 sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public H1 q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public H1 q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public H1 br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public H1 bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public H1 span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public H1 span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public H1 script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public H1 ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public H1 del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public H1 label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public H1 textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public H1 button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class P extends EImp implements HamletSpec.P {
    public P(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public P $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public P $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public P $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public P $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public P $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public P $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public P $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public P $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public P $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public P $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public P $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public P $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public P $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public P $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public P $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public P $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public P __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public P _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public P b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public P b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public P i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public P i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public P small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public P small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public P em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public P em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public P strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public P strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public P dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public P dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public P code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public P code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public P samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public P samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public P kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public P kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public P var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public P var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public P cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public P cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public P abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public P abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public P a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public P a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public P img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public P sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public P sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public P sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public P sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public P q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public P q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public P br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public P bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public P span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public P span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public P script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public P ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public P del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public P label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public P textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public P button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class HR extends EImp implements HamletSpec.HR {
    public HR(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public HR $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public HR $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public HR $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public HR $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public HR $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public HR $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public HR $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public HR $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public HR $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public HR $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public HR $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public HR $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public HR $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public HR $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public HR $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public HR $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }
  }

  public class PARAM extends EImp implements HamletSpec.PARAM {
    public PARAM(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public PARAM $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public PARAM $name(String value) {
      addAttr("name", value);
      return this;
    }

    @Override
    public PARAM $value(String value) {
      addAttr("value", value);
      return this;
    }
  }

  public class OBJECT extends EImp implements HamletSpec.OBJECT {
    public OBJECT(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public OBJECT $type(String value) {
      addAttr("type", value);
      return this;
    }

    @Override
    public OBJECT $name(String value) {
      addAttr("name", value);
      return this;
    }

    @Override
    public OBJECT $tabindex(int value) {
      addAttr("tabindex", value);
      return this;
    }

    @Override
    public OBJECT $data(String value) {
      addAttr("data", value);
      return this;
    }

    @Override
    public OBJECT $height(String value) {
      addAttr("height", value);
      return this;
    }

    @Override
    public OBJECT $height(int value) {
      addAttr("height", value);
      return this;
    }

    @Override
    public OBJECT $width(int value) {
      addAttr("width", value);
      return this;
    }

    @Override
    public OBJECT $width(String value) {
      addAttr("width", value);
      return this;
    }

    @Override
    public OBJECT $usemap(String value) {
      addAttr("usemap", value);
      return this;
    }

    @Override
    public OBJECT $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public OBJECT $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public OBJECT $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public OBJECT $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public OBJECT $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public OBJECT $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public OBJECT $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public OBJECT $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public OBJECT $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public OBJECT $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public OBJECT $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public OBJECT $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public OBJECT $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public OBJECT $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public OBJECT $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public OBJECT $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public PARAM> param() {
      closeAttrs();
      return param_(this, false);
    }

    @Override
    public OBJECT param(String name, String value) {
      return param().$name(name).$value(value).__();
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public OBJECT address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public OBJECT __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public OBJECT hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public OBJECT h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public OBJECT h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public OBJECT h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public OBJECT h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public OBJECT h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public OBJECT h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public OBJECT h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public OBJECT h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public OBJECT h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public OBJECT h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public OBJECT h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public OBJECT h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FORM> form() {
      closeAttrs();
      return form_(this, false);
    }

    @Override
    public FORM> form(String selector) {
      return setSelector(form(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }

    @Override
    public OBJECT __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public OBJECT _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public OBJECT b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public OBJECT b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public OBJECT i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public OBJECT i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public OBJECT small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public OBJECT small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public OBJECT em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public OBJECT em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public OBJECT strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public OBJECT strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public OBJECT dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public OBJECT dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public OBJECT code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public OBJECT code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public OBJECT samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public OBJECT samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public OBJECT kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public OBJECT kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public OBJECT var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public OBJECT var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public OBJECT cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public OBJECT cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public OBJECT abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public OBJECT abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public OBJECT a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public OBJECT a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public OBJECT img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public OBJECT sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public OBJECT sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public OBJECT sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public OBJECT sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public OBJECT q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public OBJECT q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public OBJECT br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public OBJECT bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public OBJECT span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public OBJECT span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public OBJECT script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public OBJECT ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public OBJECT del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public OBJECT label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public OBJECT textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public OBJECT button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  private  PARAM param_(T e, boolean inline) {
    return new PARAM("param", e, opt(false, inline, false)); }

  public class IMG extends EImp implements HamletSpec.IMG {
    public IMG(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public IMG $src(String value) {
      addAttr("src", value);
      return this;
    }

    @Override
    public IMG $alt(String value) {
      addAttr("alt", value);
      return this;
    }

    @Override
    public IMG $ismap() {
      addAttr("ismap", null);
      return this;
    }

    @Override
    public IMG $height(String value) {
      addAttr("height", value);
      return this;
    }

    @Override
    public IMG $height(int value) {
      addAttr("height", value);
      return this;
    }

    @Override
    public IMG $width(int value) {
      addAttr("width", value);
      return this;
    }

    @Override
    public IMG $width(String value) {
      addAttr("width", value);
      return this;
    }

    @Override
    public IMG $usemap(String value) {
      addAttr("usemap", value);
      return this;
    }

    @Override
    public IMG $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public IMG $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public IMG $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public IMG $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public IMG $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public IMG $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public IMG $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public IMG $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public IMG $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public IMG $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public IMG $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public IMG $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public IMG $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public IMG $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public IMG $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public IMG $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }
  }

  public class LINK extends EImp implements HamletSpec.LINK {
    public LINK(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public LINK $rel(EnumSet value) {
      addRelAttr("rel", value);
      return this;
    }

    @Override
    public LINK $rel(String value) {
      addAttr("rel", value);
      return this;
    }

    @Override
    public LINK $href(String value) {
      addAttr("href", value);
      return this;
    }

    @Override
    public LINK $type(String value) {
      addAttr("type", value);
      return this;
    }

    @Override
    public LINK $media(EnumSet value) {
      addMediaAttr("media", value);
      return this;
    }

    @Override
    public LINK $media(String value) {
      addAttr("media", value);
      return this;
    }

    @Override
    public LINK $hreflang(String value) {
      addAttr("hreflang", value);
      return this;
    }

    @Override
    public LINK $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public LINK $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public LINK $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public LINK $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public LINK $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public LINK $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public LINK $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public LINK $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public LINK $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public LINK $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public LINK $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public LINK $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public LINK $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public LINK $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public LINK $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public LINK $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }
  }

  public class AREA extends EImp implements HamletSpec.AREA {
    public AREA(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public AREA $href(String value) {
      addAttr("href", value);
      return this;
    }

    @Override
    public AREA $tabindex(int value) {
      addAttr("tabindex", value);
      return this;
    }

    @Override
    public AREA $accesskey(String value) {
      addAttr("accesskey", value);
      return this;
    }

    @Override
    public AREA $onfocus(String value) {
      addAttr("onfocus", value);
      return this;
    }

    @Override
    public AREA $onblur(String value) {
      addAttr("onblur", value);
      return this;
    }

    @Override
    public AREA $alt(String value) {
      addAttr("alt", value);
      return this;
    }

    @Override
    public AREA $shape(Shape value) {
      addAttr("shape", value);
      return this;
    }

    @Override
    public AREA $coords(String value) {
      addAttr("coords", value);
      return this;
    }

    @Override
    public AREA $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public AREA $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public AREA $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public AREA $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public AREA $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public AREA $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public AREA $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public AREA $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public AREA $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public AREA $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public AREA $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public AREA $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public AREA $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public AREA $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public AREA $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public AREA $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }
  }

  private  AREA area_(T e, boolean inline) {
    return new AREA("area", e, opt(false, inline, false)); }

  public class MAP extends EImp implements HamletSpec.MAP {
    public MAP(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public MAP $name(String value) {
      addAttr("name", value);
      return this;
    }

    @Override
    public AREA> area() {
      closeAttrs();
      return area_(this, false);
    }

    @Override
    public AREA> area(String selector) {
      return setSelector(area(), selector);
    }

    @Override
    public MAP $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public MAP $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public MAP $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public MAP $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public MAP $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public MAP $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public MAP $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public MAP $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public MAP $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public MAP $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public MAP $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public MAP $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public MAP $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public MAP $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public MAP $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public MAP $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public MAP address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public MAP __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public MAP hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public MAP h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public MAP h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public MAP h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public MAP h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public MAP h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public MAP h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public MAP h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public MAP h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public MAP h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public MAP h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public MAP h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public MAP h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FORM> form() {
      closeAttrs();
      return form_(this, false);
    }

    @Override
    public FORM> form(String selector) {
      return setSelector(form(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }
  }

  public class A extends EImp implements HamletSpec.A {
    public A(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public A $rel(EnumSet value) {
      addRelAttr("rel", value);
      return this;
    }

    @Override
    public A $rel(String value) {
      addAttr("rel", value);
      return this;
    }

    @Override
    public A $href(String value) {
      addAttr("href", value);
      return this;
    }

    @Override
    public A $type(String value) {
      addAttr("type", value);
      return this;
    }

    @Override
    public A $tabindex(int value) {
      addAttr("tabindex", value);
      return this;
    }

    @Override
    public A $accesskey(String value) {
      addAttr("accesskey", value);
      return this;
    }

    @Override
    public A $onfocus(String value) {
      addAttr("onfocus", value);
      return this;
    }

    @Override
    public A $onblur(String value) {
      addAttr("onblur", value);
      return this;
    }

    @Override
    public A $hreflang(String value) {
      addAttr("hreflang", value);
      return this;
    }

    @Override
    public A $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public A $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public A $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public A $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public A $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public A $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public A $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public A $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public A $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public A $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public A $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public A $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public A $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public A $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public A $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public A $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public A __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public A _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public A b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public A b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public A i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public A i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public A small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public A small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public A em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public A em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public A strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public A strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public A dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public A dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public A code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public A code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public A samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public A samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public A kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public A kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public A var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public A var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public A cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public A cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public A abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public A abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public A img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public A q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public A q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public A br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public A bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public A span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public A span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public A script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public A ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public A del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public A sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public A sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public A sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public A sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public A label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public A textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public A button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class DIV extends EImp implements HamletSpec.DIV {
    public DIV(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public DIV $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public DIV $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public DIV $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public DIV $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public DIV $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public DIV $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public DIV $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public DIV $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public DIV $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public DIV $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public DIV $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public DIV $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public DIV $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public DIV $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public DIV $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public DIV $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public DIV address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public DIV __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public DIV hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public DIV h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public DIV h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public DIV h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public DIV h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public DIV h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public DIV h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public DIV h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public DIV h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public DIV h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public DIV h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public DIV h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public DIV h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FORM> form() {
      closeAttrs();
      return form_(this, false);
    }

    @Override
    public FORM> form(String selector) {
      return setSelector(form(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }

    @Override
    public DIV __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public DIV _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public DIV b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public DIV b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public DIV i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public DIV i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public DIV small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public DIV small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public DIV em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public DIV em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public DIV strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public DIV strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public DIV dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public DIV dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public DIV code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public DIV code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public DIV samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public DIV samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public DIV kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public DIV kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public DIV var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public DIV var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public DIV cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public DIV cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public DIV abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public DIV abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public DIV a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public DIV a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public DIV img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public DIV sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public DIV sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public DIV sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public DIV sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public DIV q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public DIV q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public DIV br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public DIV bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public DIV span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public DIV span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public DIV script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public DIV ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public DIV del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public DIV label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public DIV textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public DIV button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class ADDRESS extends EImp implements HamletSpec.ADDRESS {
    public ADDRESS(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public ADDRESS $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public ADDRESS $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public ADDRESS $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public ADDRESS $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public ADDRESS $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public ADDRESS $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public ADDRESS $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public ADDRESS $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public ADDRESS $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public ADDRESS $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public ADDRESS $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public ADDRESS $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public ADDRESS $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public ADDRESS $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public ADDRESS $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public ADDRESS $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public ADDRESS __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public ADDRESS _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public ADDRESS b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public ADDRESS b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public ADDRESS i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public ADDRESS i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public ADDRESS small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public ADDRESS small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public ADDRESS em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public ADDRESS em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public ADDRESS strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public ADDRESS strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public ADDRESS dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public ADDRESS dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public ADDRESS code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public ADDRESS code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public ADDRESS samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public ADDRESS samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public ADDRESS kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public ADDRESS kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public ADDRESS var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public ADDRESS var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public ADDRESS cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public ADDRESS cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public ADDRESS abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public ADDRESS abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public ADDRESS a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public ADDRESS a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public ADDRESS img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public ADDRESS sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public ADDRESS sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public ADDRESS sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public ADDRESS sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public ADDRESS q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public ADDRESS q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public ADDRESS br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public ADDRESS bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public ADDRESS span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public ADDRESS span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public ADDRESS script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public ADDRESS ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public ADDRESS del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public ADDRESS label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public ADDRESS textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public ADDRESS button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class BODY extends EImp implements HamletSpec.BODY {
    public BODY(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public BODY $onload(String value) {
      addAttr("onload", value);
      return this;
    }

    @Override
    public BODY $onunload(String value) {
      addAttr("onunload", value);
      return this;
    }

    @Override
    public BODY $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public BODY $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public BODY $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public BODY $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public BODY $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public BODY $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public BODY $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public BODY $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public BODY $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public BODY $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public BODY $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public BODY $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public BODY $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public BODY $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public BODY $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public BODY $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public TABLE> table() {
      closeAttrs();
      return table_(this, false);
    }

    @Override
    public TABLE> table(String selector) {
      return setSelector(table(), selector);
    }

    @Override
    public BODY address(String cdata) {
      return address().__(cdata).__();
    }

    @Override
    public ADDRESS> address() {
      closeAttrs();
      return address_(this, false);
    }

    @Override
    public P> p(String selector) {
      return setSelector(p(), selector);
    }

    @Override
    public P> p() {
      closeAttrs();
      return p_(this, false);
    }

    @Override
    public BODY __(Class cls) {
      _v(cls);
      return this;
    }

    @Override
    public HR> hr() {
      closeAttrs();
      return hr_(this, false);
    }

    @Override
    public BODY hr(String selector) {
      return setSelector(hr(), selector).__();
    }

    @Override
    public DL> dl(String selector) {
      return setSelector(dl(), selector);
    }

    @Override
    public DL> dl() {
      closeAttrs();
      return dl_(this, false);
    }

    @Override
    public DIV> div(String selector) {
      return setSelector(div(), selector);
    }

    @Override
    public DIV> div() {
      closeAttrs();
      return div_(this, false);
    }

    @Override
    public BLOCKQUOTE> blockquote() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE> bq() {
      closeAttrs();
      return blockquote_(this, false);
    }

    @Override
    public BODY h1(String cdata) {
      return h1().__(cdata).__();
    }

    @Override
    public H1> h1() {
      closeAttrs();
      return h1_(this, false);
    }

    @Override
    public BODY h1(String selector, String cdata) {
      return setSelector(h1(), selector).__(cdata).__();
    }

    @Override
    public BODY h2(String cdata) {
      return h2().__(cdata).__();
    }

    @Override
    public H2> h2() {
      closeAttrs();
      return h2_(this, false);
    }

    @Override
    public BODY h2(String selector, String cdata) {
      return setSelector(h2(), selector).__(cdata).__();
    }

    @Override
    public H3> h3() {
      closeAttrs();
      return h3_(this, false);
    }

    @Override
    public BODY h3(String cdata) {
      return h3().__(cdata).__();
    }

    @Override
    public BODY h3(String selector, String cdata) {
      return setSelector(h3(), selector).__(cdata).__();
    }

    @Override
    public H4> h4() {
      closeAttrs();
      return h4_(this, false);
    }

    @Override
    public BODY h4(String cdata) {
      return h4().__(cdata).__();
    }

    @Override
    public BODY h4(String selector, String cdata) {
      return setSelector(h4(), selector).__(cdata).__();
    }

    @Override
    public H5> h5() {
      closeAttrs();
      return h5_(this, false);
    }

    @Override
    public BODY h5(String cdata) {
      return h5().__(cdata).__();
    }

    @Override
    public BODY h5(String selector, String cdata) {
      return setSelector(h5(), selector).__(cdata).__();
    }

    @Override
    public H6> h6() {
      closeAttrs();
      return h6_(this, false);
    }

    @Override
    public BODY h6(String cdata) {
      return h6().__(cdata).__();
    }

    @Override
    public BODY h6(String selector, String cdata) {
      return setSelector(h6(), selector).__(cdata).__();
    }

    @Override
    public UL> ul() {
      closeAttrs();
      return ul_(this, false);
    }

    @Override
    public UL> ul(String selector) {
      return setSelector(ul(), selector);
    }

    @Override
    public OL> ol() {
      closeAttrs();
      return ol_(this, false);
    }

    @Override
    public OL> ol(String selector) {
      return setSelector(ol(), selector);
    }

    @Override
    public PRE> pre() {
      closeAttrs();
      return pre_(this, false);
    }

    @Override
    public PRE> pre(String selector) {
      return setSelector(pre(), selector);
    }

    @Override
    public FORM> form() {
      closeAttrs();
      return form_(this, false);
    }

    @Override
    public FORM> form(String selector) {
      return setSelector(form(), selector);
    }

    @Override
    public FIELDSET> fieldset() {
      closeAttrs();
      return fieldset_(this, false);
    }

    @Override
    public FIELDSET> fieldset(String selector) {
      return setSelector(fieldset(), selector);
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, false);
    }

    @Override
    public BODY script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, false);
    }

    @Override
    public BODY ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, false);
    }

    @Override
    public BODY del(String cdata) {
      return del().__(cdata).__();
    }
  }

  private  TABLE table_(T e, boolean inline) {
    return new TABLE("table", e, opt(true, inline, false)); }

  private  ADDRESS address_(T e, boolean inline) {
    return new ADDRESS("address", e, opt(true, inline, false)); }

  private  P p_(T e, boolean inline) {
    return new P("p", e, opt(false, inline, false)); }

  private  HR hr_(T e, boolean inline) {
    return new HR("hr", e, opt(false, inline, false)); }

  private  DL dl_(T e, boolean inline) {
    return new DL("dl", e, opt(true, inline, false)); }

  private  DIV div_(T e, boolean inline) {
    return new DIV("div", e, opt(true, inline, false)); }

  private  BLOCKQUOTE blockquote_(T e, boolean inline) {
    return new BLOCKQUOTE("blockquote", e, opt(true, inline, false)); }

  private  BLOCKQUOTE bq_(T e, boolean inline) {
    return new BLOCKQUOTE("blockquote", e, opt(true, inline, false)); }

  private  FIELDSET fieldset_(T e, boolean inline) {
    return new FIELDSET("fieldset", e, opt(true, inline, false)); }

  private  FORM form_(T e, boolean inline) {
    return new FORM("form", e, opt(true, inline, false)); }

  public class BR extends EImp implements HamletSpec.BR {
    public BR(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public BR $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public BR $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public BR $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public BR $style(String value) {
      addAttr("style", value);
      return this;
    }
  }

  public class BDO extends EImp implements HamletSpec.BDO {
    public BDO(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public BDO $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public BDO $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public BDO $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public BDO $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public BDO $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public BDO $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public BDO __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public BDO _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public BDO b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public BDO b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public BDO i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public BDO i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public BDO small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public BDO small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public BDO em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public BDO em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public BDO strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public BDO strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public BDO dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public BDO dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public BDO code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public BDO code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public BDO samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public BDO samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public BDO kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public BDO kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public BDO var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public BDO var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public BDO cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public BDO cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public BDO abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public BDO abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public BDO a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public BDO a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public BDO img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public BDO sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public BDO sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public BDO sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public BDO sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public BDO q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public BDO q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public BDO br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public BDO bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public BDO span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public BDO span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public BDO script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public BDO ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public BDO del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public BDO label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public BDO textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public BDO button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class SPAN extends EImp implements HamletSpec.SPAN {
    public SPAN(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public SPAN $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public SPAN $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public SPAN $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public SPAN $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public SPAN $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public SPAN $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public SPAN $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public SPAN $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public SPAN $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public SPAN $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public SPAN $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public SPAN $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public SPAN $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public SPAN $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public SPAN $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public SPAN $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public SPAN __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public SPAN _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public SPAN b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public SPAN b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public SPAN i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public SPAN i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public SPAN small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public SPAN small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public SPAN em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public SPAN em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public SPAN strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public SPAN strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public SPAN dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public SPAN dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public SPAN code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public SPAN code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public SPAN samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public SPAN samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public SPAN kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public SPAN kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public SPAN var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public SPAN var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public SPAN cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public SPAN cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public SPAN abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public SPAN abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public SPAN a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public SPAN a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public SPAN img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public SPAN sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public SPAN sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public SPAN sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public SPAN sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public SPAN q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public SPAN q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public SPAN br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public SPAN bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public SPAN span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public SPAN span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public SPAN script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public SPAN ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public SPAN del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public SPAN label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public SPAN textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public SPAN button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class SUP extends EImp implements HamletSpec.SUP {
    public SUP(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public SUP $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public SUP $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public SUP $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public SUP $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public SUP $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public SUP $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public SUP $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public SUP $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public SUP $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public SUP $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public SUP $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public SUP $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public SUP $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public SUP $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public SUP $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public SUP $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public SUP __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public SUP _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public SUP b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public SUP b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public SUP i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public SUP i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public SUP small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public SUP small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public SUP em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public SUP em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public SUP strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public SUP strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public SUP dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public SUP dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public SUP code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public SUP code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public SUP samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public SUP samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public SUP kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public SUP kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public SUP var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public SUP var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public SUP cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public SUP cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public SUP abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public SUP abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public SUP a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public SUP a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public SUP img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public SUP sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public SUP sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public SUP sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public SUP sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public SUP q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public SUP q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public SUP br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public SUP bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public SUP span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public SUP span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public SUP script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public SUP ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public SUP del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public SUP label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public SUP textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public SUP button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class SUB extends EImp implements HamletSpec.SUB {
    public SUB(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public SUB $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public SUB $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public SUB $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public SUB $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public SUB $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public SUB $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public SUB $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public SUB $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public SUB $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public SUB $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public SUB $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public SUB $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public SUB $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public SUB $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public SUB $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public SUB $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public SUB __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public SUB _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public SUB b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public SUB b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public SUB i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public SUB i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public SUB small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public SUB small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public SUB em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public SUB em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public SUB strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public SUB strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public SUB dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public SUB dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public SUB code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public SUB code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public SUB samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public SUB samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public SUB kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public SUB kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public SUB var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public SUB var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public SUB cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public SUB cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public SUB abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public SUB abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public SUB a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public SUB a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public SUB img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public SUB sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public SUB sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public SUB sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public SUB sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public SUB q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public SUB q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public SUB br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public SUB bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public SUB span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public SUB span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public SUB script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public SUB ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public SUB del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public SUB label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public SUB textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public SUB button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class ACRONYM extends EImp implements HamletSpec.ACRONYM {
    public ACRONYM(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public ACRONYM $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public ACRONYM $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public ACRONYM $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public ACRONYM $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public ACRONYM $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public ACRONYM $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public ACRONYM $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public ACRONYM $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public ACRONYM $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public ACRONYM $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public ACRONYM $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public ACRONYM $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public ACRONYM $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public ACRONYM $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public ACRONYM $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public ACRONYM $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public ACRONYM __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public ACRONYM _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public ACRONYM b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public ACRONYM b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public ACRONYM i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public ACRONYM i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public ACRONYM small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public ACRONYM small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public ACRONYM em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public ACRONYM em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public ACRONYM strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public ACRONYM strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public ACRONYM dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public ACRONYM dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public ACRONYM code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public ACRONYM code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public ACRONYM samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public ACRONYM samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public ACRONYM kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public ACRONYM kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public ACRONYM var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public ACRONYM var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public ACRONYM cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public ACRONYM cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public ACRONYM abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public ACRONYM abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public ACRONYM a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public ACRONYM a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public ACRONYM img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public ACRONYM sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public ACRONYM sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public ACRONYM sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public ACRONYM sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public ACRONYM q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public ACRONYM q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public ACRONYM br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public ACRONYM bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public ACRONYM span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public ACRONYM span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public ACRONYM script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public ACRONYM ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public ACRONYM del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public ACRONYM label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public ACRONYM textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public ACRONYM button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class ABBR extends EImp implements HamletSpec.ABBR {
    public ABBR(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public ABBR $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public ABBR $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public ABBR $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public ABBR $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public ABBR $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public ABBR $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public ABBR $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public ABBR $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public ABBR $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public ABBR $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public ABBR $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public ABBR $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public ABBR $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public ABBR $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public ABBR $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public ABBR $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public ABBR __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public ABBR _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public ABBR b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public ABBR b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public ABBR i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public ABBR i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public ABBR small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public ABBR small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public ABBR em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public ABBR em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public ABBR strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public ABBR strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public ABBR dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public ABBR dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public ABBR code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public ABBR code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public ABBR samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public ABBR samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public ABBR kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public ABBR kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public ABBR var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public ABBR var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public ABBR cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public ABBR cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public ABBR abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public ABBR abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public ABBR a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public ABBR a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public ABBR img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public ABBR sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public ABBR sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public ABBR sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public ABBR sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public ABBR q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public ABBR q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public ABBR br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public ABBR bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public ABBR span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public ABBR span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public ABBR script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public ABBR ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public ABBR del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public ABBR label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public ABBR textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public ABBR button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class CITE extends EImp implements HamletSpec.CITE {
    public CITE(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public CITE $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public CITE $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public CITE $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public CITE $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public CITE $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public CITE $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public CITE $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public CITE $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public CITE $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public CITE $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public CITE $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public CITE $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public CITE $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public CITE $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public CITE $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public CITE $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public CITE __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public CITE _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public CITE b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public CITE b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public CITE i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public CITE i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public CITE small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public CITE small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public CITE em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public CITE em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public CITE strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public CITE strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public CITE dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public CITE dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public CITE code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public CITE code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public CITE samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public CITE samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public CITE kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public CITE kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public CITE var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public CITE var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public CITE cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public CITE cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public CITE abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public CITE abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public CITE a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public CITE a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public CITE img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public CITE sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public CITE sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public CITE sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public CITE sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public CITE q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public CITE q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public CITE br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public CITE bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public CITE span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public CITE span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public CITE script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public CITE ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public CITE del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public CITE label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public CITE textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public CITE button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class VAR extends EImp implements HamletSpec.VAR {
    public VAR(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public VAR $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public VAR $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public VAR $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public VAR $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public VAR $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public VAR $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public VAR $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public VAR $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public VAR $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public VAR $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public VAR $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public VAR $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public VAR $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public VAR $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public VAR $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public VAR $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public VAR __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public VAR _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public VAR b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public VAR b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public VAR i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public VAR i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public VAR small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public VAR small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public VAR em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public VAR em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public VAR strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public VAR strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public VAR dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public VAR dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public VAR code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public VAR code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public VAR samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public VAR samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public VAR kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public VAR kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public VAR var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public VAR var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public VAR cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public VAR cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public VAR abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public VAR abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public VAR a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public VAR a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public VAR img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public VAR sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public VAR sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public VAR sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public VAR sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public VAR q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public VAR q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public VAR br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public VAR bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public VAR span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public VAR span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public VAR script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public VAR ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public VAR del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public VAR label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public VAR textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public VAR button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class KBD extends EImp implements HamletSpec.KBD {
    public KBD(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public KBD $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public KBD $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public KBD $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public KBD $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public KBD $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public KBD $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public KBD $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public KBD $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public KBD $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public KBD $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public KBD $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public KBD $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public KBD $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public KBD $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public KBD $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public KBD $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public KBD __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public KBD _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public KBD b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public KBD b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public KBD i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public KBD i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public KBD small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public KBD small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public KBD em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public KBD em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public KBD strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public KBD strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public KBD dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public KBD dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public KBD code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public KBD code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public KBD samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public KBD samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public KBD kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public KBD kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public KBD var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public KBD var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public KBD cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public KBD cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public KBD abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public KBD abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public KBD a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public KBD a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public KBD img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public KBD sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public KBD sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public KBD sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public KBD sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public KBD q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public KBD q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public KBD br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public KBD bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public KBD span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public KBD span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public KBD script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public KBD ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public KBD del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public KBD label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public KBD textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public KBD button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class SAMP extends EImp implements HamletSpec.SAMP {
    public SAMP(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public SAMP $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public SAMP $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public SAMP $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public SAMP $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public SAMP $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public SAMP $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public SAMP $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public SAMP $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public SAMP $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public SAMP $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public SAMP $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public SAMP $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public SAMP $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public SAMP $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public SAMP $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public SAMP $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public SAMP __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public SAMP _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public SAMP b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public SAMP b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public SAMP i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public SAMP i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public SAMP small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public SAMP small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public SAMP em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public SAMP em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public SAMP strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public SAMP strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public SAMP dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public SAMP dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public SAMP code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public SAMP code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public SAMP samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public SAMP samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public SAMP kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public SAMP kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public SAMP var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public SAMP var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public SAMP cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public SAMP cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public SAMP abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public SAMP abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public SAMP a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public SAMP a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public SAMP img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public SAMP sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public SAMP sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public SAMP sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public SAMP sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public SAMP q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public SAMP q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public SAMP br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public SAMP bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public SAMP span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public SAMP span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public SAMP script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public SAMP ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public SAMP del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public SAMP label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public SAMP textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public SAMP button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class CODE extends EImp implements HamletSpec.CODE {
    public CODE(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public CODE $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public CODE $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public CODE $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public CODE $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public CODE $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public CODE $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public CODE $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public CODE $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public CODE $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public CODE $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public CODE $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public CODE $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public CODE $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public CODE $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public CODE $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public CODE $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public CODE __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public CODE _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public CODE b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public CODE b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public CODE i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public CODE i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public CODE small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public CODE small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public CODE em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public CODE em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public CODE strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public CODE strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public CODE dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public CODE dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public CODE code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public CODE code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public CODE samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public CODE samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public CODE kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public CODE kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public CODE var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public CODE var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public CODE cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public CODE cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public CODE abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public CODE abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public CODE a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public CODE a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public CODE img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public CODE sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public CODE sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public CODE sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public CODE sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public CODE q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public CODE q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public CODE br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public CODE bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public CODE span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public CODE span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public CODE script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public CODE ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public CODE del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public CODE label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public CODE textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public CODE button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class DFN extends EImp implements HamletSpec.DFN {
    public DFN(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public DFN $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public DFN $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public DFN $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public DFN $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public DFN $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public DFN $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public DFN $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public DFN $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public DFN $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public DFN $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public DFN $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public DFN $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public DFN $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public DFN $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public DFN $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public DFN $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public DFN __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public DFN _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public DFN b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public DFN b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public DFN i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public DFN i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public DFN small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public DFN small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public DFN em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public DFN em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public DFN strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public DFN strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public DFN dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public DFN dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public DFN code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public DFN code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public DFN samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public DFN samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public DFN kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public DFN kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public DFN var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public DFN var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public DFN cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public DFN cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public DFN abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public DFN abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public DFN a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public DFN a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public DFN img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public DFN sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public DFN sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public DFN sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public DFN sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public DFN q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public DFN q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public DFN br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public DFN bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public DFN span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public DFN span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public DFN script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public DFN ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public DFN del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public DFN label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public DFN textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public DFN button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class STRONG extends EImp implements HamletSpec.STRONG {
    public STRONG(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public STRONG $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public STRONG $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public STRONG $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public STRONG $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public STRONG $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public STRONG $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public STRONG $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public STRONG $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public STRONG $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public STRONG $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public STRONG $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public STRONG $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public STRONG $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public STRONG $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public STRONG $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public STRONG $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public STRONG __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public STRONG _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public STRONG b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public STRONG b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public STRONG i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public STRONG i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public STRONG small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public STRONG small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public STRONG em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public STRONG em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public STRONG strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public STRONG strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public STRONG dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public STRONG dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public STRONG code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public STRONG code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public STRONG samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public STRONG samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public STRONG kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public STRONG kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public STRONG var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public STRONG var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public STRONG cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public STRONG cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public STRONG abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public STRONG abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public STRONG a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public STRONG a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public STRONG img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public STRONG sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public STRONG sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public STRONG sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public STRONG sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public STRONG q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public STRONG q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public STRONG br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public STRONG bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public STRONG span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public STRONG span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public STRONG script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public STRONG ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public STRONG del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public STRONG label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public STRONG textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public STRONG button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class EM extends EImp implements HamletSpec.EM {
    public EM(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public EM $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public EM $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public EM $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public EM $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public EM $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public EM $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public EM $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public EM $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public EM $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public EM $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public EM $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public EM $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public EM $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public EM $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public EM $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public EM $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public EM __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public EM _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public EM b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public EM b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public EM i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public EM i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public EM small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public EM small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public EM em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public EM em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public EM strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public EM strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public EM dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public EM dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public EM code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public EM code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public EM samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public EM samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public EM kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public EM kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public EM var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public EM var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public EM cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public EM cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public EM abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public EM abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public EM a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public EM a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public EM img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public EM sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public EM sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public EM sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public EM sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public EM q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public EM q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public EM br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public EM bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public EM span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public EM span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public EM script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public EM ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public EM del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public EM label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public EM textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public EM button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class SMALL extends EImp implements HamletSpec.SMALL {
    public SMALL(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public SMALL $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public SMALL $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public SMALL $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public SMALL $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public SMALL $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public SMALL $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public SMALL $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public SMALL $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public SMALL $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public SMALL $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public SMALL $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public SMALL $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public SMALL $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public SMALL $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public SMALL $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public SMALL $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public SMALL __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public SMALL _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public SMALL b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public SMALL b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public SMALL i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public SMALL i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public SMALL small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public SMALL small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public SMALL em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public SMALL em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public SMALL strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public SMALL strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public SMALL dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public SMALL dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public SMALL code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public SMALL code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public SMALL samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public SMALL samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public SMALL kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public SMALL kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public SMALL var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public SMALL var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public SMALL cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public SMALL cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public SMALL abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public SMALL abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public SMALL a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public SMALL a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public SMALL img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public SMALL sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public SMALL sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public SMALL sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public SMALL sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public SMALL q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public SMALL q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public SMALL br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public SMALL bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public SMALL span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public SMALL span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public SMALL script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public SMALL ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public SMALL del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public SMALL label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public SMALL textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public SMALL button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class B extends EImp implements HamletSpec.B {
    public B(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public B $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public B $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public B $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public B $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public B $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public B $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public B $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public B $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public B $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public B $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public B $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public B $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public B $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public B $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public B $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public B $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public B __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public B _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public B b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public B b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public B i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public B i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public B small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public B small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public B em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public B em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public B strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public B strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public B dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public B dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public B code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public B code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public B samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public B samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public B kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public B kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public B var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public B var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public B cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public B cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public B abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public B abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public B a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public B a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public B img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public B sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public B sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public B sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public B sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public B q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public B q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public B br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public B bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public B span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public B span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public B script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public B ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public B del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public B label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public B textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public B button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  public class I extends EImp implements HamletSpec.I {
    public I(String name, T parent, EnumSet opts) {
      super(name, parent, opts);
    }

    @Override
    public I $id(String value) {
      addAttr("id", value);
      return this;
    }

    @Override
    public I $class(String value) {
      addAttr("class", value);
      return this;
    }

    @Override
    public I $title(String value) {
      addAttr("title", value);
      return this;
    }

    @Override
    public I $style(String value) {
      addAttr("style", value);
      return this;
    }

    @Override
    public I $lang(String value) {
      addAttr("lang", value);
      return this;
    }

    @Override
    public I $dir(Dir value) {
      addAttr("dir", value);
      return this;
    }

    @Override
    public I $onclick(String value) {
      addAttr("onclick", value);
      return this;
    }

    @Override
    public I $ondblclick(String value) {
      addAttr("ondblclick", value);
      return this;
    }

    @Override
    public I $onmousedown(String value) {
      addAttr("onmousedown", value);
      return this;
    }

    @Override
    public I $onmouseup(String value) {
      addAttr("onmouseup", value);
      return this;
    }

    @Override
    public I $onmouseover(String value) {
      addAttr("onmouseover", value);
      return this;
    }

    @Override
    public I $onmousemove(String value) {
      addAttr("onmousemove", value);
      return this;
    }

    @Override
    public I $onmouseout(String value) {
      addAttr("onmouseout", value);
      return this;
    }

    @Override
    public I $onkeypress(String value) {
      addAttr("onkeypress", value);
      return this;
    }

    @Override
    public I $onkeydown(String value) {
      addAttr("onkeydown", value);
      return this;
    }

    @Override
    public I $onkeyup(String value) {
      addAttr("onkeyup", value);
      return this;
    }

    @Override
    public I __(Object... lines) {
      _p(true, lines);
      return this;
    }

    @Override
    public I _r(Object... lines) {
      _p(false, lines);
      return this;
    }

    @Override
    public B> b() {
      closeAttrs();
      return b_(this, true);
    }

    @Override
    public I b(String cdata) {
      return b().__(cdata).__();
    }

    @Override
    public I b(String selector, String cdata) {
      return setSelector(b(), selector).__(cdata).__();
    }

    @Override
    public I> i() {
      closeAttrs();
      return i_(this, true);
    }

    @Override
    public I i(String cdata) {
      return i().__(cdata).__();
    }

    @Override
    public I i(String selector, String cdata) {
      return setSelector(i(), selector).__(cdata).__();
    }

    @Override
    public SMALL> small() {
      closeAttrs();
      return small_(this, true);
    }

    @Override
    public I small(String cdata) {
      return small().__(cdata).__();
    }

    @Override
    public I small(String selector, String cdata) {
      return setSelector(small(), selector).__(cdata).__();
    }

    @Override
    public I em(String cdata) {
      return em().__(cdata).__();
    }

    @Override
    public EM> em() {
      closeAttrs();
      return em_(this, true);
    }

    @Override
    public I em(String selector, String cdata) {
      return setSelector(em(), selector).__(cdata).__();
    }

    @Override
    public STRONG> strong() {
      closeAttrs();
      return strong_(this, true);
    }

    @Override
    public I strong(String cdata) {
      return strong().__(cdata).__();
    }

    @Override
    public I strong(String selector, String cdata) {
      return setSelector(strong(), selector).__(cdata).__();
    }

    @Override
    public DFN> dfn() {
      closeAttrs();
      return dfn_(this, true);
    }

    @Override
    public I dfn(String cdata) {
      return dfn().__(cdata).__();
    }

    @Override
    public I dfn(String selector, String cdata) {
      return setSelector(dfn(), selector).__(cdata).__();
    }

    @Override
    public CODE> code() {
      closeAttrs();
      return code_(this, true);
    }

    @Override
    public I code(String cdata) {
      return code().__(cdata).__();
    }

    @Override
    public I code(String selector, String cdata) {
      return setSelector(code(), selector).__(cdata).__();
    }

    @Override
    public I samp(String cdata) {
      return samp().__(cdata).__();
    }

    @Override
    public SAMP> samp() {
      closeAttrs();
      return samp_(this, true);
    }

    @Override
    public I samp(String selector, String cdata) {
      return setSelector(samp(), selector).__(cdata).__();
    }

    @Override
    public KBD> kbd() {
      closeAttrs();
      return kbd_(this, true);
    }

    @Override
    public I kbd(String cdata) {
      return kbd().__(cdata).__();
    }

    @Override
    public I kbd(String selector, String cdata) {
      return setSelector(kbd(), selector).__(cdata).__();
    }

    @Override
    public VAR> var() {
      closeAttrs();
      return var_(this, true);
    }

    @Override
    public I var(String cdata) {
      return var().__(cdata).__();
    }

    @Override
    public I var(String selector, String cdata) {
      return setSelector(var(), selector).__(cdata).__();
    }

    @Override
    public CITE> cite() {
      closeAttrs();
      return cite_(this, true);
    }

    @Override
    public I cite(String cdata) {
      return cite().__(cdata).__();
    }

    @Override
    public I cite(String selector, String cdata) {
      return setSelector(cite(), selector).__(cdata).__();
    }

    @Override
    public ABBR> abbr() {
      closeAttrs();
      return abbr_(this, true);
    }

    @Override
    public I abbr(String cdata) {
      return abbr().__(cdata).__();
    }

    @Override
    public I abbr(String selector, String cdata) {
      return setSelector(abbr(), selector).__(cdata).__();
    }

    @Override
    public A> a() {
      closeAttrs();
      return a_(this, true);
    }

    @Override
    public A> a(String selector) {
      return setSelector(a(), selector);
    }

    @Override
    public I a(String href, String anchorText) {
      return a().$href(href).__(anchorText).__();
    }

    @Override
    public I a(String selector, String href, String anchorText) {
      return setSelector(a(), selector).$href(href).__(anchorText).__();
    }

    @Override
    public IMG> img() {
      closeAttrs();
      return img_(this, true);
    }

    @Override
    public I img(String src) {
      return img().$src(src).__();
    }

    @Override
    public OBJECT> object() {
      closeAttrs();
      return object_(this, true);
    }

    @Override
    public OBJECT> object(String selector) {
      return setSelector(object(), selector);
    }

    @Override
    public SUB> sub() {
      closeAttrs();
      return sub_(this, true);
    }

    @Override
    public I sub(String cdata) {
      return sub().__(cdata).__();
    }

    @Override
    public I sub(String selector, String cdata) {
      return setSelector(sub(), selector).__(cdata).__();
    }

    @Override
    public SUP> sup() {
      closeAttrs();
      return sup_(this, true);
    }

    @Override
    public I sup(String cdata) {
      return sup().__(cdata).__();
    }

    @Override
    public I sup(String selector, String cdata) {
      return setSelector(sup(), selector).__(cdata).__();
    }

    @Override
    public MAP> map() {
      closeAttrs();
      return map_(this, true);
    }

    @Override
    public MAP> map(String selector) {
      return setSelector(map(), selector);
    }

    @Override
    public I q(String cdata) {
      return q().__(cdata).__();
    }

    @Override
    public I q(String selector, String cdata) {
      return setSelector(q(), selector).__(cdata).__();
    }

    @Override
    public Q> q() {
      closeAttrs();
      return q_(this, true);
    }

    @Override
    public BR> br() {
      closeAttrs();
      return br_(this, true);
    }

    @Override
    public I br(String selector) {
      return setSelector(br(), selector).__();
    }

    @Override
    public BDO> bdo() {
      closeAttrs();
      return bdo_(this, true);
    }

    @Override
    public I bdo(Dir dir, String cdata) {
      return bdo().$dir(dir).__(cdata).__();
    }

    @Override
    public SPAN> span() {
      closeAttrs();
      return span_(this, true);
    }

    @Override
    public I span(String cdata) {
      return span().__(cdata).__();
    }

    @Override
    public I span(String selector, String cdata) {
      return setSelector(span(), selector).__(cdata).__();
    }

    @Override
    public SCRIPT> script() {
      closeAttrs();
      return script_(this, true);
    }

    @Override
    public I script(String src) {
      return setScriptSrc(script(), src).__();
    }

    @Override
    public INS> ins() {
      closeAttrs();
      return ins_(this, true);
    }

    @Override
    public I ins(String cdata) {
      return ins().__(cdata).__();
    }

    @Override
    public DEL> del() {
      closeAttrs();
      return del_(this, true);
    }

    @Override
    public I del(String cdata) {
      return del().__(cdata).__();
    }

    @Override
    public LABEL> label() {
      closeAttrs();
      return label_(this, true);
    }

    @Override
    public I label(String forId, String cdata) {
      return label().$for(forId).__(cdata).__();
    }

    @Override
    public INPUT> input(String selector) {
      return setSelector(input(), selector);
    }

    @Override
    public INPUT> input() {
      closeAttrs();
      return input_(this, true);
    }

    @Override
    public SELECT> select() {
      closeAttrs();
      return select_(this, true);
    }

    @Override
    public SELECT> select(String selector) {
      return setSelector(select(), selector);
    }

    @Override
    public TEXTAREA> textarea(String selector) {
      return setSelector(textarea(), selector);
    }

    @Override
    public TEXTAREA> textarea() {
      closeAttrs();
      return textarea_(this, true);
    }

    @Override
    public I textarea(String selector, String cdata) {
      return setSelector(textarea(), selector).__(cdata).__();
    }

    @Override
    public BUTTON> button() {
      closeAttrs();
      return button_(this, true);
    }

    @Override
    public BUTTON> button(String selector) {
      return setSelector(button(), selector);
    }

    @Override
    public I button(String selector, String cdata) {
      return setSelector(button(), selector).__(cdata).__();
    }
  }

  private  INPUT input_(T e, boolean inline) {
    return new INPUT("input", e, opt(false, inline, false)); }

  private  SELECT select_(T e, boolean inline) {
    return new SELECT("select", e, opt(true, inline, false)); }

  private  TEXTAREA textarea_(T e, boolean inline) {
    return new TEXTAREA("textarea", e, opt(true, inline, false)); }

  private  BUTTON button_(T e, boolean inline) {
    return new BUTTON("button", e, opt(true, inline, false)); }

  private  LABEL label_(T e, boolean inline) {
    return new LABEL("label", e, opt(true, inline, false)); }

  private  MAP map_(T e, boolean inline) {
    return new MAP("map", e, opt(true, inline, false)); }

  private  Q q_(T e, boolean inline) {
    return new Q("q", e, opt(true, inline, false)); }

  private  BR br_(T e, boolean inline) {
    return new BR("br", e, opt(false, inline, false)); }

  private  BDO bdo_(T e, boolean inline) {
    return new BDO("bdo", e, opt(true, inline, false)); }

  private  SPAN span_(T e, boolean inline) {
    return new SPAN("span", e, opt(true, inline, false)); }

  private  INS ins_(T e, boolean inline) {
    return new INS("ins", e, opt(true, inline, false)); }

  private  DEL del_(T e, boolean inline) {
    return new DEL("del", e, opt(true, inline, false)); }

  private  A a_(T e, boolean inline) {
    return new A("a", e, opt(true, inline, false)); }

  private  SUB sub_(T e, boolean inline) {
    return new SUB("sub", e, opt(true, inline, false)); }

  private  SUP sup_(T e, boolean inline) {
    return new SUP("sup", e, opt(true, inline, false)); }

  private  IMG img_(T e, boolean inline) {
    return new IMG("img", e, opt(false, inline, false)); }

  private  EM em_(T e, boolean inline) {
    return new EM("em", e, opt(true, inline, false)); }

  private  STRONG strong_(T e, boolean inline) {
    return new STRONG("strong", e, opt(true, inline, false)); }

  private  DFN dfn_(T e, boolean inline) {
    return new DFN("dfn", e, opt(true, inline, false)); }

  private  CODE code_(T e, boolean inline) {
    return new CODE("code", e, opt(true, inline, false)); }

  private  SAMP samp_(T e, boolean inline) {
    return new SAMP("samp", e, opt(true, inline, false)); }

  private  KBD kbd_(T e, boolean inline) {
    return new KBD("kbd", e, opt(true, inline, false)); }

  private  VAR var_(T e, boolean inline) {
    return new VAR("var", e, opt(true, inline, false)); }

  private  CITE cite_(T e, boolean inline) {
    return new CITE("cite", e, opt(true, inline, false)); }

  private  ABBR abbr_(T e, boolean inline) {
    return new ABBR("abbr", e, opt(true, inline, false)); }

  private  B b_(T e, boolean inline) {
    return new B("b", e, opt(true, inline, false)); }

  private  I i_(T e, boolean inline) {
    return new I("i", e, opt(true, inline, false)); }

  private  SMALL small_(T e, boolean inline) {
    return new SMALL("small", e, opt(true, inline, false)); }

  private  PRE pre_(T e, boolean inline) {
    return new PRE("pre", e, opt(true, inline, true)); }

  private  UL ul_(T e, boolean inline) {
    return new UL("ul", e, opt(true, inline, false)); }

  private  OL ol_(T e, boolean inline) {
    return new OL("ol", e, opt(true, inline, false)); }

  private  H1 h1_(T e, boolean inline) {
    return new H1("h1", e, opt(true, inline, false)); }

  private  H2 h2_(T e, boolean inline) {
    return new H2("h2", e, opt(true, inline, false)); }

  private  H3 h3_(T e, boolean inline) {
    return new H3("h3", e, opt(true, inline, false)); }

  private  H4 h4_(T e, boolean inline) {
    return new H4("h4", e, opt(true, inline, false)); }

  private  H5 h5_(T e, boolean inline) {
    return new H5("h5", e, opt(true, inline, false)); }

  private  H6 h6_(T e, boolean inline) {
    return new H6("h6", e, opt(true, inline, false)); }

  private  STYLE style_(T e, boolean inline) {
    return new STYLE("style", e, opt(true, inline, false)); }

  private  LINK link_(T e, boolean inline) {
    return new LINK("link", e, opt(false, inline, false)); }

  private  META meta_(T e, boolean inline) {
    return new META("meta", e, opt(false, inline, false)); }

  private  OBJECT object_(T e, boolean inline) {
    return new OBJECT("object", e, opt(true, inline, false)); }

  private  SCRIPT script_(T e, boolean inline) {
    return new SCRIPT("script", e, opt(true, inline, false)); }

  @Override
  public HEAD head() {
  return head_(this, false);
  }

  @Override
  public BODY body() {
  return body_(this, false);
  }

  @Override
  public BODY body(String selector) {
    return setSelector(body(), selector);
  }

  @Override
  public BASE base() {
  return base_(this, false);
  }

  @Override
  public Hamlet base(String href) {
    return base().$href(href).__();
  }

  @Override
  public TITLE title() {
  return title_(this, false);
  }

  @Override
  public Hamlet title(String cdata) {
    return title().__(cdata).__();
  }

  @Override
  public STYLE style() {
  return style_(this, false);
  }

  @Override
  public Hamlet style(Object... lines) {
    return style().$type("text/css").__(lines).__();
  }

  @Override
  public LINK link() {
  return link_(this, false);
  }

  @Override
  public Hamlet link(String href) {
    return setLinkHref(link(), href).__();
  }

  @Override
  public META 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 script() {
  return script_(this, false);
  }

  @Override
  public Hamlet script(String src) {
    return setScriptSrc(script(), src).__();
  }

  @Override
  public OBJECT object() {
  return object_(this, true);
  }

  @Override
  public OBJECT object(String selector) {
    return setSelector(object(), selector);
  }

  @Override
  public TABLE table() {
  return table_(this, false);
  }

  @Override
  public TABLE table(String selector) {
    return setSelector(table(), selector);
  }

  @Override
  public Hamlet address(String cdata) {
    return address().__(cdata).__();
  }

  @Override
  public ADDRESS address() {
  return address_(this, false);
  }

  @Override
  public P p(String selector) {
    return setSelector(p(), selector);
  }

  @Override
  public P p() {
  return p_(this, false);
  }

  @Override
  public Hamlet __(Class cls) {
    subView(cls);
    return this;
  }

  @Override
  public HR hr() {
  return hr_(this, false);
  }

  @Override
  public Hamlet hr(String selector) {
    return setSelector(hr(), selector).__();
  }

  @Override
  public DL dl(String selector) {
    return setSelector(dl(), selector);
  }

  @Override
  public DL dl() {
  return dl_(this, false);
  }

  @Override
  public DIV div(String selector) {
    return setSelector(div(), selector);
  }

  @Override
  public DIV div() {
  return div_(this, false);
  }

  @Override
  public BLOCKQUOTE blockquote() {
  return blockquote_(this, false);
  }

  @Override
  public BLOCKQUOTE bq() {
  return blockquote_(this, false);
  }

  @Override
  public Hamlet h1(String cdata) {
    return h1().__(cdata).__();
  }

  @Override
  public H1 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 h2() {
  return h2_(this, false);
  }

  @Override
  public Hamlet h2(String selector, String cdata) {
    return setSelector(h2(), selector).__(cdata).__();
  }

  @Override
  public H3 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 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 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 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 ul() {
  return ul_(this, false);
  }

  @Override
  public UL ul(String selector) {
    return setSelector(ul(), selector);
  }

  @Override
  public OL ol() {
  return ol_(this, false);
  }

  @Override
  public OL ol(String selector) {
    return setSelector(ol(), selector);
  }

  @Override
  public PRE pre() {
  return pre_(this, false);
  }

  @Override
  public PRE pre(String selector) {
    return setSelector(pre(), selector);
  }

  @Override
  public FORM form() {
  return form_(this, false);
  }

  @Override
  public FORM form(String selector) {
    return setSelector(form(), selector);
  }

  @Override
  public FIELDSET fieldset() {
  return fieldset_(this, false);
  }

  @Override
  public FIELDSET fieldset(String selector) {
    return setSelector(fieldset(), selector);
  }

  @Override
  public INS ins() {
  return ins_(this, false);
  }

  @Override
  public Hamlet ins(String cdata) {
    return ins().__(cdata).__();
  }

  @Override
  public DEL del() {
  return del_(this, false);
  }

  @Override
  public Hamlet del(String cdata) {
    return del().__(cdata).__();
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy