org.apache.hadoop.yarn.webapp.hamlet.Hamlet.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.hadoop.yarn.webapp.hamlet.Hamlet.java

Source

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

// Generated by HamletGen. Do NOT edit!
package org.apache.hadoop.yarn.webapp.hamlet;

import static java.util.EnumSet.of;
import static org.apache.hadoop.yarn.webapp.hamlet.HamletImpl.EOpt.ENDTAG;
import static org.apache.hadoop.yarn.webapp.hamlet.HamletImpl.EOpt.INLINE;
import static org.apache.hadoop.yarn.webapp.hamlet.HamletImpl.EOpt.PRE;

import java.io.PrintWriter;
import java.util.EnumSet;

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

/**
 * @deprecated Use org.apache.hadoop.yarn.webapp.hamlet2 package instead.
 */
@Deprecated
@InterfaceAudience.LimitedPrivate({ "YARN", "MapReduce" })
public class Hamlet extends HamletImpl implements HamletSpec._Html {
    public Hamlet(PrintWriter out, int nestLevel, boolean wasInline) {
        super(out, nestLevel, wasInline);
    }

    static EnumSet<EOpt> opt(boolean endTag, boolean inline, boolean pre) {
        EnumSet<EOpt> opts = of(ENDTAG);
        if (!endTag)
            opts.remove(ENDTAG);
        if (inline)
            opts.add(INLINE);
        if (pre)
            opts.add(PRE);
        return opts;
    }

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

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

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

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

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

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

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

        @Override
        public HTML<T> base(String href) {
            return base().$href(href)._();
        }

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

        @Override
        public HTML<T> title(String cdata) {
            return title()._(cdata)._();
        }

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

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

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

        @Override
        public HTML<T> link(String href) {
            return setLinkHref(link(), href)._();
        }

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

        @Override
        public HTML<T> meta(String name, String content) {
            return meta().$name(name).$content(content)._();
        }

        @Override
        public HTML<T> meta_http(String header, String content) {
            return meta().$http_equiv(header).$content(content)._();
        }

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

        @Override
        public HTML<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

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

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

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

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

        @Override
        public HTML<T> address(String cdata) {
            return address()._(cdata)._();
        }

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

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

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

        @Override
        public HTML<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

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

        @Override
        public HTML<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

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

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

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

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

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

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

        @Override
        public HTML<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

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

        @Override
        public HTML<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public HTML<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

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

        @Override
        public HTML<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

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

        @Override
        public HTML<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public HTML<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

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

        @Override
        public HTML<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public HTML<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

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

        @Override
        public HTML<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public HTML<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

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

        @Override
        public HTML<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public HTML<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public HTML<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

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

