В своё время думал над таким подходом. Пришёл к выводу, что не надёжно. Код меняется. Если использовать свёртывание (folding), то при каждой правке нужно менять текст всей иерархии объектов.

## Код:
```
FOR i:=1 TO ...
<вывести символ>
END;
```


А не важно, что там внутри уже Read, а не Write символ? Содержимое контейнера изменилось, название дезинформирует. Пример примитивный, но если представить себе сложный код, то вполне реальный. Вдобавок, folding легко преобразуется в подпроцедуру с читаемым именем и той же функцией.