Во всяких RunBase'ах, если они предоставляют пользователю интерактивный QueryRun для выборки обрабатываемых данных (см. также showQueryValues()), принято паковать Query/QueryRun для маршаллинга между клиентом и сервером, а также сохранения в SysLastValue. Из-за изменений в упаковываемых параметрах по мере изменения класса может случиться так, что полученный из SysLastValue набор сохраненных параметров уже не содержит упакованный Query/QueryRun - вообще либо в ожидаемой позиции контейнера. Чтобы не словить из-за этого ошибку времени выполнения, в unpack() такого класса-наследника RunBase обычно проверяют, можно ли распаковать Query/QueryRun из параметров, для чего в первом приближении и предназначен указанный метод. Однако, у него есть один фатальный недостаток

Упакованный Query/QueryRun - это контейнер из одного значения типа BLOB, а метод не проверяет, какого именно типа значение содержится в контейнере, так что если там будет int или real, метод не почует подвоха, и вы все равно словите ошибку времени выполнения. Корректнее было бы дополнить метод такой проверкой:
X++:
ret = ret && typeOf(conPeek(packed, 1)) == Types::BLOB;