}
if (StringUtils.isNotEmpty(set)) {
directives.add(new SetDirective(Template.class, set, (Expression) expressionParser.parse(expr, exprOffset), parent, hide, offset));
}
if (out) {
directives.add(new ValueDirective((Expression) expressionParser.parse(expr, exprOffset), true, offset));
}
macroName = macroName.trim();
directives.add(new MacroDirective(macroName, offset));
if (StringUtils.isNotEmpty(macroParams)) {
defineVariableTypes(macroParams, exprOffset, directives);
}
} else if (StringUtils.inArray(name, endDirective)) {
directives.add(new EndDirective(offset));
}
} else if (message.endsWith("}") && (message.startsWith("${") || message.startsWith("$!{")
|| message.startsWith("#{") || message.startsWith("#!{"))) {
int i = message.indexOf('{');
directives.add(new ValueDirective((Expression) expressionParser.parse(message.substring(i + 1, message.length() - 1),
offset + i + 1), message.startsWith("$!") || message.startsWith("#!"), offset));
} else if (message.startsWith("##")) {
directives.add(new Comment(message.substring(2), false, offset));
} else if ((message.startsWith("#*") && message.endsWith("*#"))) {
directives.add(new Comment(message.substring(2, message.length() - 2), true, offset));