На Оберонкоре Трурль показывал как с помощью WITH завалить Блэкбокс. Деталей уже не помню, но общий смысл в следующем. Компилятор думает, что внутри блока WITH после кастинга динамический тип переменной на которую ссылается закастованная ссылка на протяжении всего блока уже не изменяется. Но это не всегда так. Дело в том, что той переменной, на которую мы получили ссылку теперь можно присвоить другое значение (например, с помощью другого указателя) с другим динамическим типом. Так получается, что WITH - это дыра в системе защиты типов.