## Код:
```
PROCEDURE Exec (a: Action);
      VAR t: Kernel.Type;
   BEGIN
      t := Kernel.TypeOf(a);
      IF t.mod.refcnt >= 0 THEN   (* execute action if its module is not unloaded *)
         a.Do   (* warning: here the actions and candidates lists may be modified, or a trap may occur! *)
      END
   END Exec;
```

Вот как справляются с похожей проблемой в Services.
То есть, для типов, которые могут иметь скрытые расширения, можно и нужно выполнять проверку указателей на валидность.