src/main/java/br/com/caelum/vraptor/html/factories/PageAttributeFactory.java
public static Src src(Url jsFile) {
	return new Src(jsFile);
}
src/main/java/br/com/caelum/vraptor/html/tags/Frame.java
public class Frame implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Frame(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Map.java
public class Map implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Map(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Img.java
public class Img implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Img(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Samp.java
public class Samp implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Samp(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Noscript.java
public class Noscript implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Noscript(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Div.java
public class Div implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Div(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Dt.java
public class Dt implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Dt(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/builders/FormFor.java
public class FormFor implements NestedElement {

	private final List<NestedElement> children;
	private final java.lang.Object resource;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	private final static ThreadLocal<List<NestedElement>> childrenToGo = new ThreadLocal<List<NestedElement>>();
	private final static Proxifier proxifier = new CglibProxifier(new ObjenesisInstanceCreator());

	public FormFor(java.lang.Object resource) {
		this.resource = resource;
		this.children = getChildrenToGo();
		childrenToGo.remove();
	}

	public String toHtml() {
		// TODO implement
		return "";
	}

	public NestedElement[] getChildren() {
		return children.toArray(new NestedElement[children.size()]);
	}

	private static List<NestedElement> getChildrenToGo() {
		List<NestedElement> list = childrenToGo.get();
		if (list == null) {
			list = new ArrayList<NestedElement>();
			childrenToGo.set(list);
		}
		return list;
	}

	@SuppressWarnings("unchecked")
	public static <T> T with(final T resource) {
		final Class<T> resourceClass = (Class<T>) resource.getClass();
		return proxifier.proxify(resourceClass, new MethodInvocation<T>() {

			public java.lang.Object intercept(T proxyResource, Method getter, java.lang.Object[] args, SuperMethod superMethod) {
				String inputName = inputName(resourceClass, getter);
				java.lang.Object defaultValue = null;
				try {
					defaultValue = getter.invoke(resource);
				} catch (Exception e) {
					e.printStackTrace();
				}
				getChildrenToGo().add(inputFor(inputName, defaultValue));
				return defaultValue;
			}


			private String inputName(Class<T> resourceClass, Method getter) {
				String fieldName = getter.getName().substring(2);
				if (!getterReturnsBoolean(getter)) {
					fieldName = getter.getName().substring(3);
				}
				return lowercaseFirstLetter(resourceClass.getSimpleName()) + "." + lowercaseFirstLetter(fieldName);
			}

			private String lowercaseFirstLetter(String string) {
				return Character.toLowerCase(string.charAt(0)) + string.substring(1);
			}

			private boolean getterReturnsBoolean(Method getter) {
				return Boolean.class.isAssignableFrom(getter.getReturnType()) ||
						boolean.class.isAssignableFrom(getter.getReturnType());
			}


			private NestedElement inputFor(String inputName, java.lang.Object defaultValue) {
				Elements elements = new Elements();
				elements.append(text(inputName));
				if (defaultValue != null) {
					elements.append(input(type("text"), name(inputName), value(defaultValue.toString())));
				} else {
					elements.append(input(type("text"), name(inputName)));
				}
				return elements;
			}
		});
	}

}
src/main/java/br/com/caelum/vraptor/html/attributes/Attribute.java
public interface Attribute {
	/**
	 * <p>
	 * Returns the value of this attribute declaration. E.g.: if this object
	 * represents the declaration <code>class="hidden"</code>, then this method
	 * should return the string "hidden".
	 * </p>
	 *
	 * @return The value of this attribute
	 */
	public String getValue();
}
src/main/java/br/com/caelum/vraptor/html/tags/Input.java
public class Input implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Input(Attribute... attributes) {
		this.attributes = attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Cite.java
public class Cite implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Cite(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Legend.java
public class Legend implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Legend(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/B.java
public class B implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public B(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/P.java
public class P implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public P(Attribute... attributes) {
		this.attributes = attributes;
	}

	public Attribute[] getAttributes() {
		return this.attributes;
	}

	public NestedElement[] getChildren() {
		return this.children;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/H5.java
public class H5 implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public H5(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Small.java
public class Small implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Small(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Blockquote.java
public class Blockquote implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Blockquote(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Dfn.java
public class Dfn implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Dfn(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Link.java
public class Link implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Link(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Base.java
public class Base implements Tag {

	private static NestedElement[] EMPTY = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Base(Attribute[] atrtibutes) {
		this.attributes = atrtibutes;
	}

	public NestedElement[] getChildren() {
		return EMPTY;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		return this;
	}

	public Tag with(java.lang.Object content) {
		return this;
	}

	public Tag with(NestedElement child) {
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/H6.java
public class H6 implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public H6(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Head.java
public class Head implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Head(Attribute... attributes) {
		this.attributes = attributes;
	}

	public Attribute[] getAttributes() {
		return this.attributes;
	}

	public NestedElement[] getChildren() {
		return this.children;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Col.java
public class Col implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Col(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Acronym.java
public class Acronym implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Acronym(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Del.java
public class Del implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Del(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Button.java
public class Button implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Button(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Th.java
public class Th implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Th(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Pre.java
public class Pre implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Pre(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Object.java
public class Object implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Object(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Dl.java
public class Dl implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Dl(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Area.java
public class Area implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Area(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Optgroup.java
public class Optgroup implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Optgroup(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Ol.java
public class Ol implements Tag {
	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Ol(Attribute... attributes) {
		this.attributes = attributes;
	}

	public Attribute[] getAttributes() {
		return this.attributes;
	}

	public NestedElement[] getChildren() {
		return this.children;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Param.java
public class Param implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Param(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Dd.java
public class Dd implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Dd(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/I.java
public class I implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public I(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Caption.java
public class Caption implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Caption(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Strong.java
public class Strong implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Strong(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Script.java
public class Script implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Script(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Ul.java
public class Ul implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Ul(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Textarea.java
public class Textarea implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Textarea(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Text.java
public class Text implements NestedElement {
	private final String text;

	public Text(java.lang.Object toBePrinted) {
		this.text = toBePrinted.toString();
	}

	/**
	 * <p>
	 * Just returns the String passed in the constructor
	 * </p>
	 */
	public String toHtml() {
		return this.text;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/H2.java
public class H2 implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public H2(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Colgroup.java
public class Colgroup implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Colgroup(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Span.java
public class Span implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Span(Attribute... attributes) {
		this.attributes = attributes;
	}

	public Attribute[] getAttributes() {
		return this.attributes;
	}

	public NestedElement[] getChildren() {
		return this.children;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Option.java
public class Option implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Option(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Style.java
public class Style implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Style(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Tr.java
public class Tr implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Tr(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/factories/PageAttributeFactory.java
public static Rel rel(String value) {
	return new Rel(value);
}
src/main/java/br/com/caelum/vraptor/html/tags/Br.java
public class Br implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Br(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Select.java
public class Select implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Select(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/A.java
public class A implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public A(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Td.java
public class Td implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Td(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Abbr.java
public class Abbr implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Abbr(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Meta.java
public class Meta implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Meta(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/H3.java
public class H3 implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public H3(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Q.java
public class Q implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Q(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Iframe.java
public class Iframe implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Iframe(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Tbody.java
public class Tbody implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Tbody(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Body.java
public class Body implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Body(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/H4.java
public class H4 implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public H4(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Code.java
public class Code implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Code(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Big.java
public class Big implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Big(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/H1.java
public class H1 implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public H1(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Html.java
public class Html implements Tag {
	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Html(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return this.children;
	}

	public Attribute[] getAttributes() {
		return this.attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Sub.java
public class Sub implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Sub(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Tt.java
public class Tt implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Tt(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Fieldset.java
public class Fieldset implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Fieldset(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Table.java
public class Table implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Table(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Ins.java
public class Ins implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Ins(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Form.java
public class Form implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Form(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Li.java
public class Li implements Tag {
	private final Attribute[] attributes;
	private NestedElement[] children = new NestedElement[0];
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Li(Attribute... attributes) {
		this.attributes = attributes;

	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Sup.java
public class Sup implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Sup(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Var.java
public class Var implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Var(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/factories/PageAttributeFactory.java
public static Type type(String value) {
	return new Type(value);
}
src/main/java/br/com/caelum/vraptor/html/tags/Address.java
public class Address implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Address(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Bdo.java
public class Bdo implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Bdo(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Tfoot.java
public class Tfoot implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Tfoot(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Kbd.java
public class Kbd implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Kbd(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Hr.java
public class Hr implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Hr(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Noframes.java
public class Noframes implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Noframes(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/factories/PageAttributeFactory.java
public static Alt alt(String value) {
	return new Alt(value);
}
src/main/java/br/com/caelum/vraptor/html/factories/PageAttributeFactory.java
public static Href href(Url value) {
	return new Href(value);
}
src/main/java/br/com/caelum/vraptor/html/tags/Em.java
public class Em implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Em(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Thead.java
public class Thead implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Thead(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Frameset.java
public class Frameset implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Frameset(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Title.java
public class Title implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Title(Attribute... attributes) {
		this.attributes = attributes;
	}

	public Attribute[] getAttributes() {
		return this.attributes;
	}

	public NestedElement[] getChildren() {
		return this.children;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/tags/Label.java
public class Label implements Tag {

	private NestedElement[] children = new NestedElement[0];
	private final Attribute[] attributes;
	private final TagTransformer tagTransformer = new DefaultTagTransformer();

	public Label(Attribute... attributes) {
		this.attributes = attributes;
	}

	public NestedElement[] getChildren() {
		return children;
	}

	public Attribute[] getAttributes() {
		return attributes;
	}

	public String toHtml() {
		return tagTransformer.transform(this);
	}

	public Tag with(NestedElement... children) {
		this.children = children;
		return this;
	}

	public Tag with(java.lang.Object content) {
		return with(new Text(content));
	}

	public Tag with(NestedElement child) {
		this.children = new NestedElement[] { child };
		return this;
	}
}
src/main/java/br/com/caelum/vraptor/html/Url.java
public interface Url {

	/**
	 * <p>
	 * Retrieves the URL as a String.
	 * </p>
	 */
	public abstract String value();

}


Question: package br.com.caelum.vraptor.html.factories;
import static br.com.caelum.vraptor.html.factories.PageAttributeFactory.alt;
import static br.com.caelum.vraptor.html.factories.PageAttributeFactory.href;
import static br.com.caelum.vraptor.html.factories.PageAttributeFactory.rel;
import static br.com.caelum.vraptor.html.factories.PageAttributeFactory.src;
import static br.com.caelum.vraptor.html.factories.PageAttributeFactory.type;
import br.com.caelum.vraptor.html.Url;
import br.com.caelum.vraptor.html.attributes.Attribute;
import br.com.caelum.vraptor.html.tags.A;
import br.com.caelum.vraptor.html.tags.Abbr;
import br.com.caelum.vraptor.html.tags.Acronym;
import br.com.caelum.vraptor.html.tags.Address;
import br.com.caelum.vraptor.html.tags.Area;
import br.com.caelum.vraptor.html.tags.B;
import br.com.caelum.vraptor.html.tags.Base;
import br.com.caelum.vraptor.html.tags.Bdo;
import br.com.caelum.vraptor.html.tags.Big;
import br.com.caelum.vraptor.html.tags.Blockquote;
import br.com.caelum.vraptor.html.tags.Body;
import br.com.caelum.vraptor.html.tags.Br;
import br.com.caelum.vraptor.html.tags.Button;
import br.com.caelum.vraptor.html.tags.Caption;
import br.com.caelum.vraptor.html.tags.Cite;
import br.com.caelum.vraptor.html.tags.Code;
import br.com.caelum.vraptor.html.tags.Col;
import br.com.caelum.vraptor.html.tags.Colgroup;
import br.com.caelum.vraptor.html.tags.Dd;
import br.com.caelum.vraptor.html.tags.Del;
import br.com.caelum.vraptor.html.tags.Dfn;
import br.com.caelum.vraptor.html.tags.Div;
import br.com.caelum.vraptor.html.tags.Dl;
import br.com.caelum.vraptor.html.tags.Dt;
import br.com.caelum.vraptor.html.tags.Em;
import br.com.caelum.vraptor.html.tags.Fieldset;
import br.com.caelum.vraptor.html.tags.Form;
import br.com.caelum.vraptor.html.tags.Frame;
import br.com.caelum.vraptor.html.tags.Frameset;
import br.com.caelum.vraptor.html.tags.H1;
import br.com.caelum.vraptor.html.tags.H2;
import br.com.caelum.vraptor.html.tags.H3;
import br.com.caelum.vraptor.html.tags.H4;
import br.com.caelum.vraptor.html.tags.H5;
import br.com.caelum.vraptor.html.tags.H6;
import br.com.caelum.vraptor.html.tags.Head;
import br.com.caelum.vraptor.html.tags.Hr;
import br.com.caelum.vraptor.html.tags.Html;
import br.com.caelum.vraptor.html.tags.I;
import br.com.caelum.vraptor.html.tags.Iframe;
import br.com.caelum.vraptor.html.tags.Img;
import br.com.caelum.vraptor.html.tags.Input;
import br.com.caelum.vraptor.html.tags.Ins;
import br.com.caelum.vraptor.html.tags.Kbd;
import br.com.caelum.vraptor.html.tags.Label;
import br.com.caelum.vraptor.html.tags.Legend;
import br.com.caelum.vraptor.html.tags.Li;
import br.com.caelum.vraptor.html.tags.Link;
import br.com.caelum.vraptor.html.tags.Map;
import br.com.caelum.vraptor.html.tags.Meta;
import br.com.caelum.vraptor.html.tags.Noframes;
import br.com.caelum.vraptor.html.tags.Noscript;
import br.com.caelum.vraptor.html.tags.Object;
import br.com.caelum.vraptor.html.tags.Ol;
import br.com.caelum.vraptor.html.tags.Optgroup;
import br.com.caelum.vraptor.html.tags.Option;
import br.com.caelum.vraptor.html.tags.P;
import br.com.caelum.vraptor.html.tags.Param;
import br.com.caelum.vraptor.html.tags.Pre;
import br.com.caelum.vraptor.html.tags.Q;
import br.com.caelum.vraptor.html.tags.Samp;
import br.com.caelum.vraptor.html.tags.Script;
import br.com.caelum.vraptor.html.tags.Select;
import br.com.caelum.vraptor.html.tags.Small;
import br.com.caelum.vraptor.html.tags.Span;
import br.com.caelum.vraptor.html.tags.Strong;
import br.com.caelum.vraptor.html.tags.Style;
import br.com.caelum.vraptor.html.tags.Sub;
import br.com.caelum.vraptor.html.tags.Sup;
import br.com.caelum.vraptor.html.tags.Table;
import br.com.caelum.vraptor.html.tags.Tbody;
import br.com.caelum.vraptor.html.tags.Td;
import br.com.caelum.vraptor.html.tags.Text;
import br.com.caelum.vraptor.html.tags.Textarea;
import br.com.caelum.vraptor.html.tags.Tfoot;
import br.com.caelum.vraptor.html.tags.Th;
import br.com.caelum.vraptor.html.tags.Thead;
import br.com.caelum.vraptor.html.tags.Title;
import br.com.caelum.vraptor.html.tags.Tr;
import br.com.caelum.vraptor.html.tags.Tt;
import br.com.caelum.vraptor.html.tags.Ul;
import br.com.caelum.vraptor.html.tags.Var;
import br.com.caelum.vraptor.html.tags.builders.FormFor;


/**
 * <p>
 * Collection of factory methods to objects that represent HTML tags
 * </p>
 *
 * @author luiz
 */
public class PageTagFactory {
	/*
	 * Shortcuts methods
	 */
	public static FormFor formFor(Object resource, Object... fields) {
		return new FormFor(resource);
	}

	public static A link(Url destination) {
		return a(href(destination));
	}

	public static Link css(String cssFile) {
		return link(rel("stylesheet"), type("text/css"), href(cssFile));
	}

	public static Script js(String jsFile) {
		return script(type("text/javascript"), src(jsFile));
	}

	public static Img image(String imageFile, String altText) {
		return img(src(imageFile), alt(altText));
	}

	/*
	 * Tags factory methods
	 */
	public static A a(Attribute... attributes) {
		return new A(attributes);
	}

	public static Abbr abbr(Attribute... attributes) {
		return new Abbr(attributes);
	}

	public static Acronym acronym(Attribute... attributes) {
		return new Acronym(attributes);
	}

	public static Address address(Attribute... attributes) {
		return new Address(attributes);
	}

	public static Area area(Attribute... attributes) {
		return new Area(attributes);
	}

	public static B b(Attribute... attributes) {
		return new B(attributes);
	}

	public static Base base(Attribute... attributes) {
		return new Base(attributes);
	}

	public static Bdo bdo(Attribute... attributes) {
		return new Bdo(attributes);
	}

	public static Big big(Attribute... attributes) {
		return new Big(attributes);
	}

	public static Blockquote blockquote(Attribute... attributes) {
		return new Blockquote(attributes);
	}

	public static Body body(Attribute... attributes) {
		return new Body(attributes);
	}

	public static Br br(Attribute... attributes) {
		return new Br(attributes);
	}

	public static Button button(Attribute... attributes) {
		return new Button(attributes);
	}

	public static Caption caption(Attribute... attributes) {
		return new Caption(attributes);
	}

	public static Cite cite(Attribute... attributes) {
		return new Cite(attributes);
	}

	public static Code code(Attribute... attributes) {
		return new Code(attributes);
	}

	public static Col col(Attribute... attributes) {
		return new Col(attributes);
	}

	public static Colgroup colgroup(Attribute... attributes) {
		return new Colgroup(attributes);
	}

	public static Dd dd(Attribute... attributes) {
		return new Dd(attributes);
	}

	public static Del del(Attribute... attributes) {
		return new Del(attributes);
	}

	public static Dfn dfn(Attribute... attributes) {
		return new Dfn(attributes);
	}

	public static Div div(Attribute... attributes) {
		return new Div(attributes);
	}

	public static Dl dl(Attribute... attributes) {
		return new Dl(attributes);
	}

	public static Dt dt(Attribute... attributes) {
		return new Dt(attributes);
	}

	public static Em em(Attribute... attributes) {
		return new Em(attributes);
	}

	public static Fieldset fieldset(Attribute... attributes) {
		return new Fieldset(attributes);
	}

	public static Form form(Attribute... attributes) {
		return new Form(attributes);
	}

	public static Frame frame(Attribute... attributes) {
		return new Frame(attributes);
	}

Answer: 	public static Frameset frameset(Attribute... attributes) {