Как уже упоминалось: компилятор обманывает и вставляет во все известные мне реализации. Таким образом, нет необходимости в том, чтобы метод присутствовал в обычных ситуациях, и он обычно не вызывается.
Однако этот метод может быть полезен при выполнении или интерпретации динамически генерируемых структур кода без фактического использования компилятора.
Между прочим, поскольку стандарт языка Smalltalk (который на самом деле не существует) не заставляет реализации устранять хвостовые вызовы (в отличие, например, от Scheme), рекурсивная реализация в VW не очень полезна выполнение или интерпретация (если код-компилятор не стандартизирован).
Альтернативой без рекурсии может быть:
whileTrue:aBlock
self value ifFalse:[^ nil].
aBlock value.
thisContext restart