@Override
 public Boolean caseForLoopStart(ForLoopStart object) {
   RichStringForLoop loop = object.getLoop();
   acceptor.acceptForLoop(loop.getDeclaredParam(), loop.getForExpression());
   pushTemplateIndentationTwice(
       computeInitialIndentation((RichString) loop.getEachExpression()));
   boolean hasNext =
       acceptor.forLoopHasNext(
           loop.getBefore(),
           loop.getSeparator(),
           indentationHandler.getTotalSemanticIndentation());
   if (hasNext) {
     while (hasNext) {
       computeNextPart(object);
       while (nextPart != object.getEnd()) {
         doSwitch(nextPart);
       }
       hasNext =
           acceptor.forLoopHasNext(
               loop.getBefore(),
               loop.getSeparator(),
               indentationHandler.getTotalSemanticIndentation());
     }
   } else {
     nextPart = object.getEnd();
   }
   return Boolean.TRUE;
 }
 @Override
 public Boolean caseRichStringForLoop(RichStringForLoop object) {
   ForLoopStart start = factory.createForLoopStart();
   start.setLoop(object);
   addToCurrentLine(start);
   doSwitch(object.getEachExpression());
   ForLoopEnd end = factory.createForLoopEnd();
   end.setStart(start);
   addToCurrentLine(end);
   return Boolean.TRUE;
 }