## This is a template to convert.

<input type="submit" name="Button" value="$prevStep">&nbsp;

#foreach $this in $that
#begin
    This is the text
#end

#foreach $this in $that
{
    This is the text
}

#if ($foo)
#begin
    convert me!
#end  
#else
#begin
    convert me too!
#end    

#if ($nested) {
  #if ($foo)
  {  
    convert me!
  } #else {
    convert me too!
  }
}

 #set $action= $permission.getAction();
   $resource.getDescription();: $resource.getPattern();

$_leadingUnderscore

#set $entries = $host.getAuditLog($acl, $itemsPerPage, $filter)

This is an explicitly terminated $statement;.

$foo;.getBar() when $foo is a variable and getBar() is schmoo.

This is an escaped \$reference, and here's \$another;.

#parse "whatever.wm"
