Сюрпризы в BlackBox: Потерянная реализация метода

Вы будете долго смеяться, но в Блэкбоксе есть вот такой глюк:
## Код:
```
MODULE X;

  TYPE
    A = ABSTRACT RECORD END;
    B* = ABSTRACT RECORD (A) END;

  PROCEDURE (VAR this: A) Lost, NEW, ABSTRACT;
  
  PROCEDURE Call* (VAR a: A);
  BEGIN 
    a.Lost
  END Call;

END X.
```


## Код:
```
MODULE Y;

  IMPORT X;

  TYPE
    C* = RECORD (X.B) END;
  
  PROCEDURE Do*;
    VAR c: C; 
  BEGIN
    X.Call(c)
  END Do;
    
END Y.
```

Всё прекрасно компилируется, ведь процедура A.Lost не экспортируется, поэтому тип C, о ней ничего не знает и компилятор не требует реализации процедуры Lost от типа C. При выполнении, естественно, обнаруживается ошибка "NIL procedure call".