Generating Java code

Use FLUYT_CC syntax
FLUYT_CC allows hiding the template markup in Java comment. To the IDE the template can look like a valid Java file, that allows to use all the awesome feature fof the IDE:
// $fields{ private /*$type(*/int/*)*/ $name$; // }$
Prefer language integration where possible
Java allows the $ sign in names. Using that leads to pretty small overhead in Templates
public $Type$ get$Name$()
Terminate locations when using Syntax integration
The FLUYT syntax family always starts expressions with a $ sign. For locations, it is technically optional to also terminate the expression with a $ sign. However, the end of the name can be very confusing, as FLUYT syntaxes allow the dot as a name part:
$name.getX() /// Refers to a location 'name.getX' $name$.getX() /// Refers to a location 'name'
Express the case by variable name, not formatter
While the formatter does support a lot of the necessary variants, intact templates get too confusing, as this requires weird workarounds. In most cases it's better to move the complexity to the Renderer:
tpl.set("name", lowerCamel(name)).set("Name", upperCamel(name)).set("NAME", constantCase(name));