[#ftl]


[#macro test hash desc]
${desc} (${hash?size}):
 [#list hash?keys?sort as key]
  ${key}[#list 0 .. (16 - key?length) as x] [/#list]: [@print value=hash[key]/]
 [/#list]
[/#macro]


[#macro print value="DEBUGME"]
  [#if value?is_number || value?is_string]
    ${value}[#t]
  [#elseif value?is_boolean]
    [#if value]true[#else]false[/#if][#t]
  [#else]
    UNKNOWN[#t]
  [/#if]
[/#macro]
[@test hash=m1 desc="properties only, shadow"/]

[@test hash=m2 desc="properties only"/]

[@test hash=m3 desc="nothing, shadow"/]

[@test hash=m4 desc="nothing"/]

[@test hash=m5 desc="all, shadow"/]

[@test hash=m6 desc="all"/]

[@test hash=m7 desc="simple map mode"/]


String concatenation:
  ${s1 + s2}
  ${s3 + s4}
  ${s1 + s3}
  ${s2 + s4}
