template NameEntry(String name, int age) {
  <div>
    <span>aaaa</span>
    <span>bbbb</span>
    cccc<span>-</span>dddd
  </div>
}

template SimplestTemplate() {
  <div></div>
}

template EmptyTemplateContent() {
}


