<#ftl strict_syntax=false>
<#--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
    http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->
<html>
<head>
<title>FreeMarker: Comment Test</title>
</head>
<body>
<#--

A simple test follows:

${message}

A more rigorous test, showing that we're not faking it:

${message@#$%&}

--><#-- > --><#-- -> --><#-- -- --><#-- -- > --><comment> > </comment><comment> </comment </comment>
<if message?exists>
	<p>Message exists!
	<comment>
		...and even generates output!
	</comment>
	</p>
</if>

a <#-- < --> b
a <#-- </comment> - -- --> b

${1 + 2 + [#-- c --] <#-- c --> <!-- c --> 3}
${<!-- > -> -- #> #] --> 7}
${<#-- glitch... --] 8}
</body>
</html>
