Enumerated type used to group elements with common behavior about how they are rendered and how they relate to each other. This interface is useful to empower proper and semantic HTML writing by API design, enforcing constraints at compile time:
P { Span("Paragraph elements can have inline elements as children, like a span..."), Div("But not block elements, like a div!") // compilation error };
no type hierarchy