        @Override
        public HTML<T> del(String cdata) {
            return del()._(cdata)._();
        }
    }

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

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

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

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

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

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

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

        @Override
        public SCRIPT<T> _(Object... lines) {
            _p(false, lines);
            return this;
        }
    }

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

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

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

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

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

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

        @Override
        public STYLE<T> _(Object... lines) {
            _p(false, lines);
            return this;
        }
    }

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public TITLE<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

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

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

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

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

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

        @Override
        public HEAD<T> base(String href) {
            return base().$href(href)._();
        }

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

        @Override
        public HEAD<T> title(String cdata) {
            return title()._(cdata)._();
        }

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

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

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

        @Override
        public HEAD<T> link(String href) {
            return setLinkHref(link(), href)._();
        }

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

        @Override
        public HEAD<T> meta(String name, String content) {
            return meta().$name(name).$content(content)._();
        }

        @Override
        public HEAD<T> meta_http(String header, String content) {
            return meta().$http_equiv(header).$content(content)._();
        }

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

        @Override
        public HEAD<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public TD<T> address(String cdata) {
            return address()._(cdata)._();
        }

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

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

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

        @Override
        public TD<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

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

        @Override
        public TD<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

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

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

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

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

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

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

        @Override
        public TD<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

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

        @Override
        public TD<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public TD<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

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

        @Override
        public TD<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public TD<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public TD<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public TD<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public TD<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

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

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

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

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

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

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

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

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

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

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

        @Override
        public TD<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

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

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

        @Override
        public TD<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public TD<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public TD<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public TD<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public TD<T> em(String cdata) {
            return em()._(cdata)._();
        }

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

        @Override
        public TD<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public TD<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public TD<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public TD<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public TD<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

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

        @Override
        public TD<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public TD<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public TD<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public TD<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public TD<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

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

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

        @Override
        public TD<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public TD<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

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

        @Override
        public TD<T> img(String src) {
            return img().$src(src)._();
        }

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

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

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

        @Override
        public TD<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public TD<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public TD<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

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

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

        @Override
        public TD<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public TD<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

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

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

        @Override
        public TD<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

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

        @Override
        public TD<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

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

        @Override
        public TD<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public TD<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

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

        @Override
        public TD<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

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

        @Override
        public TD<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

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

        @Override
        public TD<T> del(String cdata) {
            return del()._(cdata)._();
        }

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

        @Override
        public TD<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

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

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

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

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

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

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

        @Override
        public TD<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

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

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

        @Override
        public TD<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public TH<T> address(String cdata) {
            return address()._(cdata)._();
        }

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

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

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

        @Override
        public TH<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

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

        @Override
        public TH<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

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

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

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

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

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

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

        @Override
        public TH<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

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

        @Override
        public TH<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public TH<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

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

        @Override
        public TH<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public TH<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public TH<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public TH<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public TH<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

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

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

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

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

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

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

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

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

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

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

        @Override
        public TH<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

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

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

        @Override
        public TH<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public TH<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public TH<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public TH<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public TH<T> em(String cdata) {
            return em()._(cdata)._();
        }

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

        @Override
        public TH<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public TH<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public TH<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public TH<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public TH<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

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

        @Override
        public TH<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public TH<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public TH<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public TH<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public TH<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

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

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

        @Override
        public TH<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public TH<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

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

        @Override
        public TH<T> img(String src) {
            return img().$src(src)._();
        }

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

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

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

        @Override
        public TH<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public TH<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public TH<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

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

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

        @Override
        public TH<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public TH<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

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

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

        @Override
        public TH<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

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

        @Override
        public TH<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

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

        @Override
        public TH<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public TH<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

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

        @Override
        public TH<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

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

        @Override
        public TH<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

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

        @Override
        public TH<T> del(String cdata) {
            return del()._(cdata)._();
        }

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

        @Override
        public TH<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

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

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

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

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

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

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

        @Override
        public TH<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

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

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

        @Override
        public TH<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public TR<T> th(String cdata) {
            return th()._(cdata)._();
        }

        @Override
        public TR<T> th(String selector, String cdata) {
            return setSelector(th(), selector)._(cdata)._();
        }

        public TR<T> th(String selector, String title, String cdata) {
            return setSelector(th(), selector).$title(title)._(cdata)._();
        }

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

        @Override
        public TR<T> td(String cdata) {
            return td()._(cdata)._();
        }

        @Override
        public TR<T> td(String selector, String cdata) {
            return setSelector(td(), selector)._(cdata)._();
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public COLGROUP<T> col(String selector) {
            return setSelector(col(), selector)._();
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public CAPTION<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

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

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

        @Override
        public CAPTION<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public CAPTION<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

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

        @Override
        public CAPTION<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public CAPTION<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

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

        @Override
        public CAPTION<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public CAPTION<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public CAPTION<T> em(String cdata) {
            return em()._(cdata)._();
        }

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

        @Override
        public CAPTION<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

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

        @Override
        public CAPTION<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public CAPTION<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

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

        @Override
        public CAPTION<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public CAPTION<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

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

        @Override
        public CAPTION<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public CAPTION<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public CAPTION<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

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

        @Override
        public CAPTION<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

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

        @Override
        public CAPTION<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public CAPTION<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

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

        @Override
        public CAPTION<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public CAPTION<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

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

        @Override
        public CAPTION<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public CAPTION<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

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

        @Override
        public CAPTION<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public CAPTION<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

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

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

        @Override
        public CAPTION<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public CAPTION<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

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

        @Override
        public CAPTION<T> img(String src) {
            return img().$src(src)._();
        }

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

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

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

        @Override
        public CAPTION<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public CAPTION<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

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

        @Override
        public CAPTION<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public CAPTION<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

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

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

        @Override
        public CAPTION<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public CAPTION<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

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

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

        @Override
        public CAPTION<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

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

        @Override
        public CAPTION<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

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

        @Override
        public CAPTION<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public CAPTION<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

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

        @Override
        public CAPTION<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

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

        @Override
        public CAPTION<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

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

        @Override
        public CAPTION<T> del(String cdata) {
            return del()._(cdata)._();
        }

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

        @Override
        public CAPTION<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

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

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

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

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

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

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

        @Override
        public CAPTION<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

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

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

        @Override
        public CAPTION<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public TABLE<T> caption(String cdata) {
            return caption()._(cdata)._();
        }

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public TABLE<T> col(String selector) {
            return setSelector(col(), selector)._();
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public BUTTON<T> address(String cdata) {
            return address()._(cdata)._();
        }

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

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

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

        @Override
        public BUTTON<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

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

        @Override
        public BUTTON<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

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

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

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

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

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

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

        @Override
        public BUTTON<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

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

        @Override
        public BUTTON<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

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

        @Override
        public BUTTON<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public BUTTON<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public BUTTON<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public BUTTON<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public BUTTON<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

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

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

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

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

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

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

        @Override
        public BUTTON<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

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

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

        @Override
        public BUTTON<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public BUTTON<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public BUTTON<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public BUTTON<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<T> em(String cdata) {
            return em()._(cdata)._();
        }

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

        @Override
        public BUTTON<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public BUTTON<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public BUTTON<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public BUTTON<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

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

        @Override
        public BUTTON<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public BUTTON<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public BUTTON<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public BUTTON<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public BUTTON<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

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

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

        @Override
        public BUTTON<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public BUTTON<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

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

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

        @Override
        public BUTTON<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

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

        @Override
        public BUTTON<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public BUTTON<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

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

        @Override
        public BUTTON<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

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

        @Override
        public BUTTON<T> del(String cdata) {
            return del()._(cdata)._();
        }

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

        @Override
        public BUTTON<T> img(String src) {
            return img().$src(src)._();
        }

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

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

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

        @Override
        public BUTTON<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public BUTTON<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

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

        @Override
        public BUTTON<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public BUTTON<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    public class LEGEND<T extends _> extends EImp<T> implements HamletSpec.LEGEND {
        public LEGEND(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public LEGEND<T> $accesskey(String value) {
            addAttr("accesskey", value);
            return this;
        }

        @Override
        public LEGEND<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public LEGEND<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public LEGEND<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public LEGEND<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public LEGEND<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public LEGEND<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public LEGEND<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public LEGEND<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public LEGEND<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public LEGEND<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public LEGEND<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public LEGEND<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public LEGEND<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public LEGEND<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public LEGEND<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public LEGEND<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public LEGEND<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public LEGEND<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

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

        @Override
        public LEGEND<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public LEGEND<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

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

        @Override
        public LEGEND<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public LEGEND<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

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

        @Override
        public LEGEND<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public LEGEND<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public LEGEND<T> em(String cdata) {
            return em()._(cdata)._();
        }

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

        @Override
        public LEGEND<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

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

        @Override
        public LEGEND<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public LEGEND<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

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

        @Override
        public LEGEND<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public LEGEND<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

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

        @Override
        public LEGEND<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public LEGEND<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public LEGEND<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

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

        @Override
        public LEGEND<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

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

        @Override
        public LEGEND<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public LEGEND<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

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

        @Override
        public LEGEND<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public LEGEND<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

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

        @Override
        public LEGEND<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public LEGEND<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

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

        @Override
        public LEGEND<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public LEGEND<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

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

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

        @Override
        public LEGEND<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public LEGEND<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

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

        @Override
        public LEGEND<T> img(String src) {
            return img().$src(src)._();
        }

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

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

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

        @Override
        public LEGEND<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public LEGEND<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

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

        @Override
        public LEGEND<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public LEGEND<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

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

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

        @Override
        public LEGEND<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public LEGEND<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

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

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

        @Override
        public LEGEND<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

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

        @Override
        public LEGEND<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

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

        @Override
        public LEGEND<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public LEGEND<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

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

        @Override
        public LEGEND<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

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

        @Override
        public LEGEND<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

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

        @Override
        public LEGEND<T> del(String cdata) {
            return del()._(cdata)._();
        }

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

        @Override
        public LEGEND<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

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

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

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

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

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

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

        @Override
        public LEGEND<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

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

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

        @Override
        public LEGEND<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class FIELDSET<T extends _> extends EImp<T> implements HamletSpec.FIELDSET {
        public FIELDSET(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public FIELDSET<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public FIELDSET<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public FIELDSET<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public FIELDSET<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public FIELDSET<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public FIELDSET<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public FIELDSET<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public FIELDSET<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public FIELDSET<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public FIELDSET<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public FIELDSET<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public FIELDSET<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public FIELDSET<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public FIELDSET<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public FIELDSET<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public FIELDSET<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public LEGEND<FIELDSET<T>> legend() {
            closeAttrs();
            return legend_(this, false);
        }

        @Override
        public FIELDSET<T> legend(String cdata) {
            return legend()._(cdata)._();
        }

        @Override
        public FIELDSET<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public FIELDSET<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

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

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

        @Override
        public FIELDSET<T> address(String cdata) {
            return address()._(cdata)._();
        }

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

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

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

        @Override
        public FIELDSET<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

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

        @Override
        public FIELDSET<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

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

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

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

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

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

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

        @Override
        public FIELDSET<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public FIELDSET<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public FIELDSET<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public FIELDSET<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public FIELDSET<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public FIELDSET<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public FIELDSET<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public FIELDSET<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public FIELDSET<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public FIELDSET<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public FIELDSET<T> em(String cdata) {
            return em()._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public FIELDSET<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public FIELDSET<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public FIELDSET<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public FIELDSET<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public FIELDSET<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public FIELDSET<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public FIELDSET<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public FIELDSET<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

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

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

        @Override
        public FIELDSET<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public FIELDSET<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

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

        @Override
        public FIELDSET<T> img(String src) {
            return img().$src(src)._();
        }

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

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

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

        @Override
        public FIELDSET<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public FIELDSET<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public FIELDSET<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

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

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

        @Override
        public FIELDSET<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public FIELDSET<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

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

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

        @Override
        public FIELDSET<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

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

        @Override
        public FIELDSET<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public FIELDSET<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

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

        @Override
        public FIELDSET<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> del(String cdata) {
            return del()._(cdata)._();
        }

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

        @Override
        public FIELDSET<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

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

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

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

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

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

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

        @Override
        public FIELDSET<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

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

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

        @Override
        public FIELDSET<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    private <T extends _> LEGEND<T> legend_(T e, boolean inline) {
        return new LEGEND<T>("legend", e, opt(true, inline, false));
    }

    public class TEXTAREA<T extends _> extends EImp<T> implements HamletSpec.TEXTAREA {
        public TEXTAREA(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public TEXTAREA<T> $name(String value) {
            addAttr("name", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $disabled() {
            addAttr("disabled", null);
            return this;
        }

        @Override
        public TEXTAREA<T> $tabindex(int value) {
            addAttr("tabindex", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $accesskey(String value) {
            addAttr("accesskey", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $onfocus(String value) {
            addAttr("onfocus", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $onblur(String value) {
            addAttr("onblur", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $rows(int value) {
            addAttr("rows", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $cols(int value) {
            addAttr("cols", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $readonly() {
            addAttr("readonly", null);
            return this;
        }

        @Override
        public TEXTAREA<T> $onselect(String value) {
            addAttr("onselect", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $onchange(String value) {
            addAttr("onchange", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public TEXTAREA<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public TEXTAREA<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public TEXTAREA<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }
    }

    public class OPTION<T extends _> extends EImp<T> implements HamletSpec.OPTION {
        public OPTION(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public OPTION<T> $value(String value) {
            addAttr("value", value);
            return this;
        }

        @Override
        public OPTION<T> $disabled() {
            addAttr("disabled", null);
            return this;
        }

        @Override
        public OPTION<T> $selected() {
            addAttr("selected", null);
            return this;
        }

        @Override
        public OPTION<T> $label(String value) {
            addAttr("label", value);
            return this;
        }

        @Override
        public OPTION<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public OPTION<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public OPTION<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public OPTION<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public OPTION<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public OPTION<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public OPTION<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public OPTION<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public OPTION<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public OPTION<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public OPTION<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public OPTION<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public OPTION<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public OPTION<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public OPTION<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public OPTION<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public OPTION<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public OPTION<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }
    }

    public class OPTGROUP<T extends _> extends EImp<T> implements HamletSpec.OPTGROUP {
        public OPTGROUP(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public OPTGROUP<T> $disabled() {
            addAttr("disabled", null);
            return this;
        }

        @Override
        public OPTGROUP<T> $label(String value) {
            addAttr("label", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public OPTGROUP<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public OPTION<OPTGROUP<T>> option() {
            closeAttrs();
            return option_(this, false);
        }

        @Override
        public OPTGROUP<T> option(String cdata) {
            return option()._(cdata)._();
        }
    }

    private <T extends _> OPTGROUP<T> optgroup_(T e, boolean inline) {
        return new OPTGROUP<T>("optgroup", e, opt(true, inline, false));
    }

    public class SELECT<T extends _> extends EImp<T> implements HamletSpec.SELECT {
        public SELECT(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public SELECT<T> $name(String value) {
            addAttr("name", value);
            return this;
        }

        @Override
        public SELECT<T> $disabled() {
            addAttr("disabled", null);
            return this;
        }

        @Override
        public SELECT<T> $tabindex(int value) {
            addAttr("tabindex", value);
            return this;
        }

        @Override
        public SELECT<T> $onfocus(String value) {
            addAttr("onfocus", value);
            return this;
        }

        @Override
        public SELECT<T> $onblur(String value) {
            addAttr("onblur", value);
            return this;
        }

        @Override
        public SELECT<T> $onchange(String value) {
            addAttr("onchange", value);
            return this;
        }

        @Override
        public OPTGROUP<SELECT<T>> optgroup() {
            closeAttrs();
            return optgroup_(this, false);
        }

        @Override
        public SELECT<T> $size(int value) {
            addAttr("size", value);
            return this;
        }

        @Override
        public SELECT<T> $multiple() {
            addAttr("multiple", null);
            return this;
        }

        @Override
        public SELECT<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public SELECT<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public SELECT<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public SELECT<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public SELECT<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public SELECT<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public SELECT<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public SELECT<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public SELECT<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public SELECT<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public SELECT<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public SELECT<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public SELECT<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public SELECT<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public SELECT<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public SELECT<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public OPTION<SELECT<T>> option() {
            closeAttrs();
            return option_(this, false);
        }

        @Override
        public SELECT<T> option(String cdata) {
            return option()._(cdata)._();
        }
    }

    private <T extends _> OPTION<T> option_(T e, boolean inline) {
        return new OPTION<T>("option", e, opt(false, inline, false));
    }

    public class INPUT<T extends _> extends EImp<T> implements HamletSpec.INPUT {
        public INPUT(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public INPUT<T> $type(InputType value) {
            addAttr("type", value);
            return this;
        }

        @Override
        public INPUT<T> $src(String value) {
            addAttr("src", value);
            return this;
        }

        @Override
        public INPUT<T> $name(String value) {
            addAttr("name", value);
            return this;
        }

        @Override
        public INPUT<T> $value(String value) {
            addAttr("value", value);
            return this;
        }

        @Override
        public INPUT<T> $disabled() {
            addAttr("disabled", null);
            return this;
        }

        @Override
        public INPUT<T> $tabindex(int value) {
            addAttr("tabindex", value);
            return this;
        }

        @Override
        public INPUT<T> $accesskey(String value) {
            addAttr("accesskey", value);
            return this;
        }

        @Override
        public INPUT<T> $onfocus(String value) {
            addAttr("onfocus", value);
            return this;
        }

        @Override
        public INPUT<T> $onblur(String value) {
            addAttr("onblur", value);
            return this;
        }

        @Override
        public INPUT<T> $readonly() {
            addAttr("readonly", null);
            return this;
        }

        @Override
        public INPUT<T> $onselect(String value) {
            addAttr("onselect", value);
            return this;
        }

        @Override
        public INPUT<T> $onchange(String value) {
            addAttr("onchange", value);
            return this;
        }

        @Override
        public INPUT<T> $size(String value) {
            addAttr("size", value);
            return this;
        }

        @Override
        public INPUT<T> $checked() {
            addAttr("checked", null);
            return this;
        }

        @Override
        public INPUT<T> $maxlength(int value) {
            addAttr("maxlength", value);
            return this;
        }

        @Override
        public INPUT<T> $alt(String value) {
            addAttr("alt", value);
            return this;
        }

        @Override
        public INPUT<T> $ismap() {
            addAttr("ismap", null);
            return this;
        }

        @Override
        public INPUT<T> $accept(String value) {
            addAttr("accept", value);
            return this;
        }

        @Override
        public INPUT<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public INPUT<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public INPUT<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public INPUT<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public INPUT<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public INPUT<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public INPUT<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public INPUT<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public INPUT<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public INPUT<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public INPUT<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public INPUT<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public INPUT<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public INPUT<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public INPUT<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public INPUT<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }
    }

    public class LABEL<T extends _> extends EImp<T> implements HamletSpec.LABEL {
        public LABEL(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public LABEL<T> $accesskey(String value) {
            addAttr("accesskey", value);
            return this;
        }

        @Override
        public LABEL<T> $onfocus(String value) {
            addAttr("onfocus", value);
            return this;
        }

        @Override
        public LABEL<T> $onblur(String value) {
            addAttr("onblur", value);
            return this;
        }

        @Override
        public LABEL<T> $for(String value) {
            addAttr("for", value);
            return this;
        }

        @Override
        public LABEL<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public LABEL<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public LABEL<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public LABEL<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public LABEL<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public LABEL<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public LABEL<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public LABEL<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public LABEL<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public LABEL<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public LABEL<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public LABEL<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public LABEL<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public LABEL<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public LABEL<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public LABEL<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public LABEL<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public LABEL<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

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

        @Override
        public LABEL<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public LABEL<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

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

        @Override
        public LABEL<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public LABEL<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

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

        @Override
        public LABEL<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public LABEL<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public LABEL<T> em(String cdata) {
            return em()._(cdata)._();
        }

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

        @Override
        public LABEL<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

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

        @Override
        public LABEL<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public LABEL<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

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

        @Override
        public LABEL<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public LABEL<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

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

        @Override
        public LABEL<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public LABEL<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public LABEL<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

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

        @Override
        public LABEL<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

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

        @Override
        public LABEL<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public LABEL<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

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

        @Override
        public LABEL<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public LABEL<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

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

        @Override
        public LABEL<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public LABEL<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

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

        @Override
        public LABEL<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public LABEL<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

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

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

        @Override
        public LABEL<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public LABEL<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

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

        @Override
        public LABEL<T> img(String src) {
            return img().$src(src)._();
        }

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

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

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

        @Override
        public LABEL<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public LABEL<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

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

        @Override
        public LABEL<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public LABEL<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

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

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

        @Override
        public LABEL<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public LABEL<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

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

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

        @Override
        public LABEL<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

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

        @Override
        public LABEL<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

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

        @Override
        public LABEL<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public LABEL<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

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

        @Override
        public LABEL<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

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

        @Override
        public LABEL<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

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

        @Override
        public LABEL<T> del(String cdata) {
            return del()._(cdata)._();
        }

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

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

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

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

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

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

        @Override
        public LABEL<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

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

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

        @Override
        public LABEL<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class FORM<T extends _> extends EImp<T> implements HamletSpec.FORM {
        public FORM(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public FORM<T> $name(String value) {
            addAttr("name", value);
            return this;
        }

        @Override
        public FORM<T> $accept(String value) {
            addAttr("accept", value);
            return this;
        }

        @Override
        public FORM<T> $action(String value) {
            addAttr("action", value);
            return this;
        }

        @Override
        public FORM<T> $method(Method value) {
            addAttr("method", value);
            return this;
        }

        @Override
        public FORM<T> $enctype(String value) {
            addAttr("enctype", value);
            return this;
        }

        @Override
        public FORM<T> $onsubmit(String value) {
            addAttr("onsubmit", value);
            return this;
        }

        @Override
        public FORM<T> $onreset(String value) {
            addAttr("onreset", value);
            return this;
        }

        @Override
        public FORM<T> $accept_charset(String value) {
            addAttr("accept-charset", value);
            return this;
        }

        @Override
        public FORM<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public FORM<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public FORM<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public FORM<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public FORM<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public FORM<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public FORM<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public FORM<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public FORM<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public FORM<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public FORM<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public FORM<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public FORM<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public FORM<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public FORM<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public FORM<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

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

        @Override
        public FORM<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

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

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

        @Override
        public FORM<T> address(String cdata) {
            return address()._(cdata)._();
        }

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

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

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

        @Override
        public FORM<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

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

        @Override
        public FORM<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

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

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

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

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

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

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

        @Override
        public FORM<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

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

        @Override
        public FORM<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public FORM<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

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

        @Override
        public FORM<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

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

        @Override
        public FORM<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public FORM<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

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

        @Override
        public FORM<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public FORM<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

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

        @Override
        public FORM<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public FORM<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

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

        @Override
        public FORM<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public FORM<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

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

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

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

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

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

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

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

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

    public class LI<T extends _> extends EImp<T> implements HamletSpec.LI {
        public LI(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public LI<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public LI<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public LI<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public LI<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public LI<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public LI<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public LI<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public LI<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public LI<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public LI<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public LI<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public LI<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public LI<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public LI<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public LI<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public LI<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

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

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

        @Override
        public LI<T> address(String cdata) {
            return address()._(cdata)._();
        }

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

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

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

        @Override
        public LI<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

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

        @Override
        public LI<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

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

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

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

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

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

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

        @Override
        public LI<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

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

        @Override
        public LI<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public LI<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

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

        @Override
        public LI<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public LI<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public LI<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public LI<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public LI<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

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

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

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

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

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

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

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

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

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

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

        @Override
        public LI<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public LI<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

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

        @Override
        public LI<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public LI<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public LI<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public LI<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public LI<T> em(String cdata) {
            return em()._(cdata)._();
        }

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

        @Override
        public LI<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public LI<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public LI<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public LI<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public LI<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

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

        @Override
        public LI<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public LI<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public LI<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public LI<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public LI<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

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

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

        @Override
        public LI<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public LI<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

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

        @Override
        public LI<T> img(String src) {
            return img().$src(src)._();
        }

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

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

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

        @Override
        public LI<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public LI<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public LI<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

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

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

        @Override
        public LI<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public LI<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

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

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

        @Override
        public LI<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

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

        @Override
        public LI<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

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

        @Override
        public LI<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public LI<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

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

        @Override
        public LI<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

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

        @Override
        public LI<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

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

        @Override
        public LI<T> del(String cdata) {
            return del()._(cdata)._();
        }

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

        @Override
        public LI<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

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

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

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

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

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

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

        @Override
        public LI<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

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

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

        @Override
        public LI<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class UL<T extends _> extends EImp<T> implements HamletSpec.UL {
        public UL(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public UL<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public UL<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public UL<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public UL<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public UL<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public UL<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public UL<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public UL<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public UL<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public UL<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public UL<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public UL<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public UL<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public UL<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public UL<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public UL<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public LI<UL<T>> li() {
            closeAttrs();
            return li_(this, false);
        }

        @Override
        public UL<T> li(String cdata) {
            return li()._(cdata)._();
        }
    }

    public class OL<T extends _> extends EImp<T> implements HamletSpec.OL {
        public OL(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public OL<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public OL<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public OL<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public OL<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public OL<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public OL<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public OL<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public OL<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public OL<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public OL<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public OL<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public OL<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public OL<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public OL<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public OL<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public OL<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public LI<OL<T>> li() {
            closeAttrs();
            return li_(this, false);
        }

        @Override
        public OL<T> li(String cdata) {
            return li()._(cdata)._();
        }
    }

    private <T extends _> LI<T> li_(T e, boolean inline) {
        return new LI<T>("li", e, opt(false, inline, false));
    }

    public class DD<T extends _> extends EImp<T> implements HamletSpec.DD {
        public DD(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public DD<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public DD<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public DD<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public DD<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public DD<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public DD<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public DD<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public DD<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public DD<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public DD<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public DD<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public DD<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public DD<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public DD<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public DD<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public DD<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

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

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

        @Override
        public DD<T> address(String cdata) {
            return address()._(cdata)._();
        }

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

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

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

        @Override
        public DD<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

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

        @Override
        public DD<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

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

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

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

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

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

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

        @Override
        public DD<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

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

        @Override
        public DD<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public DD<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

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

        @Override
        public DD<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

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

        @Override
        public DD<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public DD<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

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

        @Override
        public DD<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public DD<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

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

        @Override
        public DD<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public DD<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

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

        @Override
        public DD<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public DD<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

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

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

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

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

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

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

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

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

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

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

        @Override
        public DD<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public DD<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

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

        @Override
        public DD<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public DD<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<DD<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public DD<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public DD<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<DD<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public DD<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public DD<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public DD<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<DD<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public DD<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<DD<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public DD<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public DD<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<DD<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public DD<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public DD<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<DD<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public DD<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public DD<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public DD<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<DD<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public DD<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<DD<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public DD<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public DD<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<DD<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public DD<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public DD<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<DD<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public DD<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public DD<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<DD<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public DD<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public DD<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<DD<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<DD<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public DD<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public DD<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<DD<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public DD<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<DD<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<DD<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<DD<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public DD<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public DD<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<DD<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public DD<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public DD<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<DD<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<DD<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public DD<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public DD<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<DD<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<DD<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public DD<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<DD<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public DD<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<DD<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public DD<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public DD<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<DD<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public DD<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<DD<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public DD<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<DD<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public DD<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<DD<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public DD<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<DD<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<DD<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<DD<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<DD<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<DD<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<DD<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public DD<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<DD<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<DD<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public DD<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class DT<T extends _> extends EImp<T> implements HamletSpec.DT {
        public DT(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public DT<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public DT<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public DT<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public DT<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public DT<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public DT<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public DT<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public DT<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public DT<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public DT<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public DT<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public DT<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public DT<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public DT<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public DT<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public DT<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public DT<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public DT<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<DT<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public DT<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public DT<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<DT<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public DT<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public DT<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<DT<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public DT<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public DT<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public DT<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<DT<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public DT<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<DT<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public DT<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public DT<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<DT<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public DT<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public DT<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<DT<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public DT<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public DT<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public DT<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<DT<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public DT<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<DT<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public DT<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public DT<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<DT<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public DT<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public DT<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<DT<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public DT<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public DT<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<DT<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public DT<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public DT<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<DT<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<DT<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public DT<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public DT<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<DT<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public DT<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<DT<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<DT<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<DT<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public DT<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public DT<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<DT<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public DT<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public DT<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<DT<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<DT<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public DT<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public DT<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<DT<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<DT<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public DT<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<DT<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public DT<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<DT<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public DT<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public DT<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<DT<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public DT<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<DT<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public DT<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<DT<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public DT<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<DT<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public DT<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<DT<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<DT<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<DT<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<DT<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<DT<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<DT<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public DT<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<DT<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<DT<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public DT<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class DL<T extends _> extends EImp<T> implements HamletSpec.DL {
        public DL(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public DL<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public DL<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public DL<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public DL<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public DL<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public DL<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public DL<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public DL<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public DL<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public DL<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public DL<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public DL<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public DL<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public DL<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public DL<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public DL<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public DT<DL<T>> dt() {
            closeAttrs();
            return dt_(this, false);
        }

        @Override
        public DL<T> dt(String cdata) {
            return dt()._(cdata)._();
        }

        @Override
        public DD<DL<T>> dd() {
            closeAttrs();
            return dd_(this, false);
        }

        @Override
        public DL<T> dd(String cdata) {
            return dd()._(cdata)._();
        }
    }

    private <T extends _> DT<T> dt_(T e, boolean inline) {
        return new DT<T>("dt", e, opt(false, inline, false));
    }

    private <T extends _> DD<T> dd_(T e, boolean inline) {
        return new DD<T>("dd", e, opt(false, inline, false));
    }

    public class DEL<T extends _> extends EImp<T> implements HamletSpec.DEL {
        public DEL(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public DEL<T> $cite(String value) {
            addAttr("cite", value);
            return this;
        }

        @Override
        public DEL<T> $datetime(String value) {
            addAttr("datetime", value);
            return this;
        }

        @Override
        public DEL<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public DEL<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public DEL<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public DEL<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public DEL<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public DEL<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public DEL<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public DEL<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public DEL<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public DEL<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public DEL<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public DEL<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public DEL<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public DEL<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public DEL<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public DEL<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public TABLE<DEL<T>> table() {
            closeAttrs();
            return table_(this, false);
        }

        @Override
        public TABLE<DEL<T>> table(String selector) {
            return setSelector(table(), selector);
        }

        @Override
        public DEL<T> address(String cdata) {
            return address()._(cdata)._();
        }

        @Override
        public ADDRESS<DEL<T>> address() {
            closeAttrs();
            return address_(this, false);
        }

        @Override
        public P<DEL<T>> p(String selector) {
            return setSelector(p(), selector);
        }

        @Override
        public P<DEL<T>> p() {
            closeAttrs();
            return p_(this, false);
        }

        @Override
        public DEL<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

        @Override
        public HR<DEL<T>> hr() {
            closeAttrs();
            return hr_(this, false);
        }

        @Override
        public DEL<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

        @Override
        public DL<DEL<T>> dl(String selector) {
            return setSelector(dl(), selector);
        }

        @Override
        public DL<DEL<T>> dl() {
            closeAttrs();
            return dl_(this, false);
        }

        @Override
        public DIV<DEL<T>> div(String selector) {
            return setSelector(div(), selector);
        }

        @Override
        public DIV<DEL<T>> div() {
            closeAttrs();
            return div_(this, false);
        }

        @Override
        public BLOCKQUOTE<DEL<T>> blockquote() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public BLOCKQUOTE<DEL<T>> bq() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public DEL<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

        @Override
        public H1<DEL<T>> h1() {
            closeAttrs();
            return h1_(this, false);
        }

        @Override
        public DEL<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public DEL<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

        @Override
        public H2<DEL<T>> h2() {
            closeAttrs();
            return h2_(this, false);
        }

        @Override
        public DEL<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

        @Override
        public H3<DEL<T>> h3() {
            closeAttrs();
            return h3_(this, false);
        }

        @Override
        public DEL<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public DEL<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

        @Override
        public H4<DEL<T>> h4() {
            closeAttrs();
            return h4_(this, false);
        }

        @Override
        public DEL<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public DEL<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

        @Override
        public H5<DEL<T>> h5() {
            closeAttrs();
            return h5_(this, false);
        }

        @Override
        public DEL<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public DEL<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

        @Override
        public H6<DEL<T>> h6() {
            closeAttrs();
            return h6_(this, false);
        }

        @Override
        public DEL<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public DEL<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

        @Override
        public UL<DEL<T>> ul() {
            closeAttrs();
            return ul_(this, false);
        }

        @Override
        public UL<DEL<T>> ul(String selector) {
            return setSelector(ul(), selector);
        }

        @Override
        public OL<DEL<T>> ol() {
            closeAttrs();
            return ol_(this, false);
        }

        @Override
        public OL<DEL<T>> ol(String selector) {
            return setSelector(ol(), selector);
        }

        @Override
        public PRE<DEL<T>> pre() {
            closeAttrs();
            return pre_(this, false);
        }

        @Override
        public PRE<DEL<T>> pre(String selector) {
            return setSelector(pre(), selector);
        }

        @Override
        public FORM<DEL<T>> form() {
            closeAttrs();
            return form_(this, false);
        }

        @Override
        public FORM<DEL<T>> form(String selector) {
            return setSelector(form(), selector);
        }

        @Override
        public FIELDSET<DEL<T>> fieldset() {
            closeAttrs();
            return fieldset_(this, false);
        }

        @Override
        public FIELDSET<DEL<T>> fieldset(String selector) {
            return setSelector(fieldset(), selector);
        }

        @Override
        public DEL<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public DEL<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<DEL<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public DEL<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public DEL<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<DEL<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public DEL<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public DEL<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<DEL<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public DEL<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public DEL<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public DEL<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<DEL<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public DEL<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<DEL<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public DEL<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public DEL<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<DEL<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public DEL<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public DEL<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<DEL<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public DEL<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public DEL<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public DEL<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<DEL<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public DEL<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<DEL<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public DEL<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public DEL<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<DEL<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public DEL<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public DEL<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<DEL<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public DEL<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public DEL<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<DEL<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public DEL<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public DEL<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<DEL<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<DEL<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public DEL<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public DEL<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<DEL<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public DEL<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<DEL<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<DEL<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<DEL<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public DEL<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public DEL<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<DEL<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public DEL<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public DEL<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<DEL<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<DEL<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public DEL<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public DEL<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<DEL<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<DEL<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public DEL<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<DEL<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public DEL<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<DEL<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public DEL<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public DEL<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<DEL<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public DEL<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<DEL<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public DEL<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<DEL<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public DEL<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<DEL<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public DEL<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<DEL<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<DEL<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<DEL<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<DEL<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<DEL<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<DEL<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public DEL<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<DEL<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<DEL<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public DEL<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class INS<T extends _> extends EImp<T> implements HamletSpec.INS {
        public INS(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public INS<T> $cite(String value) {
            addAttr("cite", value);
            return this;
        }

        @Override
        public INS<T> $datetime(String value) {
            addAttr("datetime", value);
            return this;
        }

        @Override
        public INS<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public INS<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public INS<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public INS<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public INS<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public INS<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public INS<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public INS<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public INS<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public INS<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public INS<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public INS<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public INS<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public INS<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public INS<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public INS<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public TABLE<INS<T>> table() {
            closeAttrs();
            return table_(this, false);
        }

        @Override
        public TABLE<INS<T>> table(String selector) {
            return setSelector(table(), selector);
        }

        @Override
        public INS<T> address(String cdata) {
            return address()._(cdata)._();
        }

        @Override
        public ADDRESS<INS<T>> address() {
            closeAttrs();
            return address_(this, false);
        }

        @Override
        public P<INS<T>> p(String selector) {
            return setSelector(p(), selector);
        }

        @Override
        public P<INS<T>> p() {
            closeAttrs();
            return p_(this, false);
        }

        @Override
        public INS<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

        @Override
        public HR<INS<T>> hr() {
            closeAttrs();
            return hr_(this, false);
        }

        @Override
        public INS<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

        @Override
        public DL<INS<T>> dl(String selector) {
            return setSelector(dl(), selector);
        }

        @Override
        public DL<INS<T>> dl() {
            closeAttrs();
            return dl_(this, false);
        }

        @Override
        public DIV<INS<T>> div(String selector) {
            return setSelector(div(), selector);
        }

        @Override
        public DIV<INS<T>> div() {
            closeAttrs();
            return div_(this, false);
        }

        @Override
        public BLOCKQUOTE<INS<T>> blockquote() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public BLOCKQUOTE<INS<T>> bq() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public INS<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

        @Override
        public H1<INS<T>> h1() {
            closeAttrs();
            return h1_(this, false);
        }

        @Override
        public INS<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public INS<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

        @Override
        public H2<INS<T>> h2() {
            closeAttrs();
            return h2_(this, false);
        }

        @Override
        public INS<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

        @Override
        public H3<INS<T>> h3() {
            closeAttrs();
            return h3_(this, false);
        }

        @Override
        public INS<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public INS<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

        @Override
        public H4<INS<T>> h4() {
            closeAttrs();
            return h4_(this, false);
        }

        @Override
        public INS<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public INS<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

        @Override
        public H5<INS<T>> h5() {
            closeAttrs();
            return h5_(this, false);
        }

        @Override
        public INS<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public INS<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

        @Override
        public H6<INS<T>> h6() {
            closeAttrs();
            return h6_(this, false);
        }

        @Override
        public INS<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public INS<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

        @Override
        public UL<INS<T>> ul() {
            closeAttrs();
            return ul_(this, false);
        }

        @Override
        public UL<INS<T>> ul(String selector) {
            return setSelector(ul(), selector);
        }

        @Override
        public OL<INS<T>> ol() {
            closeAttrs();
            return ol_(this, false);
        }

        @Override
        public OL<INS<T>> ol(String selector) {
            return setSelector(ol(), selector);
        }

        @Override
        public PRE<INS<T>> pre() {
            closeAttrs();
            return pre_(this, false);
        }

        @Override
        public PRE<INS<T>> pre(String selector) {
            return setSelector(pre(), selector);
        }

        @Override
        public FORM<INS<T>> form() {
            closeAttrs();
            return form_(this, false);
        }

        @Override
        public FORM<INS<T>> form(String selector) {
            return setSelector(form(), selector);
        }

        @Override
        public FIELDSET<INS<T>> fieldset() {
            closeAttrs();
            return fieldset_(this, false);
        }

        @Override
        public FIELDSET<INS<T>> fieldset(String selector) {
            return setSelector(fieldset(), selector);
        }

        @Override
        public INS<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public INS<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<INS<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public INS<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public INS<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<INS<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public INS<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public INS<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<INS<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public INS<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public INS<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public INS<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<INS<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public INS<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<INS<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public INS<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public INS<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<INS<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public INS<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public INS<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<INS<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public INS<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public INS<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public INS<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<INS<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public INS<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<INS<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public INS<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public INS<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<INS<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public INS<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public INS<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<INS<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public INS<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public INS<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<INS<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public INS<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public INS<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<INS<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<INS<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public INS<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public INS<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<INS<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public INS<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<INS<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<INS<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<INS<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public INS<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public INS<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<INS<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public INS<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public INS<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<INS<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<INS<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public INS<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public INS<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<INS<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<INS<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public INS<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<INS<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public INS<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<INS<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public INS<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public INS<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<INS<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public INS<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<INS<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public INS<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<INS<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public INS<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<INS<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public INS<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<INS<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<INS<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<INS<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<INS<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<INS<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<INS<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public INS<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<INS<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<INS<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public INS<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class BLOCKQUOTE<T extends _> extends EImp<T> implements HamletSpec.BLOCKQUOTE {
        public BLOCKQUOTE(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public BLOCKQUOTE<T> $cite(String value) {
            addAttr("cite", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public BLOCKQUOTE<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public TABLE<BLOCKQUOTE<T>> table() {
            closeAttrs();
            return table_(this, false);
        }

        @Override
        public TABLE<BLOCKQUOTE<T>> table(String selector) {
            return setSelector(table(), selector);
        }

        @Override
        public BLOCKQUOTE<T> address(String cdata) {
            return address()._(cdata)._();
        }

        @Override
        public ADDRESS<BLOCKQUOTE<T>> address() {
            closeAttrs();
            return address_(this, false);
        }

        @Override
        public P<BLOCKQUOTE<T>> p(String selector) {
            return setSelector(p(), selector);
        }

        @Override
        public P<BLOCKQUOTE<T>> p() {
            closeAttrs();
            return p_(this, false);
        }

        @Override
        public BLOCKQUOTE<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

        @Override
        public HR<BLOCKQUOTE<T>> hr() {
            closeAttrs();
            return hr_(this, false);
        }

        @Override
        public BLOCKQUOTE<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

        @Override
        public DL<BLOCKQUOTE<T>> dl(String selector) {
            return setSelector(dl(), selector);
        }

        @Override
        public DL<BLOCKQUOTE<T>> dl() {
            closeAttrs();
            return dl_(this, false);
        }

        @Override
        public DIV<BLOCKQUOTE<T>> div(String selector) {
            return setSelector(div(), selector);
        }

        @Override
        public DIV<BLOCKQUOTE<T>> div() {
            closeAttrs();
            return div_(this, false);
        }

        @Override
        public BLOCKQUOTE<BLOCKQUOTE<T>> blockquote() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public BLOCKQUOTE<BLOCKQUOTE<T>> bq() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public BLOCKQUOTE<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

        @Override
        public H1<BLOCKQUOTE<T>> h1() {
            closeAttrs();
            return h1_(this, false);
        }

        @Override
        public BLOCKQUOTE<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public BLOCKQUOTE<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

        @Override
        public H2<BLOCKQUOTE<T>> h2() {
            closeAttrs();
            return h2_(this, false);
        }

        @Override
        public BLOCKQUOTE<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

        @Override
        public H3<BLOCKQUOTE<T>> h3() {
            closeAttrs();
            return h3_(this, false);
        }

        @Override
        public BLOCKQUOTE<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public BLOCKQUOTE<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

        @Override
        public H4<BLOCKQUOTE<T>> h4() {
            closeAttrs();
            return h4_(this, false);
        }

        @Override
        public BLOCKQUOTE<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public BLOCKQUOTE<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

        @Override
        public H5<BLOCKQUOTE<T>> h5() {
            closeAttrs();
            return h5_(this, false);
        }

        @Override
        public BLOCKQUOTE<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public BLOCKQUOTE<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

        @Override
        public H6<BLOCKQUOTE<T>> h6() {
            closeAttrs();
            return h6_(this, false);
        }

        @Override
        public BLOCKQUOTE<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public BLOCKQUOTE<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

        @Override
        public UL<BLOCKQUOTE<T>> ul() {
            closeAttrs();
            return ul_(this, false);
        }

        @Override
        public UL<BLOCKQUOTE<T>> ul(String selector) {
            return setSelector(ul(), selector);
        }

        @Override
        public OL<BLOCKQUOTE<T>> ol() {
            closeAttrs();
            return ol_(this, false);
        }

        @Override
        public OL<BLOCKQUOTE<T>> ol(String selector) {
            return setSelector(ol(), selector);
        }

        @Override
        public PRE<BLOCKQUOTE<T>> pre() {
            closeAttrs();
            return pre_(this, false);
        }

        @Override
        public PRE<BLOCKQUOTE<T>> pre(String selector) {
            return setSelector(pre(), selector);
        }

        @Override
        public FORM<BLOCKQUOTE<T>> form() {
            closeAttrs();
            return form_(this, false);
        }

        @Override
        public FORM<BLOCKQUOTE<T>> form(String selector) {
            return setSelector(form(), selector);
        }

        @Override
        public FIELDSET<BLOCKQUOTE<T>> fieldset() {
            closeAttrs();
            return fieldset_(this, false);
        }

        @Override
        public FIELDSET<BLOCKQUOTE<T>> fieldset(String selector) {
            return setSelector(fieldset(), selector);
        }

        @Override
        public SCRIPT<BLOCKQUOTE<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public BLOCKQUOTE<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }
    }

    public class Q<T extends _> extends EImp<T> implements HamletSpec.Q {
        public Q(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public Q<T> $cite(String value) {
            addAttr("cite", value);
            return this;
        }

        @Override
        public Q<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public Q<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public Q<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public Q<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public Q<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public Q<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public Q<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public Q<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public Q<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public Q<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public Q<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public Q<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public Q<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public Q<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public Q<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public Q<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public Q<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public Q<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<Q<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public Q<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public Q<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<Q<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public Q<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public Q<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<Q<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public Q<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public Q<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public Q<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<Q<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public Q<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<Q<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public Q<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public Q<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<Q<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public Q<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public Q<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<Q<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public Q<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public Q<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public Q<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<Q<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public Q<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<Q<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public Q<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public Q<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<Q<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public Q<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public Q<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<Q<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public Q<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public Q<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<Q<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public Q<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public Q<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<Q<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<Q<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public Q<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public Q<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<Q<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public Q<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<Q<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<Q<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<Q<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public Q<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public Q<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<Q<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public Q<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public Q<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<Q<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<Q<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public Q<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public Q<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<Q<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<Q<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public Q<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<Q<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public Q<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<Q<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public Q<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public Q<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<Q<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public Q<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<Q<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public Q<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<Q<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public Q<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<Q<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public Q<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<Q<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<Q<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<Q<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<Q<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<Q<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<Q<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public Q<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<Q<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<Q<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public Q<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class PRE<T extends _> extends EImp<T> implements HamletSpec.PRE {
        public PRE(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public PRE<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public PRE<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public PRE<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public PRE<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public PRE<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public PRE<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public PRE<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public PRE<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public PRE<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public PRE<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public PRE<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public PRE<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public PRE<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public PRE<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public PRE<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public PRE<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public PRE<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public PRE<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<PRE<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public PRE<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public PRE<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<PRE<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public PRE<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public PRE<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public PRE<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<PRE<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public PRE<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<PRE<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public PRE<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public PRE<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<PRE<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public PRE<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public PRE<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<PRE<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public PRE<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public PRE<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public PRE<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<PRE<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public PRE<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<PRE<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public PRE<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public PRE<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<PRE<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public PRE<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public PRE<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<PRE<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public PRE<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public PRE<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<PRE<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public PRE<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public PRE<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<PRE<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<PRE<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public PRE<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public PRE<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public MAP<PRE<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<PRE<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public PRE<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public PRE<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<PRE<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<PRE<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public PRE<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<PRE<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public PRE<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<PRE<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public PRE<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public PRE<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<PRE<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public PRE<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<PRE<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public PRE<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<PRE<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public PRE<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<PRE<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public PRE<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<PRE<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<PRE<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<PRE<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<PRE<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<PRE<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<PRE<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public PRE<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<PRE<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<PRE<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public PRE<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class H6<T extends _> extends EImp<T> implements HamletSpec.H6 {
        public H6(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public H6<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public H6<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public H6<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public H6<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public H6<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public H6<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public H6<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public H6<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public H6<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public H6<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public H6<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public H6<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public H6<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public H6<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public H6<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public H6<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public H6<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public H6<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<H6<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public H6<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public H6<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<H6<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public H6<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public H6<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<H6<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public H6<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public H6<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public H6<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<H6<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public H6<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<H6<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public H6<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public H6<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<H6<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public H6<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public H6<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<H6<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public H6<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public H6<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public H6<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<H6<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public H6<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<H6<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public H6<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public H6<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<H6<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public H6<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public H6<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<H6<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public H6<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public H6<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<H6<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public H6<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public H6<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<H6<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<H6<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public H6<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public H6<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<H6<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public H6<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<H6<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<H6<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<H6<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public H6<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public H6<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<H6<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public H6<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public H6<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<H6<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<H6<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public H6<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public H6<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<H6<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<H6<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public H6<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<H6<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public H6<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<H6<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public H6<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public H6<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<H6<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public H6<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<H6<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public H6<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<H6<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public H6<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<H6<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public H6<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<H6<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<H6<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<H6<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<H6<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<H6<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<H6<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public H6<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<H6<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<H6<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public H6<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class H5<T extends _> extends EImp<T> implements HamletSpec.H5 {
        public H5(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public H5<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public H5<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public H5<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public H5<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public H5<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public H5<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public H5<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public H5<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public H5<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public H5<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public H5<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public H5<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public H5<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public H5<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public H5<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public H5<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public H5<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public H5<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<H5<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public H5<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public H5<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<H5<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public H5<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public H5<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<H5<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public H5<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public H5<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public H5<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<H5<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public H5<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<H5<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public H5<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public H5<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<H5<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public H5<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public H5<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<H5<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public H5<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public H5<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public H5<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<H5<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public H5<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<H5<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public H5<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public H5<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<H5<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public H5<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public H5<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<H5<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public H5<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public H5<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<H5<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public H5<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public H5<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<H5<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<H5<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public H5<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public H5<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<H5<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public H5<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<H5<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<H5<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<H5<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public H5<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public H5<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<H5<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public H5<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public H5<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<H5<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<H5<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public H5<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public H5<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<H5<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<H5<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public H5<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<H5<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public H5<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<H5<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public H5<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public H5<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<H5<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public H5<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<H5<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public H5<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<H5<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public H5<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<H5<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public H5<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<H5<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<H5<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<H5<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<H5<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<H5<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<H5<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public H5<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<H5<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<H5<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public H5<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class H4<T extends _> extends EImp<T> implements HamletSpec.H4 {
        public H4(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public H4<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public H4<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public H4<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public H4<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public H4<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public H4<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public H4<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public H4<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public H4<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public H4<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public H4<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public H4<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public H4<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public H4<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public H4<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public H4<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public H4<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public H4<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<H4<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public H4<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public H4<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<H4<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public H4<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public H4<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<H4<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public H4<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public H4<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public H4<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<H4<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public H4<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<H4<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public H4<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public H4<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<H4<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public H4<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public H4<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<H4<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public H4<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public H4<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public H4<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<H4<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public H4<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<H4<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public H4<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public H4<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<H4<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public H4<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public H4<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<H4<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public H4<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public H4<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<H4<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public H4<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public H4<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<H4<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<H4<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public H4<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public H4<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<H4<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public H4<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<H4<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<H4<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<H4<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public H4<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public H4<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<H4<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public H4<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public H4<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<H4<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<H4<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public H4<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public H4<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<H4<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<H4<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public H4<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<H4<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public H4<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<H4<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public H4<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public H4<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<H4<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public H4<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<H4<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public H4<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<H4<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public H4<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<H4<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public H4<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<H4<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<H4<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<H4<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<H4<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<H4<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<H4<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public H4<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<H4<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<H4<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public H4<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class H3<T extends _> extends EImp<T> implements HamletSpec.H3 {
        public H3(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public H3<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public H3<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public H3<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public H3<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public H3<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public H3<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public H3<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public H3<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public H3<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public H3<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public H3<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public H3<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public H3<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public H3<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public H3<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public H3<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public H3<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public H3<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<H3<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public H3<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public H3<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<H3<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public H3<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public H3<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<H3<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public H3<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public H3<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public H3<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<H3<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public H3<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<H3<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public H3<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public H3<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<H3<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public H3<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public H3<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<H3<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public H3<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public H3<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public H3<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<H3<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public H3<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<H3<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public H3<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public H3<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<H3<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public H3<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public H3<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<H3<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public H3<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public H3<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<H3<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public H3<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public H3<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<H3<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<H3<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public H3<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public H3<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<H3<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public H3<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<H3<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<H3<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<H3<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public H3<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public H3<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<H3<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public H3<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public H3<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<H3<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<H3<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public H3<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public H3<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<H3<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<H3<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public H3<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<H3<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public H3<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<H3<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public H3<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public H3<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<H3<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public H3<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<H3<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public H3<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<H3<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public H3<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<H3<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public H3<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<H3<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<H3<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<H3<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<H3<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<H3<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<H3<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public H3<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<H3<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<H3<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public H3<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class H2<T extends _> extends EImp<T> implements HamletSpec.H2 {
        public H2(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public H2<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public H2<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public H2<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public H2<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public H2<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public H2<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public H2<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public H2<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public H2<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public H2<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public H2<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public H2<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public H2<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public H2<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public H2<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public H2<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public H2<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public H2<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<H2<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public H2<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public H2<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<H2<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public H2<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public H2<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<H2<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public H2<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public H2<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public H2<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<H2<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public H2<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<H2<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public H2<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public H2<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<H2<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public H2<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public H2<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<H2<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public H2<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public H2<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public H2<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<H2<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public H2<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<H2<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public H2<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public H2<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<H2<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public H2<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public H2<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<H2<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public H2<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public H2<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<H2<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public H2<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public H2<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<H2<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<H2<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public H2<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public H2<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<H2<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public H2<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<H2<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<H2<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<H2<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public H2<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public H2<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<H2<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public H2<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public H2<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<H2<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<H2<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public H2<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public H2<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<H2<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<H2<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public H2<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<H2<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public H2<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<H2<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public H2<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public H2<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<H2<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public H2<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<H2<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public H2<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<H2<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public H2<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<H2<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public H2<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<H2<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<H2<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<H2<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<H2<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<H2<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<H2<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public H2<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<H2<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<H2<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public H2<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class H1<T extends _> extends EImp<T> implements HamletSpec.H1 {
        public H1(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public H1<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public H1<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public H1<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public H1<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public H1<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public H1<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public H1<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public H1<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public H1<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public H1<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public H1<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public H1<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public H1<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public H1<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public H1<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public H1<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public H1<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public H1<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<H1<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public H1<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public H1<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<H1<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public H1<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public H1<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<H1<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public H1<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public H1<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public H1<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<H1<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public H1<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<H1<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public H1<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public H1<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<H1<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public H1<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public H1<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<H1<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public H1<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public H1<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public H1<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<H1<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public H1<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<H1<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public H1<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public H1<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<H1<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public H1<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public H1<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<H1<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public H1<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public H1<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<H1<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public H1<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public H1<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<H1<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<H1<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public H1<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public H1<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<H1<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public H1<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<H1<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<H1<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<H1<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public H1<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public H1<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<H1<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public H1<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public H1<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<H1<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<H1<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public H1<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public H1<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<H1<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<H1<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public H1<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<H1<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public H1<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<H1<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public H1<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public H1<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<H1<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public H1<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<H1<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public H1<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<H1<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public H1<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<H1<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public H1<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<H1<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<H1<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<H1<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<H1<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<H1<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<H1<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public H1<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<H1<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<H1<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public H1<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class P<T extends _> extends EImp<T> implements HamletSpec.P {
        public P(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public P<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public P<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public P<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public P<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public P<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public P<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public P<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public P<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public P<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public P<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public P<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public P<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public P<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public P<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public P<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public P<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public P<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public P<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<P<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public P<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public P<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<P<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public P<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public P<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<P<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public P<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public P<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public P<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<P<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public P<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<P<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public P<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public P<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<P<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public P<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public P<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<P<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public P<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public P<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public P<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<P<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public P<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<P<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public P<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public P<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<P<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public P<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public P<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<P<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public P<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public P<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<P<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public P<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public P<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<P<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<P<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public P<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public P<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<P<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public P<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<P<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<P<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<P<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public P<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public P<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<P<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public P<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public P<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<P<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<P<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public P<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public P<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<P<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<P<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public P<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<P<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public P<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<P<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public P<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public P<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<P<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public P<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<P<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public P<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<P<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public P<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<P<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public P<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<P<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<P<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<P<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<P<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<P<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<P<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public P<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<P<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<P<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public P<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class HR<T extends _> extends EImp<T> implements HamletSpec.HR {
        public HR(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public HR<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public HR<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public HR<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public HR<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public HR<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public HR<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public HR<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public HR<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public HR<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public HR<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public HR<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public HR<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public HR<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public HR<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public HR<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public HR<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }
    }

    public class PARAM<T extends _> extends EImp<T> implements HamletSpec.PARAM {
        public PARAM(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public PARAM<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public PARAM<T> $name(String value) {
            addAttr("name", value);
            return this;
        }

        @Override
        public PARAM<T> $value(String value) {
            addAttr("value", value);
            return this;
        }
    }

    public class OBJECT<T extends _> extends EImp<T> implements HamletSpec.OBJECT {
        public OBJECT(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public OBJECT<T> $type(String value) {
            addAttr("type", value);
            return this;
        }

        @Override
        public OBJECT<T> $name(String value) {
            addAttr("name", value);
            return this;
        }

        @Override
        public OBJECT<T> $tabindex(int value) {
            addAttr("tabindex", value);
            return this;
        }

        @Override
        public OBJECT<T> $data(String value) {
            addAttr("data", value);
            return this;
        }

        @Override
        public OBJECT<T> $height(String value) {
            addAttr("height", value);
            return this;
        }

        @Override
        public OBJECT<T> $height(int value) {
            addAttr("height", value);
            return this;
        }

        @Override
        public OBJECT<T> $width(int value) {
            addAttr("width", value);
            return this;
        }

        @Override
        public OBJECT<T> $width(String value) {
            addAttr("width", value);
            return this;
        }

        @Override
        public OBJECT<T> $usemap(String value) {
            addAttr("usemap", value);
            return this;
        }

        @Override
        public OBJECT<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public OBJECT<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public OBJECT<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public OBJECT<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public OBJECT<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public OBJECT<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public OBJECT<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public OBJECT<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public OBJECT<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public OBJECT<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public OBJECT<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public OBJECT<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public OBJECT<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public OBJECT<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public OBJECT<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public OBJECT<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public PARAM<OBJECT<T>> param() {
            closeAttrs();
            return param_(this, false);
        }

        @Override
        public OBJECT<T> param(String name, String value) {
            return param().$name(name).$value(value)._();
        }

        @Override
        public TABLE<OBJECT<T>> table() {
            closeAttrs();
            return table_(this, false);
        }

        @Override
        public TABLE<OBJECT<T>> table(String selector) {
            return setSelector(table(), selector);
        }

        @Override
        public OBJECT<T> address(String cdata) {
            return address()._(cdata)._();
        }

        @Override
        public ADDRESS<OBJECT<T>> address() {
            closeAttrs();
            return address_(this, false);
        }

        @Override
        public P<OBJECT<T>> p(String selector) {
            return setSelector(p(), selector);
        }

        @Override
        public P<OBJECT<T>> p() {
            closeAttrs();
            return p_(this, false);
        }

        @Override
        public OBJECT<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

        @Override
        public HR<OBJECT<T>> hr() {
            closeAttrs();
            return hr_(this, false);
        }

        @Override
        public OBJECT<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

        @Override
        public DL<OBJECT<T>> dl(String selector) {
            return setSelector(dl(), selector);
        }

        @Override
        public DL<OBJECT<T>> dl() {
            closeAttrs();
            return dl_(this, false);
        }

        @Override
        public DIV<OBJECT<T>> div(String selector) {
            return setSelector(div(), selector);
        }

        @Override
        public DIV<OBJECT<T>> div() {
            closeAttrs();
            return div_(this, false);
        }

        @Override
        public BLOCKQUOTE<OBJECT<T>> blockquote() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public BLOCKQUOTE<OBJECT<T>> bq() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public OBJECT<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

        @Override
        public H1<OBJECT<T>> h1() {
            closeAttrs();
            return h1_(this, false);
        }

        @Override
        public OBJECT<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public OBJECT<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

        @Override
        public H2<OBJECT<T>> h2() {
            closeAttrs();
            return h2_(this, false);
        }

        @Override
        public OBJECT<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

        @Override
        public H3<OBJECT<T>> h3() {
            closeAttrs();
            return h3_(this, false);
        }

        @Override
        public OBJECT<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public OBJECT<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

        @Override
        public H4<OBJECT<T>> h4() {
            closeAttrs();
            return h4_(this, false);
        }

        @Override
        public OBJECT<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public OBJECT<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

        @Override
        public H5<OBJECT<T>> h5() {
            closeAttrs();
            return h5_(this, false);
        }

        @Override
        public OBJECT<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public OBJECT<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

        @Override
        public H6<OBJECT<T>> h6() {
            closeAttrs();
            return h6_(this, false);
        }

        @Override
        public OBJECT<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public OBJECT<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

        @Override
        public UL<OBJECT<T>> ul() {
            closeAttrs();
            return ul_(this, false);
        }

        @Override
        public UL<OBJECT<T>> ul(String selector) {
            return setSelector(ul(), selector);
        }

        @Override
        public OL<OBJECT<T>> ol() {
            closeAttrs();
            return ol_(this, false);
        }

        @Override
        public OL<OBJECT<T>> ol(String selector) {
            return setSelector(ol(), selector);
        }

        @Override
        public PRE<OBJECT<T>> pre() {
            closeAttrs();
            return pre_(this, false);
        }

        @Override
        public PRE<OBJECT<T>> pre(String selector) {
            return setSelector(pre(), selector);
        }

        @Override
        public FORM<OBJECT<T>> form() {
            closeAttrs();
            return form_(this, false);
        }

        @Override
        public FORM<OBJECT<T>> form(String selector) {
            return setSelector(form(), selector);
        }

        @Override
        public FIELDSET<OBJECT<T>> fieldset() {
            closeAttrs();
            return fieldset_(this, false);
        }

        @Override
        public FIELDSET<OBJECT<T>> fieldset(String selector) {
            return setSelector(fieldset(), selector);
        }

        @Override
        public OBJECT<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public OBJECT<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<OBJECT<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public OBJECT<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public OBJECT<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<OBJECT<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public OBJECT<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public OBJECT<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<OBJECT<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public OBJECT<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public OBJECT<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public OBJECT<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<OBJECT<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public OBJECT<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<OBJECT<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public OBJECT<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public OBJECT<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<OBJECT<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public OBJECT<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public OBJECT<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<OBJECT<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public OBJECT<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public OBJECT<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public OBJECT<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<OBJECT<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public OBJECT<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<OBJECT<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public OBJECT<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public OBJECT<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<OBJECT<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public OBJECT<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public OBJECT<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<OBJECT<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public OBJECT<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public OBJECT<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<OBJECT<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public OBJECT<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public OBJECT<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<OBJECT<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<OBJECT<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public OBJECT<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public OBJECT<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<OBJECT<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public OBJECT<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<OBJECT<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<OBJECT<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<OBJECT<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public OBJECT<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public OBJECT<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<OBJECT<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public OBJECT<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public OBJECT<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<OBJECT<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<OBJECT<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public OBJECT<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public OBJECT<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<OBJECT<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<OBJECT<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public OBJECT<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<OBJECT<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public OBJECT<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<OBJECT<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public OBJECT<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public OBJECT<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<OBJECT<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public OBJECT<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<OBJECT<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public OBJECT<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<OBJECT<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public OBJECT<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<OBJECT<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public OBJECT<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<OBJECT<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<OBJECT<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<OBJECT<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<OBJECT<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<OBJECT<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<OBJECT<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public OBJECT<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<OBJECT<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<OBJECT<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public OBJECT<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    private <T extends _> PARAM<T> param_(T e, boolean inline) {
        return new PARAM<T>("param", e, opt(false, inline, false));
    }

    public class IMG<T extends _> extends EImp<T> implements HamletSpec.IMG {
        public IMG(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public IMG<T> $src(String value) {
            addAttr("src", value);
            return this;
        }

        @Override
        public IMG<T> $alt(String value) {
            addAttr("alt", value);
            return this;
        }

        @Override
        public IMG<T> $ismap() {
            addAttr("ismap", null);
            return this;
        }

        @Override
        public IMG<T> $height(String value) {
            addAttr("height", value);
            return this;
        }

        @Override
        public IMG<T> $height(int value) {
            addAttr("height", value);
            return this;
        }

        @Override
        public IMG<T> $width(int value) {
            addAttr("width", value);
            return this;
        }

        @Override
        public IMG<T> $width(String value) {
            addAttr("width", value);
            return this;
        }

        @Override
        public IMG<T> $usemap(String value) {
            addAttr("usemap", value);
            return this;
        }

        @Override
        public IMG<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public IMG<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public IMG<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public IMG<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public IMG<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public IMG<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public IMG<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public IMG<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public IMG<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public IMG<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public IMG<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public IMG<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public IMG<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public IMG<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public IMG<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public IMG<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }
    }

    public class LINK<T extends _> extends EImp<T> implements HamletSpec.LINK {
        public LINK(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public LINK<T> $rel(EnumSet<LinkType> value) {
            addRelAttr("rel", value);
            return this;
        }

        @Override
        public LINK<T> $rel(String value) {
            addAttr("rel", value);
            return this;
        }

        @Override
        public LINK<T> $href(String value) {
            addAttr("href", value);
            return this;
        }

        @Override
        public LINK<T> $type(String value) {
            addAttr("type", value);
            return this;
        }

        @Override
        public LINK<T> $media(EnumSet<Media> value) {
            addMediaAttr("media", value);
            return this;
        }

        @Override
        public LINK<T> $media(String value) {
            addAttr("media", value);
            return this;
        }

        @Override
        public LINK<T> $hreflang(String value) {
            addAttr("hreflang", value);
            return this;
        }

        @Override
        public LINK<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public LINK<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public LINK<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public LINK<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public LINK<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public LINK<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public LINK<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public LINK<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public LINK<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public LINK<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public LINK<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public LINK<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public LINK<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public LINK<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public LINK<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public LINK<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }
    }

    public class AREA<T extends _> extends EImp<T> implements HamletSpec.AREA {
        public AREA(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public AREA<T> $href(String value) {
            addAttr("href", value);
            return this;
        }

        @Override
        public AREA<T> $tabindex(int value) {
            addAttr("tabindex", value);
            return this;
        }

        @Override
        public AREA<T> $accesskey(String value) {
            addAttr("accesskey", value);
            return this;
        }

        @Override
        public AREA<T> $onfocus(String value) {
            addAttr("onfocus", value);
            return this;
        }

        @Override
        public AREA<T> $onblur(String value) {
            addAttr("onblur", value);
            return this;
        }

        @Override
        public AREA<T> $alt(String value) {
            addAttr("alt", value);
            return this;
        }

        @Override
        public AREA<T> $shape(Shape value) {
            addAttr("shape", value);
            return this;
        }

        @Override
        public AREA<T> $coords(String value) {
            addAttr("coords", value);
            return this;
        }

        @Override
        public AREA<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public AREA<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public AREA<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public AREA<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public AREA<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public AREA<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public AREA<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public AREA<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public AREA<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public AREA<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public AREA<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public AREA<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public AREA<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public AREA<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public AREA<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public AREA<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }
    }

    private <T extends _> AREA<T> area_(T e, boolean inline) {
        return new AREA<T>("area", e, opt(false, inline, false));
    }

    public class MAP<T extends _> extends EImp<T> implements HamletSpec.MAP {
        public MAP(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public MAP<T> $name(String value) {
            addAttr("name", value);
            return this;
        }

        @Override
        public AREA<MAP<T>> area() {
            closeAttrs();
            return area_(this, false);
        }

        @Override
        public AREA<MAP<T>> area(String selector) {
            return setSelector(area(), selector);
        }

        @Override
        public MAP<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public MAP<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public MAP<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public MAP<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public MAP<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public MAP<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public MAP<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public MAP<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public MAP<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public MAP<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public MAP<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public MAP<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public MAP<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public MAP<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public MAP<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public MAP<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public TABLE<MAP<T>> table() {
            closeAttrs();
            return table_(this, false);
        }

        @Override
        public TABLE<MAP<T>> table(String selector) {
            return setSelector(table(), selector);
        }

        @Override
        public MAP<T> address(String cdata) {
            return address()._(cdata)._();
        }

        @Override
        public ADDRESS<MAP<T>> address() {
            closeAttrs();
            return address_(this, false);
        }

        @Override
        public P<MAP<T>> p(String selector) {
            return setSelector(p(), selector);
        }

        @Override
        public P<MAP<T>> p() {
            closeAttrs();
            return p_(this, false);
        }

        @Override
        public MAP<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

        @Override
        public HR<MAP<T>> hr() {
            closeAttrs();
            return hr_(this, false);
        }

        @Override
        public MAP<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

        @Override
        public DL<MAP<T>> dl(String selector) {
            return setSelector(dl(), selector);
        }

        @Override
        public DL<MAP<T>> dl() {
            closeAttrs();
            return dl_(this, false);
        }

        @Override
        public DIV<MAP<T>> div(String selector) {
            return setSelector(div(), selector);
        }

        @Override
        public DIV<MAP<T>> div() {
            closeAttrs();
            return div_(this, false);
        }

        @Override
        public BLOCKQUOTE<MAP<T>> blockquote() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public BLOCKQUOTE<MAP<T>> bq() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public MAP<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

        @Override
        public H1<MAP<T>> h1() {
            closeAttrs();
            return h1_(this, false);
        }

        @Override
        public MAP<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public MAP<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

        @Override
        public H2<MAP<T>> h2() {
            closeAttrs();
            return h2_(this, false);
        }

        @Override
        public MAP<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

        @Override
        public H3<MAP<T>> h3() {
            closeAttrs();
            return h3_(this, false);
        }

        @Override
        public MAP<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public MAP<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

        @Override
        public H4<MAP<T>> h4() {
            closeAttrs();
            return h4_(this, false);
        }

        @Override
        public MAP<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public MAP<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

        @Override
        public H5<MAP<T>> h5() {
            closeAttrs();
            return h5_(this, false);
        }

        @Override
        public MAP<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public MAP<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

        @Override
        public H6<MAP<T>> h6() {
            closeAttrs();
            return h6_(this, false);
        }

        @Override
        public MAP<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public MAP<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

        @Override
        public UL<MAP<T>> ul() {
            closeAttrs();
            return ul_(this, false);
        }

        @Override
        public UL<MAP<T>> ul(String selector) {
            return setSelector(ul(), selector);
        }

        @Override
        public OL<MAP<T>> ol() {
            closeAttrs();
            return ol_(this, false);
        }

        @Override
        public OL<MAP<T>> ol(String selector) {
            return setSelector(ol(), selector);
        }

        @Override
        public PRE<MAP<T>> pre() {
            closeAttrs();
            return pre_(this, false);
        }

        @Override
        public PRE<MAP<T>> pre(String selector) {
            return setSelector(pre(), selector);
        }

        @Override
        public FORM<MAP<T>> form() {
            closeAttrs();
            return form_(this, false);
        }

        @Override
        public FORM<MAP<T>> form(String selector) {
            return setSelector(form(), selector);
        }

        @Override
        public FIELDSET<MAP<T>> fieldset() {
            closeAttrs();
            return fieldset_(this, false);
        }

        @Override
        public FIELDSET<MAP<T>> fieldset(String selector) {
            return setSelector(fieldset(), selector);
        }
    }

    public class A<T extends _> extends EImp<T> implements HamletSpec.A {
        public A(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public A<T> $rel(EnumSet<LinkType> value) {
            addRelAttr("rel", value);
            return this;
        }

        @Override
        public A<T> $rel(String value) {
            addAttr("rel", value);
            return this;
        }

        @Override
        public A<T> $href(String value) {
            addAttr("href", value);
            return this;
        }

        @Override
        public A<T> $type(String value) {
            addAttr("type", value);
            return this;
        }

        @Override
        public A<T> $tabindex(int value) {
            addAttr("tabindex", value);
            return this;
        }

        @Override
        public A<T> $accesskey(String value) {
            addAttr("accesskey", value);
            return this;
        }

        @Override
        public A<T> $onfocus(String value) {
            addAttr("onfocus", value);
            return this;
        }

        @Override
        public A<T> $onblur(String value) {
            addAttr("onblur", value);
            return this;
        }

        @Override
        public A<T> $hreflang(String value) {
            addAttr("hreflang", value);
            return this;
        }

        @Override
        public A<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public A<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public A<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public A<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public A<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public A<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public A<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public A<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public A<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public A<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public A<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public A<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public A<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public A<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public A<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public A<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public A<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public A<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<A<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public A<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public A<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<A<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public A<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public A<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<A<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public A<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public A<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public A<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<A<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public A<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<A<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public A<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public A<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<A<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public A<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public A<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<A<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public A<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public A<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public A<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<A<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public A<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<A<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public A<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public A<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<A<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public A<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public A<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<A<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public A<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public A<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<A<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public A<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public A<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public IMG<A<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public A<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<A<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<A<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public MAP<A<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<A<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public A<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public A<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<A<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<A<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public A<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<A<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public A<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<A<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public A<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public A<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<A<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public A<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<A<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public A<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<A<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public A<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public SUB<A<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public A<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public A<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<A<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public A<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public A<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public LABEL<A<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public A<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<A<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<A<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<A<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<A<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<A<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<A<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public A<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<A<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<A<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public A<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class DIV<T extends _> extends EImp<T> implements HamletSpec.DIV {
        public DIV(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public DIV<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public DIV<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public DIV<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public DIV<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public DIV<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public DIV<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public DIV<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public DIV<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public DIV<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public DIV<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public DIV<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public DIV<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public DIV<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public DIV<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public DIV<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public DIV<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public TABLE<DIV<T>> table() {
            closeAttrs();
            return table_(this, false);
        }

        @Override
        public TABLE<DIV<T>> table(String selector) {
            return setSelector(table(), selector);
        }

        @Override
        public DIV<T> address(String cdata) {
            return address()._(cdata)._();
        }

        @Override
        public ADDRESS<DIV<T>> address() {
            closeAttrs();
            return address_(this, false);
        }

        @Override
        public P<DIV<T>> p(String selector) {
            return setSelector(p(), selector);
        }

        @Override
        public P<DIV<T>> p() {
            closeAttrs();
            return p_(this, false);
        }

        @Override
        public DIV<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

        @Override
        public HR<DIV<T>> hr() {
            closeAttrs();
            return hr_(this, false);
        }

        @Override
        public DIV<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

        @Override
        public DL<DIV<T>> dl(String selector) {
            return setSelector(dl(), selector);
        }

        @Override
        public DL<DIV<T>> dl() {
            closeAttrs();
            return dl_(this, false);
        }

        @Override
        public DIV<DIV<T>> div(String selector) {
            return setSelector(div(), selector);
        }

        @Override
        public DIV<DIV<T>> div() {
            closeAttrs();
            return div_(this, false);
        }

        @Override
        public BLOCKQUOTE<DIV<T>> blockquote() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public BLOCKQUOTE<DIV<T>> bq() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public DIV<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

        @Override
        public H1<DIV<T>> h1() {
            closeAttrs();
            return h1_(this, false);
        }

        @Override
        public DIV<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public DIV<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

        @Override
        public H2<DIV<T>> h2() {
            closeAttrs();
            return h2_(this, false);
        }

        @Override
        public DIV<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

        @Override
        public H3<DIV<T>> h3() {
            closeAttrs();
            return h3_(this, false);
        }

        @Override
        public DIV<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public DIV<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

        @Override
        public H4<DIV<T>> h4() {
            closeAttrs();
            return h4_(this, false);
        }

        @Override
        public DIV<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public DIV<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

        @Override
        public H5<DIV<T>> h5() {
            closeAttrs();
            return h5_(this, false);
        }

        @Override
        public DIV<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public DIV<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

        @Override
        public H6<DIV<T>> h6() {
            closeAttrs();
            return h6_(this, false);
        }

        @Override
        public DIV<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public DIV<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

        @Override
        public UL<DIV<T>> ul() {
            closeAttrs();
            return ul_(this, false);
        }

        @Override
        public UL<DIV<T>> ul(String selector) {
            return setSelector(ul(), selector);
        }

        @Override
        public OL<DIV<T>> ol() {
            closeAttrs();
            return ol_(this, false);
        }

        @Override
        public OL<DIV<T>> ol(String selector) {
            return setSelector(ol(), selector);
        }

        @Override
        public PRE<DIV<T>> pre() {
            closeAttrs();
            return pre_(this, false);
        }

        @Override
        public PRE<DIV<T>> pre(String selector) {
            return setSelector(pre(), selector);
        }

        @Override
        public FORM<DIV<T>> form() {
            closeAttrs();
            return form_(this, false);
        }

        @Override
        public FORM<DIV<T>> form(String selector) {
            return setSelector(form(), selector);
        }

        @Override
        public FIELDSET<DIV<T>> fieldset() {
            closeAttrs();
            return fieldset_(this, false);
        }

        @Override
        public FIELDSET<DIV<T>> fieldset(String selector) {
            return setSelector(fieldset(), selector);
        }

        @Override
        public DIV<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public DIV<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<DIV<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public DIV<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public DIV<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<DIV<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public DIV<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public DIV<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<DIV<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public DIV<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public DIV<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public DIV<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<DIV<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public DIV<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<DIV<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public DIV<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public DIV<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<DIV<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public DIV<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public DIV<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<DIV<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public DIV<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public DIV<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public DIV<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<DIV<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public DIV<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<DIV<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public DIV<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public DIV<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<DIV<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public DIV<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public DIV<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<DIV<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public DIV<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public DIV<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<DIV<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public DIV<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public DIV<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<DIV<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<DIV<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public DIV<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public DIV<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<DIV<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public DIV<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<DIV<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<DIV<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<DIV<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public DIV<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public DIV<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<DIV<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public DIV<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public DIV<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<DIV<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<DIV<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public DIV<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public DIV<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<DIV<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<DIV<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public DIV<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<DIV<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public DIV<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<DIV<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public DIV<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public DIV<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<DIV<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public DIV<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<DIV<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public DIV<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<DIV<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public DIV<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<DIV<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public DIV<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<DIV<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<DIV<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<DIV<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<DIV<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<DIV<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<DIV<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public DIV<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<DIV<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<DIV<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public DIV<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class ADDRESS<T extends _> extends EImp<T> implements HamletSpec.ADDRESS {
        public ADDRESS(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public ADDRESS<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public ADDRESS<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public ADDRESS<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public ADDRESS<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public ADDRESS<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public ADDRESS<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public ADDRESS<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public ADDRESS<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public ADDRESS<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public ADDRESS<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public ADDRESS<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public ADDRESS<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public ADDRESS<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public ADDRESS<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public ADDRESS<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public ADDRESS<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public ADDRESS<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public ADDRESS<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<ADDRESS<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public ADDRESS<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public ADDRESS<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<ADDRESS<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public ADDRESS<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public ADDRESS<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<ADDRESS<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public ADDRESS<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public ADDRESS<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public ADDRESS<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<ADDRESS<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public ADDRESS<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<ADDRESS<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public ADDRESS<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public ADDRESS<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<ADDRESS<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public ADDRESS<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public ADDRESS<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<ADDRESS<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public ADDRESS<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public ADDRESS<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public ADDRESS<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<ADDRESS<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public ADDRESS<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<ADDRESS<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public ADDRESS<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public ADDRESS<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<ADDRESS<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public ADDRESS<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public ADDRESS<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<ADDRESS<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public ADDRESS<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public ADDRESS<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<ADDRESS<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public ADDRESS<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public ADDRESS<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<ADDRESS<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<ADDRESS<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public ADDRESS<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public ADDRESS<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<ADDRESS<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public ADDRESS<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<ADDRESS<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<ADDRESS<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<ADDRESS<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public ADDRESS<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public ADDRESS<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<ADDRESS<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public ADDRESS<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public ADDRESS<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<ADDRESS<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<ADDRESS<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public ADDRESS<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public ADDRESS<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<ADDRESS<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<ADDRESS<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public ADDRESS<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<ADDRESS<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public ADDRESS<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<ADDRESS<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public ADDRESS<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public ADDRESS<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<ADDRESS<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public ADDRESS<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<ADDRESS<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public ADDRESS<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<ADDRESS<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public ADDRESS<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<ADDRESS<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public ADDRESS<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<ADDRESS<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<ADDRESS<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<ADDRESS<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<ADDRESS<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<ADDRESS<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<ADDRESS<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public ADDRESS<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<ADDRESS<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<ADDRESS<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public ADDRESS<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class BODY<T extends _> extends EImp<T> implements HamletSpec.BODY {
        public BODY(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public BODY<T> $onload(String value) {
            addAttr("onload", value);
            return this;
        }

        @Override
        public BODY<T> $onunload(String value) {
            addAttr("onunload", value);
            return this;
        }

        @Override
        public BODY<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public BODY<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public BODY<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public BODY<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public BODY<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public BODY<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public BODY<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public BODY<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public BODY<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public BODY<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public BODY<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public BODY<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public BODY<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public BODY<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public BODY<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public BODY<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public TABLE<BODY<T>> table() {
            closeAttrs();
            return table_(this, false);
        }

        @Override
        public TABLE<BODY<T>> table(String selector) {
            return setSelector(table(), selector);
        }

        @Override
        public BODY<T> address(String cdata) {
            return address()._(cdata)._();
        }

        @Override
        public ADDRESS<BODY<T>> address() {
            closeAttrs();
            return address_(this, false);
        }

        @Override
        public P<BODY<T>> p(String selector) {
            return setSelector(p(), selector);
        }

        @Override
        public P<BODY<T>> p() {
            closeAttrs();
            return p_(this, false);
        }

        @Override
        public BODY<T> _(Class<? extends SubView> cls) {
            _v(cls);
            return this;
        }

        @Override
        public HR<BODY<T>> hr() {
            closeAttrs();
            return hr_(this, false);
        }

        @Override
        public BODY<T> hr(String selector) {
            return setSelector(hr(), selector)._();
        }

        @Override
        public DL<BODY<T>> dl(String selector) {
            return setSelector(dl(), selector);
        }

        @Override
        public DL<BODY<T>> dl() {
            closeAttrs();
            return dl_(this, false);
        }

        @Override
        public DIV<BODY<T>> div(String selector) {
            return setSelector(div(), selector);
        }

        @Override
        public DIV<BODY<T>> div() {
            closeAttrs();
            return div_(this, false);
        }

        @Override
        public BLOCKQUOTE<BODY<T>> blockquote() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public BLOCKQUOTE<BODY<T>> bq() {
            closeAttrs();
            return blockquote_(this, false);
        }

        @Override
        public BODY<T> h1(String cdata) {
            return h1()._(cdata)._();
        }

        @Override
        public H1<BODY<T>> h1() {
            closeAttrs();
            return h1_(this, false);
        }

        @Override
        public BODY<T> h1(String selector, String cdata) {
            return setSelector(h1(), selector)._(cdata)._();
        }

        @Override
        public BODY<T> h2(String cdata) {
            return h2()._(cdata)._();
        }

        @Override
        public H2<BODY<T>> h2() {
            closeAttrs();
            return h2_(this, false);
        }

        @Override
        public BODY<T> h2(String selector, String cdata) {
            return setSelector(h2(), selector)._(cdata)._();
        }

        @Override
        public H3<BODY<T>> h3() {
            closeAttrs();
            return h3_(this, false);
        }

        @Override
        public BODY<T> h3(String cdata) {
            return h3()._(cdata)._();
        }

        @Override
        public BODY<T> h3(String selector, String cdata) {
            return setSelector(h3(), selector)._(cdata)._();
        }

        @Override
        public H4<BODY<T>> h4() {
            closeAttrs();
            return h4_(this, false);
        }

        @Override
        public BODY<T> h4(String cdata) {
            return h4()._(cdata)._();
        }

        @Override
        public BODY<T> h4(String selector, String cdata) {
            return setSelector(h4(), selector)._(cdata)._();
        }

        @Override
        public H5<BODY<T>> h5() {
            closeAttrs();
            return h5_(this, false);
        }

        @Override
        public BODY<T> h5(String cdata) {
            return h5()._(cdata)._();
        }

        @Override
        public BODY<T> h5(String selector, String cdata) {
            return setSelector(h5(), selector)._(cdata)._();
        }

        @Override
        public H6<BODY<T>> h6() {
            closeAttrs();
            return h6_(this, false);
        }

        @Override
        public BODY<T> h6(String cdata) {
            return h6()._(cdata)._();
        }

        @Override
        public BODY<T> h6(String selector, String cdata) {
            return setSelector(h6(), selector)._(cdata)._();
        }

        @Override
        public UL<BODY<T>> ul() {
            closeAttrs();
            return ul_(this, false);
        }

        @Override
        public UL<BODY<T>> ul(String selector) {
            return setSelector(ul(), selector);
        }

        @Override
        public OL<BODY<T>> ol() {
            closeAttrs();
            return ol_(this, false);
        }

        @Override
        public OL<BODY<T>> ol(String selector) {
            return setSelector(ol(), selector);
        }

        @Override
        public PRE<BODY<T>> pre() {
            closeAttrs();
            return pre_(this, false);
        }

        @Override
        public PRE<BODY<T>> pre(String selector) {
            return setSelector(pre(), selector);
        }

        @Override
        public FORM<BODY<T>> form() {
            closeAttrs();
            return form_(this, false);
        }

        @Override
        public FORM<BODY<T>> form(String selector) {
            return setSelector(form(), selector);
        }

        @Override
        public FIELDSET<BODY<T>> fieldset() {
            closeAttrs();
            return fieldset_(this, false);
        }

        @Override
        public FIELDSET<BODY<T>> fieldset(String selector) {
            return setSelector(fieldset(), selector);
        }

        @Override
        public SCRIPT<BODY<T>> script() {
            closeAttrs();
            return script_(this, false);
        }

        @Override
        public BODY<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<BODY<T>> ins() {
            closeAttrs();
            return ins_(this, false);
        }

        @Override
        public BODY<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<BODY<T>> del() {
            closeAttrs();
            return del_(this, false);
        }

        @Override
        public BODY<T> del(String cdata) {
            return del()._(cdata)._();
        }
    }

    private <T extends _> TABLE<T> table_(T e, boolean inline) {
        return new TABLE<T>("table", e, opt(true, inline, false));
    }

    private <T extends _> ADDRESS<T> address_(T e, boolean inline) {
        return new ADDRESS<T>("address", e, opt(true, inline, false));
    }

    private <T extends _> P<T> p_(T e, boolean inline) {
        return new P<T>("p", e, opt(false, inline, false));
    }

    private <T extends _> HR<T> hr_(T e, boolean inline) {
        return new HR<T>("hr", e, opt(false, inline, false));
    }

    private <T extends _> DL<T> dl_(T e, boolean inline) {
        return new DL<T>("dl", e, opt(true, inline, false));
    }

    private <T extends _> DIV<T> div_(T e, boolean inline) {
        return new DIV<T>("div", e, opt(true, inline, false));
    }

    private <T extends _> BLOCKQUOTE<T> blockquote_(T e, boolean inline) {
        return new BLOCKQUOTE<T>("blockquote", e, opt(true, inline, false));
    }

    private <T extends _> BLOCKQUOTE<T> bq_(T e, boolean inline) {
        return new BLOCKQUOTE<T>("blockquote", e, opt(true, inline, false));
    }

    private <T extends _> FIELDSET<T> fieldset_(T e, boolean inline) {
        return new FIELDSET<T>("fieldset", e, opt(true, inline, false));
    }

    private <T extends _> FORM<T> form_(T e, boolean inline) {
        return new FORM<T>("form", e, opt(true, inline, false));
    }

    public class BR<T extends _> extends EImp<T> implements HamletSpec.BR {
        public BR(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public BR<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public BR<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public BR<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public BR<T> $style(String value) {
            addAttr("style", value);
            return this;
        }
    }

    public class BDO<T extends _> extends EImp<T> implements HamletSpec.BDO {
        public BDO(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public BDO<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public BDO<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public BDO<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public BDO<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public BDO<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public BDO<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public BDO<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public BDO<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<BDO<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public BDO<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public BDO<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<BDO<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public BDO<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public BDO<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<BDO<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public BDO<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public BDO<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public BDO<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<BDO<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public BDO<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<BDO<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public BDO<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public BDO<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<BDO<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public BDO<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public BDO<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<BDO<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public BDO<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public BDO<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public BDO<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<BDO<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public BDO<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<BDO<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public BDO<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public BDO<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<BDO<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public BDO<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public BDO<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<BDO<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public BDO<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public BDO<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<BDO<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public BDO<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public BDO<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<BDO<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<BDO<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public BDO<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public BDO<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<BDO<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public BDO<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<BDO<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<BDO<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<BDO<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public BDO<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public BDO<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<BDO<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public BDO<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public BDO<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<BDO<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<BDO<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public BDO<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public BDO<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<BDO<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<BDO<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public BDO<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<BDO<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public BDO<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<BDO<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public BDO<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public BDO<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<BDO<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public BDO<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<BDO<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public BDO<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<BDO<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public BDO<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<BDO<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public BDO<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<BDO<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<BDO<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<BDO<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<BDO<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<BDO<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<BDO<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public BDO<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<BDO<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<BDO<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public BDO<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class SPAN<T extends _> extends EImp<T> implements HamletSpec.SPAN {
        public SPAN(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public SPAN<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public SPAN<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public SPAN<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public SPAN<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public SPAN<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public SPAN<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public SPAN<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public SPAN<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public SPAN<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public SPAN<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public SPAN<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public SPAN<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public SPAN<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public SPAN<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public SPAN<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public SPAN<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public SPAN<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public SPAN<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<SPAN<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public SPAN<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public SPAN<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<SPAN<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public SPAN<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public SPAN<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<SPAN<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public SPAN<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public SPAN<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public SPAN<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<SPAN<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public SPAN<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<SPAN<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public SPAN<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public SPAN<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<SPAN<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public SPAN<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public SPAN<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<SPAN<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public SPAN<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public SPAN<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public SPAN<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<SPAN<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public SPAN<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<SPAN<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public SPAN<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public SPAN<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<SPAN<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public SPAN<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public SPAN<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<SPAN<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public SPAN<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public SPAN<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<SPAN<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public SPAN<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public SPAN<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<SPAN<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<SPAN<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public SPAN<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public SPAN<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<SPAN<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public SPAN<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<SPAN<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<SPAN<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<SPAN<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public SPAN<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public SPAN<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<SPAN<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public SPAN<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public SPAN<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<SPAN<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<SPAN<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public SPAN<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public SPAN<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<SPAN<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<SPAN<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public SPAN<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<SPAN<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public SPAN<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<SPAN<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public SPAN<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public SPAN<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<SPAN<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public SPAN<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<SPAN<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public SPAN<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<SPAN<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public SPAN<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<SPAN<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public SPAN<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<SPAN<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<SPAN<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<SPAN<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<SPAN<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<SPAN<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<SPAN<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public SPAN<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<SPAN<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<SPAN<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public SPAN<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class SUP<T extends _> extends EImp<T> implements HamletSpec.SUP {
        public SUP(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public SUP<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public SUP<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public SUP<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public SUP<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public SUP<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public SUP<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public SUP<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public SUP<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public SUP<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public SUP<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public SUP<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public SUP<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public SUP<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public SUP<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public SUP<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public SUP<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public SUP<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public SUP<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<SUP<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public SUP<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public SUP<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<SUP<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public SUP<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public SUP<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<SUP<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public SUP<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public SUP<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public SUP<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<SUP<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public SUP<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<SUP<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public SUP<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public SUP<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<SUP<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public SUP<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public SUP<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<SUP<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public SUP<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public SUP<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public SUP<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<SUP<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public SUP<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<SUP<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public SUP<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public SUP<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<SUP<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public SUP<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public SUP<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<SUP<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public SUP<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public SUP<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<SUP<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public SUP<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public SUP<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<SUP<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<SUP<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public SUP<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public SUP<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<SUP<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public SUP<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<SUP<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<SUP<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<SUP<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public SUP<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public SUP<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<SUP<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public SUP<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public SUP<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<SUP<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<SUP<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public SUP<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public SUP<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<SUP<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<SUP<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public SUP<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<SUP<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public SUP<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<SUP<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public SUP<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public SUP<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<SUP<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public SUP<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<SUP<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public SUP<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<SUP<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public SUP<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<SUP<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public SUP<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<SUP<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<SUP<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<SUP<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<SUP<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<SUP<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<SUP<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public SUP<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<SUP<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<SUP<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public SUP<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class SUB<T extends _> extends EImp<T> implements HamletSpec.SUB {
        public SUB(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public SUB<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public SUB<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public SUB<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public SUB<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public SUB<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public SUB<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public SUB<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public SUB<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public SUB<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public SUB<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public SUB<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public SUB<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public SUB<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public SUB<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public SUB<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public SUB<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public SUB<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public SUB<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<SUB<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public SUB<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public SUB<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<SUB<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public SUB<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public SUB<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<SUB<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public SUB<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public SUB<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public SUB<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<SUB<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public SUB<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<SUB<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public SUB<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public SUB<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<SUB<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public SUB<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public SUB<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<SUB<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public SUB<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public SUB<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public SUB<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<SUB<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public SUB<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<SUB<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public SUB<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public SUB<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<SUB<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public SUB<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public SUB<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<SUB<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public SUB<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public SUB<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<SUB<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public SUB<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public SUB<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<SUB<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<SUB<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public SUB<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public SUB<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<SUB<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public SUB<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<SUB<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<SUB<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<SUB<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public SUB<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public SUB<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<SUB<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public SUB<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public SUB<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<SUB<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<SUB<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public SUB<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public SUB<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<SUB<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<SUB<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public SUB<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<SUB<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public SUB<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<SUB<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public SUB<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public SUB<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<SUB<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public SUB<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<SUB<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public SUB<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<SUB<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public SUB<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<SUB<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public SUB<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<SUB<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<SUB<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<SUB<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<SUB<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<SUB<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<SUB<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public SUB<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<SUB<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<SUB<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public SUB<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class ACRONYM<T extends _> extends EImp<T> implements HamletSpec.ACRONYM {
        public ACRONYM(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public ACRONYM<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public ACRONYM<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public ACRONYM<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public ACRONYM<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public ACRONYM<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public ACRONYM<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public ACRONYM<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public ACRONYM<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public ACRONYM<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public ACRONYM<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public ACRONYM<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public ACRONYM<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public ACRONYM<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public ACRONYM<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public ACRONYM<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public ACRONYM<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public ACRONYM<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public ACRONYM<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<ACRONYM<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public ACRONYM<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public ACRONYM<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<ACRONYM<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public ACRONYM<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public ACRONYM<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<ACRONYM<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public ACRONYM<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public ACRONYM<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public ACRONYM<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<ACRONYM<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public ACRONYM<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<ACRONYM<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public ACRONYM<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public ACRONYM<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<ACRONYM<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public ACRONYM<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public ACRONYM<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<ACRONYM<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public ACRONYM<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public ACRONYM<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public ACRONYM<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<ACRONYM<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public ACRONYM<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<ACRONYM<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public ACRONYM<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public ACRONYM<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<ACRONYM<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public ACRONYM<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public ACRONYM<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<ACRONYM<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public ACRONYM<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public ACRONYM<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<ACRONYM<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public ACRONYM<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public ACRONYM<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<ACRONYM<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<ACRONYM<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public ACRONYM<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public ACRONYM<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<ACRONYM<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public ACRONYM<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<ACRONYM<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<ACRONYM<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<ACRONYM<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public ACRONYM<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public ACRONYM<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<ACRONYM<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public ACRONYM<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public ACRONYM<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<ACRONYM<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<ACRONYM<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public ACRONYM<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public ACRONYM<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<ACRONYM<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<ACRONYM<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public ACRONYM<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<ACRONYM<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public ACRONYM<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<ACRONYM<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public ACRONYM<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public ACRONYM<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<ACRONYM<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public ACRONYM<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<ACRONYM<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public ACRONYM<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<ACRONYM<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public ACRONYM<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<ACRONYM<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public ACRONYM<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<ACRONYM<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<ACRONYM<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<ACRONYM<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<ACRONYM<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<ACRONYM<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<ACRONYM<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public ACRONYM<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<ACRONYM<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<ACRONYM<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public ACRONYM<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class ABBR<T extends _> extends EImp<T> implements HamletSpec.ABBR {
        public ABBR(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public ABBR<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public ABBR<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public ABBR<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public ABBR<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public ABBR<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public ABBR<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public ABBR<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public ABBR<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public ABBR<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public ABBR<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public ABBR<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public ABBR<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public ABBR<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public ABBR<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public ABBR<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public ABBR<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public ABBR<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public ABBR<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<ABBR<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public ABBR<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public ABBR<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<ABBR<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public ABBR<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public ABBR<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<ABBR<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public ABBR<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public ABBR<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public ABBR<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<ABBR<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public ABBR<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<ABBR<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public ABBR<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public ABBR<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<ABBR<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public ABBR<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public ABBR<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<ABBR<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public ABBR<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public ABBR<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public ABBR<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<ABBR<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public ABBR<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<ABBR<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public ABBR<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public ABBR<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<ABBR<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public ABBR<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public ABBR<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<ABBR<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public ABBR<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public ABBR<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<ABBR<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public ABBR<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public ABBR<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<ABBR<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<ABBR<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public ABBR<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public ABBR<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<ABBR<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public ABBR<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<ABBR<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<ABBR<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<ABBR<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public ABBR<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public ABBR<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<ABBR<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public ABBR<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public ABBR<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<ABBR<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<ABBR<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public ABBR<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public ABBR<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<ABBR<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<ABBR<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public ABBR<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<ABBR<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public ABBR<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<ABBR<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public ABBR<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public ABBR<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<ABBR<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public ABBR<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<ABBR<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public ABBR<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<ABBR<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public ABBR<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<ABBR<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public ABBR<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<ABBR<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<ABBR<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<ABBR<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<ABBR<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<ABBR<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<ABBR<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public ABBR<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<ABBR<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<ABBR<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public ABBR<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class CITE<T extends _> extends EImp<T> implements HamletSpec.CITE {
        public CITE(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public CITE<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public CITE<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public CITE<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public CITE<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public CITE<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public CITE<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public CITE<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public CITE<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public CITE<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public CITE<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public CITE<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public CITE<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public CITE<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public CITE<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public CITE<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public CITE<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public CITE<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public CITE<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<CITE<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public CITE<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public CITE<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<CITE<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public CITE<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public CITE<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<CITE<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public CITE<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public CITE<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public CITE<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<CITE<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public CITE<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<CITE<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public CITE<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public CITE<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<CITE<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public CITE<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public CITE<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<CITE<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public CITE<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public CITE<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public CITE<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<CITE<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public CITE<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<CITE<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public CITE<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public CITE<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<CITE<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public CITE<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public CITE<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<CITE<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public CITE<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public CITE<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<CITE<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public CITE<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public CITE<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<CITE<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<CITE<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public CITE<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public CITE<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<CITE<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public CITE<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<CITE<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<CITE<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<CITE<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public CITE<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public CITE<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<CITE<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public CITE<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public CITE<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<CITE<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<CITE<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public CITE<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public CITE<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<CITE<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<CITE<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public CITE<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<CITE<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public CITE<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<CITE<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public CITE<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public CITE<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<CITE<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public CITE<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<CITE<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public CITE<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<CITE<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public CITE<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<CITE<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public CITE<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<CITE<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<CITE<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<CITE<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<CITE<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<CITE<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<CITE<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public CITE<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<CITE<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<CITE<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public CITE<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class VAR<T extends _> extends EImp<T> implements HamletSpec.VAR {
        public VAR(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public VAR<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public VAR<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public VAR<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public VAR<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public VAR<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public VAR<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public VAR<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public VAR<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public VAR<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public VAR<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public VAR<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public VAR<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public VAR<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public VAR<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public VAR<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public VAR<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public VAR<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public VAR<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<VAR<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public VAR<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public VAR<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<VAR<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public VAR<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public VAR<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<VAR<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public VAR<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public VAR<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public VAR<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<VAR<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public VAR<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<VAR<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public VAR<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public VAR<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<VAR<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public VAR<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public VAR<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<VAR<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public VAR<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public VAR<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public VAR<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<VAR<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public VAR<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<VAR<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public VAR<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public VAR<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<VAR<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public VAR<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public VAR<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<VAR<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public VAR<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public VAR<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<VAR<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public VAR<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public VAR<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<VAR<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<VAR<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public VAR<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public VAR<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<VAR<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public VAR<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<VAR<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<VAR<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<VAR<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public VAR<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public VAR<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<VAR<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public VAR<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public VAR<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<VAR<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<VAR<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public VAR<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public VAR<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<VAR<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<VAR<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public VAR<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<VAR<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public VAR<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<VAR<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public VAR<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public VAR<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<VAR<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public VAR<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<VAR<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public VAR<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<VAR<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public VAR<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<VAR<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public VAR<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<VAR<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<VAR<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<VAR<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<VAR<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<VAR<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<VAR<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public VAR<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<VAR<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<VAR<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public VAR<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class KBD<T extends _> extends EImp<T> implements HamletSpec.KBD {
        public KBD(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public KBD<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public KBD<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public KBD<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public KBD<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public KBD<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public KBD<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public KBD<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public KBD<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public KBD<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public KBD<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public KBD<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public KBD<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public KBD<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public KBD<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public KBD<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public KBD<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public KBD<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public KBD<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<KBD<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public KBD<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public KBD<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<KBD<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public KBD<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public KBD<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<KBD<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public KBD<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public KBD<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public KBD<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<KBD<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public KBD<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<KBD<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public KBD<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public KBD<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<KBD<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public KBD<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public KBD<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<KBD<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public KBD<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public KBD<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public KBD<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<KBD<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public KBD<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<KBD<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public KBD<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public KBD<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<KBD<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public KBD<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public KBD<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<KBD<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public KBD<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public KBD<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<KBD<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public KBD<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public KBD<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<KBD<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<KBD<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public KBD<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public KBD<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<KBD<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public KBD<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<KBD<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<KBD<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<KBD<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public KBD<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public KBD<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<KBD<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public KBD<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public KBD<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<KBD<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<KBD<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public KBD<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public KBD<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<KBD<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<KBD<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public KBD<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<KBD<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public KBD<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<KBD<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public KBD<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public KBD<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<KBD<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public KBD<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<KBD<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public KBD<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<KBD<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public KBD<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<KBD<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public KBD<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<KBD<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<KBD<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<KBD<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<KBD<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<KBD<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<KBD<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public KBD<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<KBD<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<KBD<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public KBD<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class SAMP<T extends _> extends EImp<T> implements HamletSpec.SAMP {
        public SAMP(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public SAMP<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public SAMP<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public SAMP<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public SAMP<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public SAMP<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public SAMP<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public SAMP<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public SAMP<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public SAMP<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public SAMP<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public SAMP<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public SAMP<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public SAMP<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public SAMP<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public SAMP<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public SAMP<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public SAMP<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public SAMP<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<SAMP<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public SAMP<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public SAMP<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<SAMP<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public SAMP<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public SAMP<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<SAMP<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public SAMP<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public SAMP<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public SAMP<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<SAMP<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public SAMP<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<SAMP<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public SAMP<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public SAMP<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<SAMP<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public SAMP<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public SAMP<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<SAMP<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public SAMP<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public SAMP<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public SAMP<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<SAMP<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public SAMP<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<SAMP<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public SAMP<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public SAMP<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<SAMP<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public SAMP<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public SAMP<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<SAMP<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public SAMP<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public SAMP<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<SAMP<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public SAMP<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public SAMP<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<SAMP<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<SAMP<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public SAMP<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public SAMP<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<SAMP<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public SAMP<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<SAMP<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<SAMP<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<SAMP<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public SAMP<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public SAMP<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<SAMP<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public SAMP<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public SAMP<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<SAMP<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<SAMP<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public SAMP<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public SAMP<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<SAMP<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<SAMP<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public SAMP<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<SAMP<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public SAMP<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<SAMP<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public SAMP<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public SAMP<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<SAMP<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public SAMP<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<SAMP<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public SAMP<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<SAMP<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public SAMP<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<SAMP<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public SAMP<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<SAMP<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<SAMP<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<SAMP<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<SAMP<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<SAMP<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<SAMP<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public SAMP<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<SAMP<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<SAMP<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public SAMP<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class CODE<T extends _> extends EImp<T> implements HamletSpec.CODE {
        public CODE(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public CODE<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public CODE<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public CODE<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public CODE<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public CODE<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public CODE<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public CODE<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public CODE<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public CODE<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public CODE<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public CODE<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public CODE<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public CODE<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public CODE<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public CODE<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public CODE<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public CODE<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public CODE<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<CODE<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public CODE<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public CODE<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<CODE<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public CODE<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public CODE<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<CODE<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public CODE<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public CODE<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public CODE<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<CODE<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public CODE<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<CODE<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public CODE<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public CODE<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<CODE<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public CODE<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public CODE<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<CODE<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public CODE<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public CODE<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public CODE<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<CODE<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public CODE<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<CODE<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public CODE<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public CODE<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<CODE<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public CODE<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public CODE<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<CODE<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public CODE<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public CODE<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<CODE<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public CODE<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public CODE<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<CODE<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<CODE<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public CODE<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public CODE<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<CODE<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public CODE<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<CODE<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<CODE<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<CODE<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public CODE<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public CODE<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<CODE<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public CODE<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public CODE<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<CODE<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<CODE<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public CODE<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public CODE<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<CODE<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<CODE<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public CODE<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<CODE<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public CODE<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<CODE<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public CODE<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public CODE<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<CODE<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public CODE<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<CODE<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public CODE<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<CODE<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public CODE<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<CODE<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public CODE<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<CODE<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<CODE<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<CODE<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<CODE<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<CODE<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<CODE<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public CODE<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<CODE<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<CODE<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public CODE<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class DFN<T extends _> extends EImp<T> implements HamletSpec.DFN {
        public DFN(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public DFN<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public DFN<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public DFN<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public DFN<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public DFN<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public DFN<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public DFN<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public DFN<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public DFN<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public DFN<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public DFN<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public DFN<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public DFN<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public DFN<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public DFN<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public DFN<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public DFN<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public DFN<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<DFN<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public DFN<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public DFN<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<DFN<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public DFN<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public DFN<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<DFN<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public DFN<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public DFN<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public DFN<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<DFN<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public DFN<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<DFN<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public DFN<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public DFN<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<DFN<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public DFN<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public DFN<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<DFN<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public DFN<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public DFN<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public DFN<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<DFN<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public DFN<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<DFN<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public DFN<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public DFN<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<DFN<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public DFN<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public DFN<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<DFN<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public DFN<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public DFN<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<DFN<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public DFN<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public DFN<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<DFN<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<DFN<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public DFN<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public DFN<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<DFN<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public DFN<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<DFN<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<DFN<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<DFN<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public DFN<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public DFN<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<DFN<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public DFN<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public DFN<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<DFN<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<DFN<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public DFN<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public DFN<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<DFN<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<DFN<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public DFN<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<DFN<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public DFN<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<DFN<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public DFN<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public DFN<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<DFN<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public DFN<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<DFN<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public DFN<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<DFN<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public DFN<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<DFN<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public DFN<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<DFN<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<DFN<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<DFN<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<DFN<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<DFN<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<DFN<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public DFN<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<DFN<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<DFN<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public DFN<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class STRONG<T extends _> extends EImp<T> implements HamletSpec.STRONG {
        public STRONG(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public STRONG<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public STRONG<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public STRONG<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public STRONG<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public STRONG<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public STRONG<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public STRONG<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public STRONG<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public STRONG<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public STRONG<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public STRONG<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public STRONG<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public STRONG<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public STRONG<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public STRONG<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public STRONG<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public STRONG<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public STRONG<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<STRONG<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public STRONG<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public STRONG<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<STRONG<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public STRONG<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public STRONG<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<STRONG<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public STRONG<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public STRONG<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public STRONG<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<STRONG<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public STRONG<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<STRONG<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public STRONG<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public STRONG<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<STRONG<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public STRONG<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public STRONG<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<STRONG<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public STRONG<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public STRONG<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public STRONG<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<STRONG<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public STRONG<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<STRONG<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public STRONG<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public STRONG<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<STRONG<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public STRONG<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public STRONG<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<STRONG<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public STRONG<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public STRONG<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<STRONG<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public STRONG<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public STRONG<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<STRONG<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<STRONG<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public STRONG<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public STRONG<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<STRONG<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public STRONG<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<STRONG<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<STRONG<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<STRONG<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public STRONG<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public STRONG<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<STRONG<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public STRONG<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public STRONG<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<STRONG<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<STRONG<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public STRONG<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public STRONG<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<STRONG<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<STRONG<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public STRONG<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<STRONG<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public STRONG<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<STRONG<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public STRONG<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public STRONG<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<STRONG<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public STRONG<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<STRONG<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public STRONG<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<STRONG<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public STRONG<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<STRONG<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public STRONG<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<STRONG<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<STRONG<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<STRONG<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<STRONG<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<STRONG<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<STRONG<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public STRONG<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<STRONG<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<STRONG<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public STRONG<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class EM<T extends _> extends EImp<T> implements HamletSpec.EM {
        public EM(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public EM<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public EM<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public EM<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public EM<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public EM<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public EM<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public EM<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public EM<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public EM<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public EM<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public EM<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public EM<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public EM<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public EM<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public EM<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public EM<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public EM<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public EM<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<EM<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public EM<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public EM<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<EM<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public EM<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public EM<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<EM<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public EM<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public EM<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public EM<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<EM<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public EM<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<EM<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public EM<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public EM<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<EM<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public EM<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public EM<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<EM<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public EM<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public EM<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public EM<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<EM<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public EM<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<EM<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public EM<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public EM<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<EM<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public EM<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public EM<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<EM<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public EM<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public EM<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<EM<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public EM<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public EM<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<EM<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<EM<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public EM<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public EM<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<EM<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public EM<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<EM<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<EM<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<EM<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public EM<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public EM<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<EM<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public EM<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public EM<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<EM<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<EM<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public EM<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public EM<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<EM<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<EM<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public EM<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<EM<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public EM<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<EM<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public EM<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public EM<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<EM<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public EM<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<EM<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public EM<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<EM<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public EM<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<EM<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public EM<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<EM<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<EM<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<EM<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<EM<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<EM<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<EM<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public EM<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<EM<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<EM<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public EM<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class SMALL<T extends _> extends EImp<T> implements HamletSpec.SMALL {
        public SMALL(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public SMALL<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public SMALL<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public SMALL<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public SMALL<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public SMALL<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public SMALL<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public SMALL<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public SMALL<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public SMALL<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public SMALL<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public SMALL<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public SMALL<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public SMALL<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public SMALL<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public SMALL<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public SMALL<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public SMALL<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public SMALL<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<SMALL<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public SMALL<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public SMALL<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<SMALL<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public SMALL<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public SMALL<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<SMALL<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public SMALL<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public SMALL<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public SMALL<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<SMALL<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public SMALL<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<SMALL<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public SMALL<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public SMALL<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<SMALL<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public SMALL<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public SMALL<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<SMALL<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public SMALL<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public SMALL<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public SMALL<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<SMALL<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public SMALL<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<SMALL<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public SMALL<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public SMALL<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<SMALL<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public SMALL<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public SMALL<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<SMALL<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public SMALL<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public SMALL<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<SMALL<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public SMALL<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public SMALL<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<SMALL<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<SMALL<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public SMALL<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public SMALL<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<SMALL<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public SMALL<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<SMALL<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<SMALL<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<SMALL<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public SMALL<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public SMALL<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<SMALL<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public SMALL<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public SMALL<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<SMALL<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<SMALL<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public SMALL<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public SMALL<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<SMALL<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<SMALL<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public SMALL<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<SMALL<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public SMALL<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<SMALL<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public SMALL<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public SMALL<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<SMALL<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public SMALL<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<SMALL<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public SMALL<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<SMALL<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public SMALL<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<SMALL<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public SMALL<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<SMALL<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<SMALL<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<SMALL<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<SMALL<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<SMALL<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<SMALL<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public SMALL<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<SMALL<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<SMALL<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public SMALL<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class B<T extends _> extends EImp<T> implements HamletSpec.B {
        public B(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public B<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public B<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public B<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public B<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public B<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public B<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public B<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public B<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public B<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public B<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public B<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public B<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public B<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public B<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public B<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public B<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public B<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public B<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<B<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public B<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public B<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<B<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public B<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public B<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<B<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public B<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public B<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public B<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<B<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public B<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<B<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public B<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public B<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<B<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public B<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public B<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<B<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public B<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public B<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public B<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<B<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public B<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<B<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public B<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public B<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<B<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public B<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public B<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<B<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public B<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public B<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<B<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public B<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public B<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<B<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<B<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public B<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public B<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<B<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public B<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<B<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<B<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<B<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public B<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public B<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<B<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public B<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public B<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<B<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<B<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public B<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public B<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<B<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<B<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public B<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<B<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public B<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<B<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public B<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public B<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<B<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public B<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<B<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public B<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<B<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public B<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<B<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public B<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<B<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<B<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<B<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<B<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<B<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<B<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public B<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<B<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<B<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public B<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    public class I<T extends _> extends EImp<T> implements HamletSpec.I {
        public I(String name, T parent, EnumSet<EOpt> opts) {
            super(name, parent, opts);
        }

        @Override
        public I<T> $id(String value) {
            addAttr("id", value);
            return this;
        }

        @Override
        public I<T> $class(String value) {
            addAttr("class", value);
            return this;
        }

        @Override
        public I<T> $title(String value) {
            addAttr("title", value);
            return this;
        }

        @Override
        public I<T> $style(String value) {
            addAttr("style", value);
            return this;
        }

        @Override
        public I<T> $lang(String value) {
            addAttr("lang", value);
            return this;
        }

        @Override
        public I<T> $dir(Dir value) {
            addAttr("dir", value);
            return this;
        }

        @Override
        public I<T> $onclick(String value) {
            addAttr("onclick", value);
            return this;
        }

        @Override
        public I<T> $ondblclick(String value) {
            addAttr("ondblclick", value);
            return this;
        }

        @Override
        public I<T> $onmousedown(String value) {
            addAttr("onmousedown", value);
            return this;
        }

        @Override
        public I<T> $onmouseup(String value) {
            addAttr("onmouseup", value);
            return this;
        }

        @Override
        public I<T> $onmouseover(String value) {
            addAttr("onmouseover", value);
            return this;
        }

        @Override
        public I<T> $onmousemove(String value) {
            addAttr("onmousemove", value);
            return this;
        }

        @Override
        public I<T> $onmouseout(String value) {
            addAttr("onmouseout", value);
            return this;
        }

        @Override
        public I<T> $onkeypress(String value) {
            addAttr("onkeypress", value);
            return this;
        }

        @Override
        public I<T> $onkeydown(String value) {
            addAttr("onkeydown", value);
            return this;
        }

        @Override
        public I<T> $onkeyup(String value) {
            addAttr("onkeyup", value);
            return this;
        }

        @Override
        public I<T> _(Object... lines) {
            _p(true, lines);
            return this;
        }

        @Override
        public I<T> _r(Object... lines) {
            _p(false, lines);
            return this;
        }

        @Override
        public B<I<T>> b() {
            closeAttrs();
            return b_(this, true);
        }

        @Override
        public I<T> b(String cdata) {
            return b()._(cdata)._();
        }

        @Override
        public I<T> b(String selector, String cdata) {
            return setSelector(b(), selector)._(cdata)._();
        }

        @Override
        public I<I<T>> i() {
            closeAttrs();
            return i_(this, true);
        }

        @Override
        public I<T> i(String cdata) {
            return i()._(cdata)._();
        }

        @Override
        public I<T> i(String selector, String cdata) {
            return setSelector(i(), selector)._(cdata)._();
        }

        @Override
        public SMALL<I<T>> small() {
            closeAttrs();
            return small_(this, true);
        }

        @Override
        public I<T> small(String cdata) {
            return small()._(cdata)._();
        }

        @Override
        public I<T> small(String selector, String cdata) {
            return setSelector(small(), selector)._(cdata)._();
        }

        @Override
        public I<T> em(String cdata) {
            return em()._(cdata)._();
        }

        @Override
        public EM<I<T>> em() {
            closeAttrs();
            return em_(this, true);
        }

        @Override
        public I<T> em(String selector, String cdata) {
            return setSelector(em(), selector)._(cdata)._();
        }

        @Override
        public STRONG<I<T>> strong() {
            closeAttrs();
            return strong_(this, true);
        }

        @Override
        public I<T> strong(String cdata) {
            return strong()._(cdata)._();
        }

        @Override
        public I<T> strong(String selector, String cdata) {
            return setSelector(strong(), selector)._(cdata)._();
        }

        @Override
        public DFN<I<T>> dfn() {
            closeAttrs();
            return dfn_(this, true);
        }

        @Override
        public I<T> dfn(String cdata) {
            return dfn()._(cdata)._();
        }

        @Override
        public I<T> dfn(String selector, String cdata) {
            return setSelector(dfn(), selector)._(cdata)._();
        }

        @Override
        public CODE<I<T>> code() {
            closeAttrs();
            return code_(this, true);
        }

        @Override
        public I<T> code(String cdata) {
            return code()._(cdata)._();
        }

        @Override
        public I<T> code(String selector, String cdata) {
            return setSelector(code(), selector)._(cdata)._();
        }

        @Override
        public I<T> samp(String cdata) {
            return samp()._(cdata)._();
        }

        @Override
        public SAMP<I<T>> samp() {
            closeAttrs();
            return samp_(this, true);
        }

        @Override
        public I<T> samp(String selector, String cdata) {
            return setSelector(samp(), selector)._(cdata)._();
        }

        @Override
        public KBD<I<T>> kbd() {
            closeAttrs();
            return kbd_(this, true);
        }

        @Override
        public I<T> kbd(String cdata) {
            return kbd()._(cdata)._();
        }

        @Override
        public I<T> kbd(String selector, String cdata) {
            return setSelector(kbd(), selector)._(cdata)._();
        }

        @Override
        public VAR<I<T>> var() {
            closeAttrs();
            return var_(this, true);
        }

        @Override
        public I<T> var(String cdata) {
            return var()._(cdata)._();
        }

        @Override
        public I<T> var(String selector, String cdata) {
            return setSelector(var(), selector)._(cdata)._();
        }

        @Override
        public CITE<I<T>> cite() {
            closeAttrs();
            return cite_(this, true);
        }

        @Override
        public I<T> cite(String cdata) {
            return cite()._(cdata)._();
        }

        @Override
        public I<T> cite(String selector, String cdata) {
            return setSelector(cite(), selector)._(cdata)._();
        }

        @Override
        public ABBR<I<T>> abbr() {
            closeAttrs();
            return abbr_(this, true);
        }

        @Override
        public I<T> abbr(String cdata) {
            return abbr()._(cdata)._();
        }

        @Override
        public I<T> abbr(String selector, String cdata) {
            return setSelector(abbr(), selector)._(cdata)._();
        }

        @Override
        public A<I<T>> a() {
            closeAttrs();
            return a_(this, true);
        }

        @Override
        public A<I<T>> a(String selector) {
            return setSelector(a(), selector);
        }

        @Override
        public I<T> a(String href, String anchorText) {
            return a().$href(href)._(anchorText)._();
        }

        @Override
        public I<T> a(String selector, String href, String anchorText) {
            return setSelector(a(), selector).$href(href)._(anchorText)._();
        }

        @Override
        public IMG<I<T>> img() {
            closeAttrs();
            return img_(this, true);
        }

        @Override
        public I<T> img(String src) {
            return img().$src(src)._();
        }

        @Override
        public OBJECT<I<T>> object() {
            closeAttrs();
            return object_(this, true);
        }

        @Override
        public OBJECT<I<T>> object(String selector) {
            return setSelector(object(), selector);
        }

        @Override
        public SUB<I<T>> sub() {
            closeAttrs();
            return sub_(this, true);
        }

        @Override
        public I<T> sub(String cdata) {
            return sub()._(cdata)._();
        }

        @Override
        public I<T> sub(String selector, String cdata) {
            return setSelector(sub(), selector)._(cdata)._();
        }

        @Override
        public SUP<I<T>> sup() {
            closeAttrs();
            return sup_(this, true);
        }

        @Override
        public I<T> sup(String cdata) {
            return sup()._(cdata)._();
        }

        @Override
        public I<T> sup(String selector, String cdata) {
            return setSelector(sup(), selector)._(cdata)._();
        }

        @Override
        public MAP<I<T>> map() {
            closeAttrs();
            return map_(this, true);
        }

        @Override
        public MAP<I<T>> map(String selector) {
            return setSelector(map(), selector);
        }

        @Override
        public I<T> q(String cdata) {
            return q()._(cdata)._();
        }

        @Override
        public I<T> q(String selector, String cdata) {
            return setSelector(q(), selector)._(cdata)._();
        }

        @Override
        public Q<I<T>> q() {
            closeAttrs();
            return q_(this, true);
        }

        @Override
        public BR<I<T>> br() {
            closeAttrs();
            return br_(this, true);
        }

        @Override
        public I<T> br(String selector) {
            return setSelector(br(), selector)._();
        }

        @Override
        public BDO<I<T>> bdo() {
            closeAttrs();
            return bdo_(this, true);
        }

        @Override
        public I<T> bdo(Dir dir, String cdata) {
            return bdo().$dir(dir)._(cdata)._();
        }

        @Override
        public SPAN<I<T>> span() {
            closeAttrs();
            return span_(this, true);
        }

        @Override
        public I<T> span(String cdata) {
            return span()._(cdata)._();
        }

        @Override
        public I<T> span(String selector, String cdata) {
            return setSelector(span(), selector)._(cdata)._();
        }

        @Override
        public SCRIPT<I<T>> script() {
            closeAttrs();
            return script_(this, true);
        }

        @Override
        public I<T> script(String src) {
            return setScriptSrc(script(), src)._();
        }

        @Override
        public INS<I<T>> ins() {
            closeAttrs();
            return ins_(this, true);
        }

        @Override
        public I<T> ins(String cdata) {
            return ins()._(cdata)._();
        }

        @Override
        public DEL<I<T>> del() {
            closeAttrs();
            return del_(this, true);
        }

        @Override
        public I<T> del(String cdata) {
            return del()._(cdata)._();
        }

        @Override
        public LABEL<I<T>> label() {
            closeAttrs();
            return label_(this, true);
        }

        @Override
        public I<T> label(String forId, String cdata) {
            return label().$for(forId)._(cdata)._();
        }

        @Override
        public INPUT<I<T>> input(String selector) {
            return setSelector(input(), selector);
        }

        @Override
        public INPUT<I<T>> input() {
            closeAttrs();
            return input_(this, true);
        }

        @Override
        public SELECT<I<T>> select() {
            closeAttrs();
            return select_(this, true);
        }

        @Override
        public SELECT<I<T>> select(String selector) {
            return setSelector(select(), selector);
        }

        @Override
        public TEXTAREA<I<T>> textarea(String selector) {
            return setSelector(textarea(), selector);
        }

        @Override
        public TEXTAREA<I<T>> textarea() {
            closeAttrs();
            return textarea_(this, true);
        }

        @Override
        public I<T> textarea(String selector, String cdata) {
            return setSelector(textarea(), selector)._(cdata)._();
        }

        @Override
        public BUTTON<I<T>> button() {
            closeAttrs();
            return button_(this, true);
        }

        @Override
        public BUTTON<I<T>> button(String selector) {
            return setSelector(button(), selector);
        }

        @Override
        public I<T> button(String selector, String cdata) {
            return setSelector(button(), selector)._(cdata)._();
        }
    }

    private <T extends _> INPUT<T> input_(T e, boolean inline) {
        return new INPUT<T>("input", e, opt(false, inline, false));
    }

    private <T extends _> SELECT<T> select_(T e, boolean inline) {
        return new SELECT<T>("select", e, opt(true, inline, false));
    }

    private <T extends _> TEXTAREA<T> textarea_(T e, boolean inline) {
        return new TEXTAREA<T>("textarea", e, opt(true, inline, false));
    }

    private <T extends _> BUTTON<T> button_(T e, boolean inline) {
        return new BUTTON<T>("button", e, opt(true, inline, false));
    }

    private <T extends _> LABEL<T> label_(T e, boolean inline) {
        return new LABEL<T>("label", e, opt(true, inline, false));
    }

    private <T extends _> MAP<T> map_(T e, boolean inline) {
        return new MAP<T>("map", e, opt(true, inline, false));
    }

    private <T extends _> Q<T> q_(T e, boolean inline) {
        return new Q<T>("q", e, opt(true, inline, false));
    }

    private <T extends _> BR<T> br_(T e, boolean inline) {
        return new BR<T>("br", e, opt(false, inline, false));
    }

    private <T extends _> BDO<T> bdo_(T e, boolean inline) {
        return new BDO<T>("bdo", e, opt(true, inline, false));
    }

    private <T extends _> SPAN<T> span_(T e, boolean inline) {
        return new SPAN<T>("span", e, opt(true, inline, false));
    }

    private <T extends _> INS<T> ins_(T e, boolean inline) {
        return new INS<T>("ins", e, opt(true, inline, false));
    }

    private <T extends _> DEL<T> del_(T e, boolean inline) {
        return new DEL<T>("del", e, opt(true, inline, false));
    }

    private <T extends _> A<T> a_(T e, boolean inline) {
        return new A<T>("a", e, opt(true, inline, false));
    }

    private <T extends _> SUB<T> sub_(T e, boolean inline) {
        return new SUB<T>("sub", e, opt(true, inline, false));
    }

    private <T extends _> SUP<T> sup_(T e, boolean inline) {
        return new SUP<T>("sup", e, opt(true, inline, false));
    }

    private <T extends _> IMG<T> img_(T e, boolean inline) {
        return new IMG<T>("img", e, opt(false, inline, false));
    }

    private <T extends _> EM<T> em_(T e, boolean inline) {
        return new EM<T>("em", e, opt(true, inline, false));
    }

    private <T extends _> STRONG<T> strong_(T e, boolean inline) {
        return new STRONG<T>("strong", e, opt(true, inline, false));
    }

    private <T extends _> DFN<T> dfn_(T e, boolean inline) {
        return new DFN<T>("dfn", e, opt(true, inline, false));
    }

    private <T extends _> CODE<T> code_(T e, boolean inline) {
        return new CODE<T>("code", e, opt(true, inline, false));
    }

    private <T extends _> SAMP<T> samp_(T e, boolean inline) {
        return new SAMP<T>("samp", e, opt(true, inline, false));
    }

    private <T extends _> KBD<T> kbd_(T e, boolean inline) {
        return new KBD<T>("kbd", e, opt(true, inline, false));
    }

    private <T extends _> VAR<T> var_(T e, boolean inline) {
        return new VAR<T>("var", e, opt(true, inline, false));
    }

    private <T extends _> CITE<T> cite_(T e, boolean inline) {
        return new CITE<T>("cite", e, opt(true, inline, false));
    }

    private <T extends _> ABBR<T> abbr_(T e, boolean inline) {
        return new ABBR<T>("abbr", e, opt(true, inline, false));
    }

    private <T extends _> B<T> b_(T e, boolean inline) {
        return new B<T>("b", e, opt(true, inline, false));
    }

    private <T extends _> I<T> i_(T e, boolean inline) {
        return new I<T>("i", e, opt(true, inline, false));
    }

    private <T extends _> SMALL<T> small_(T e, boolean inline) {
        return new SMALL<T>("small", e, opt(true, inline, false));
    }

    private <T extends _> PRE<T> pre_(T e, boolean inline) {
        return new PRE<T>("pre", e, opt(true, inline, true));
    }

    private <T extends _> UL<T> ul_(T e, boolean inline) {
        return new UL<T>("ul", e, opt(true, inline, false));
    }

    private <T extends _> OL<T> ol_(T e, boolean inline) {
        return new OL<T>("ol", e, opt(true, inline, false));
    }

    private <T extends _> H1<T> h1_(T e, boolean inline) {
        return new H1<T>("h1", e, opt(true, inline, false));
    }

    private <T extends _> H2<T> h2_(T e, boolean inline) {
        return new H2<T>("h2", e, opt(true, inline, false));
    }

    private <T extends _> H3<T> h3_(T e, boolean inline) {
        return new H3<T>("h3", e, opt(true, inline, false));
    }

    private <T extends _> H4<T> h4_(T e, boolean inline) {
        return new H4<T>("h4", e, opt(true, inline, false));
    }

    private <T extends _> H5<T> h5_(T e, boolean inline) {
        return new H5<T>("h5", e, opt(true, inline, false));
    }

    private <T extends _> H6<T> h6_(T e, boolean inline) {
        return new H6<T>("h6", e, opt(true, inline, false));
    }

    private <T extends _> STYLE<T> style_(T e, boolean inline) {
        return new STYLE<T>("style", e, opt(true, inline, false));
    }

    private <T extends _> LINK<T> link_(T e, boolean inline) {
        return new LINK<T>("link", e, opt(false, inline, false));
    }

    private <T extends _> META<T> meta_(T e, boolean inline) {
        return new META<T>("meta", e, opt(false, inline, false));
    }

    private <T extends _> OBJECT<T> object_(T e, boolean inline) {
        return new OBJECT<T>("object", e, opt(true, inline, false));
    }

    private <T extends _> SCRIPT<T> script_(T e, boolean inline) {
        return new SCRIPT<T>("script", e, opt(true, inline, false));
    }

    @Override
    public HEAD<Hamlet> head() {
        return head_(this, false);
    }

    @Override
    public BODY<Hamlet> body() {
        return body_(this, false);
    }

    @Override
    public BODY<Hamlet> body(String selector) {
        return setSelector(body(), selector);
    }

    @Override
    public BASE<Hamlet> base() {
        return base_(this, false);
    }

    @Override
    public Hamlet base(String href) {
        return base().$href(href)._();
    }

    @Override
    public TITLE<Hamlet> title() {
        return title_(this, false);
    }

    @Override
    public Hamlet title(String cdata) {
        return title()._(cdata)._();
    }

    @Override
    public STYLE<Hamlet> style() {
        return style_(this, false);
    }

    @Override
    public Hamlet style(Object... lines) {
        return style().$type("text/css")._(lines)._();
    }

    @Override
    public LINK<Hamlet> link() {
        return link_(this, false);
    }

    @Override
    public Hamlet link(String href) {
        return setLinkHref(link(), href)._();
    }

    @Override
    public META<Hamlet> meta() {
        return meta_(this, false);
    }

    @Override
    public Hamlet meta(String name, String content) {
        return meta().$name(name).$content(content)._();
    }

    @Override
    public Hamlet meta_http(String header, String content) {
        return meta().$http_equiv(header).$content(content)._();
    }

    @Override
    public SCRIPT<Hamlet> script() {
        return script_(this, false);
    }

    @Override
    public Hamlet script(String src) {
        return setScriptSrc(script(), src)._();
    }

    @Override
    public OBJECT<Hamlet> object() {
        return object_(this, true);
    }

    @Override
    public OBJECT<Hamlet> object(String selector) {
        return setSelector(object(), selector);
    }

    @Override
    public TABLE<Hamlet> table() {
        return table_(this, false);
    }

    @Override
    public TABLE<Hamlet> table(String selector) {
        return setSelector(table(), selector);
    }

    @Override
    public Hamlet address(String cdata) {
        return address()._(cdata)._();
    }

    @Override
    public ADDRESS<Hamlet> address() {
        return address_(this, false);
    }

    @Override
    public P<Hamlet> p(String selector) {
        return setSelector(p(), selector);
    }

    @Override
    public P<Hamlet> p() {
        return p_(this, false);
    }

    @Override
    public Hamlet _(Class<? extends SubView> cls) {
        subView(cls);
        return this;
    }

    @Override
    public HR<Hamlet> hr() {
        return hr_(this, false);
    }

    @Override
    public Hamlet hr(String selector) {
        return setSelector(hr(), selector)._();
    }

    @Override
    public DL<Hamlet> dl(String selector) {
        return setSelector(dl(), selector);
    }

    @Override
    public DL<Hamlet> dl() {
        return dl_(this, false);
    }

    @Override
    public DIV<Hamlet> div(String selector) {
        return setSelector(div(), selector);
    }

    @Override
    public DIV<Hamlet> div() {
        return div_(this, false);
    }

    @Override
    public BLOCKQUOTE<Hamlet> blockquote() {
        return blockquote_(this, false);
    }

    @Override
    public BLOCKQUOTE<Hamlet> bq() {
        return blockquote_(this, false);
    }

    @Override
    public Hamlet h1(String cdata) {
        return h1()._(cdata)._();
    }

    @Override
    public H1<Hamlet> h1() {
        return h1_(this, false);
    }

    @Override
    public Hamlet h1(String selector, String cdata) {
        return setSelector(h1(), selector)._(cdata)._();
    }

    @Override
    public Hamlet h2(String cdata) {
        return h2()._(cdata)._();
    }

    @Override
    public H2<Hamlet> h2() {
        return h2_(this, false);
    }

    @Override
    public Hamlet h2(String selector, String cdata) {
        return setSelector(h2(), selector)._(cdata)._();
    }

    @Override
    public H3<Hamlet> h3() {
        return h3_(this, false);
    }

    @Override
    public Hamlet h3(String cdata) {
        return h3()._(cdata)._();
    }

    @Override
    public Hamlet h3(String selector, String cdata) {
        return setSelector(h3(), selector)._(cdata)._();
    }

    @Override
    public H4<Hamlet> h4() {
        return h4_(this, false);
    }

    @Override
    public Hamlet h4(String cdata) {
        return h4()._(cdata)._();
    }

    @Override
    public Hamlet h4(String selector, String cdata) {
        return setSelector(h4(), selector)._(cdata)._();
    }

    @Override
    public H5<Hamlet> h5() {
        return h5_(this, false);
    }

    @Override
    public Hamlet h5(String cdata) {
        return h5()._(cdata)._();
    }

    @Override
    public Hamlet h5(String selector, String cdata) {
        return setSelector(h5(), selector)._(cdata)._();
    }

    @Override
    public H6<Hamlet> h6() {
        return h6_(this, false);
    }

    @Override
    public Hamlet h6(String cdata) {
        return h6()._(cdata)._();
    }

    @Override
    public Hamlet h6(String selector, String cdata) {
        return setSelector(h6(), selector)._(cdata)._();
    }

    @Override
    public UL<Hamlet> ul() {
        return ul_(this, false);
    }

    @Override
    public UL<Hamlet> ul(String selector) {
        return setSelector(ul(), selector);
    }

    @Override
    public OL<Hamlet> ol() {
        return ol_(this, false);
    }

    @Override
    public OL<Hamlet> ol(String selector) {
        return setSelector(ol(), selector);
    }

    @Override
    public PRE<Hamlet> pre() {
        return pre_(this, false);
    }

    @Override
    public PRE<Hamlet> pre(String selector) {
        return setSelector(pre(), selector);
    }

    @Override
    public FORM<Hamlet> form() {
        return form_(this, false);
    }

    @Override
    public FORM<Hamlet> form(String selector) {
        return setSelector(form(), selector);
    }

    @Override
    public FIELDSET<Hamlet> fieldset() {
        return fieldset_(this, false);
    }

    @Override
    public FIELDSET<Hamlet> fieldset(String selector) {
        return setSelector(fieldset(), selector);
    }

    @Override
    public INS<Hamlet> ins() {
        return ins_(this, false);
    }

    @Override
    public Hamlet ins(String cdata) {
        return ins()._(cdata)._();
    }

    @Override
    public DEL<Hamlet> del() {
        return del_(this, false);
    }

    @Override
    public Hamlet del(String cdata) {
        return del()._(cdata)._();
    }
}