## Код:
```
PROCEDURE Mark (this: Block);
....
   IF (flag >= 2) & (actual < this.last) & (offset < -4) THEN   (* next array element *)
....
                  S.GET(actual + offset, son);
                  IF son # NIL THEN
                     DEC(S.VAL(INTEGER, son), blockDataOffs);
...
```


Здесь вверху -4 так и должно остаться -4.

Mark - единственная непонятная мне лично в Kernel до конца из-за переоптимизации процедура.
Там рекурсия, реализованная через циклы (при этом массива для хранения стека пути по ссылкам они не используют).
Вот это -4 мне непонятно.