
<!-- Test repeated execution -->
doStartTag() called here
doAfterBody() called here
Blah
doAfterBody() called here
Blah
doAfterBody() called here
Blah
doEndTag() called here
doFinally() called here

<!-- Test 0-time execution -->
doStartTag() called here
doEndTag() called here
doFinally() called here

<!-- Test abrupt execution -->
doStartTag() called here
doCatch() called here with class freemarker.template.TemplateModelException: throwException==true
doFinally() called here

<!-- Test nested execution -->
doStartTag() called here
doAfterBody() called here
Outer Blah
doStartTag() called here
doAfterBody() called here
Inner Blah
doAfterBody() called here
Inner Blah
doEndTag() called here
doFinally() called here
doAfterBody() called here
Outer Blah
doStartTag() called here
doAfterBody() called here
Inner Blah
doAfterBody() called here
Inner Blah
doEndTag() called here
doFinally() called here
doEndTag() called here
doFinally() called here

<!-- Test nested execution with intermittent non-JSP transform -->
doStartTag() called here
doAfterBody() called here
Outer Blah
doStartTag() called here
doAfterBody() called here
Inner Blah
doAfterBody() called here
Inner Blah
doEndTag() called here
doFinally() called heredoAfterBody() called here
Outer Blah
doStartTag() called here
doAfterBody() called here
Inner Blah
doAfterBody() called here
Inner Blah
doEndTag() called here
doFinally() called heredoEndTag() called here
doFinally() called here

<!-- Test loading from JAR -->
TestTag2.doStartTag() called here
TestTag2.doEndTag() called here
<!-- Test loading from autodeployed JAR -->
TestTag3.doStartTag() called here
TestTag3.doEndTag() called here
<!-- Test loading from root-relative URL -->
TestTag2.doStartTag() called here
TestTag2.doEndTag() called here
<!-- Test loading from non-root-relative URL -->
TestTag2.doStartTag() called here
TestTag2.doEndTag() called here
