A simple test follows:

${message}

${dummy}

Now get into variable nesting:

${hash.output}

${hash["output"]}

${hash. output}

${hash .output}

${hash .output}

${hash . output}

${hash ["output"]}

${hash [ "output" ]}

More deep nesting...

${hash2.value.output}

${hash2.value.key[0]}

${hash2["value"]["key"][0]}

Nesting inside nesting...

${hash2.value[ items.mykey ][ 1 ]}

${hash2.value[ items[ "mykey" ]][ 1 ]}

${hash2.value[ items[ "my" + items.mykey ]][ 1 ]}

${hash2.value[ items[ "my" + items["mykey"] ]][ 1 ]}

Test underscores...

${items[ "_test" ]}

${items._test}

Test literals in a variable expression:

1 + 2 = ${ 1 + 2 }

${ items._test + 3}

${ items._test eq "out" }

Test #empty

"hello" + #empty = ${"hello" + #empty}

#empty + "hello" = ${#empty + "hello"}

3 + #empty = ${3 + #empty}

#empty + 4 = ${#empty + 4}

3 + 4 + #empty = ${3 + 4 + #empty}

3 + #empty + 4 = ${3 + #empty + 4}

#empty + 3 + 4 = ${#empty + 3 + 4}