case classBlockTag(blockName: String, name: String, content: Vector[Tag] = Vector.empty[Tag], elseContent: Vector[Tag] = Vector.empty[Tag]) extends Tag with Product with Serializable
case classCollectedTags(suffix: String, tags: Vector[Tag] = Vector.empty[Tag], elseTags: Vector[Tag] = Vector.empty[Tag]) extends Product with Serializable
case classEndTag(blockName: String) extends Tag with Product with Serializable
case classHelperTag(helperName: String, parameters: List[String]) extends Tag with Product with Serializable