" {/for}\n";
List<StandaloneNode> nodes = parseTemplateBody(templateBody);
assertEquals(1, nodes.size());
ForNode fn = (ForNode) nodes.get(0);
assertEquals("i", fn.getVarName());
List<String> rangeArgTexts = fn.getRangeArgTexts();
assertEquals(2, rangeArgTexts.size());
assertEquals("1", rangeArgTexts.get(0));
assertEquals("$items.length + 1", rangeArgTexts.get(1));
List<ExprRootNode<?>> rangeArgs = fn.getRangeArgs();
assertEquals(2, rangeArgs.size());
assertTrue(rangeArgs.get(0).getChild(0) instanceof IntegerNode);
assertTrue(rangeArgs.get(1).getChild(0) instanceof PlusOpNode);
assertEquals(1, fn.numChildren());
MsgNode mn = (MsgNode) fn.getChild(0);
assertEquals(4, mn.numChildren());
assertEquals("$i",
((PrintNode) ((MsgPlaceholderNode) mn.getChild(0)).getChild(0)).getExprText());
assertEquals("$items[$i - 1]",
((PrintNode) ((MsgPlaceholderNode) mn.getChild(2)).getChild(0)).getExprText());