Хотелось бы уточнить пару деталей по грамматике языка:
## Код:
```
MODULE MyMod;

  TYPE
    R0 = RECORD a: INTEGER END;
    R1 = RECORD (R0) b: INTEGER END;
    P0 = POINTER TO R0;
    P1 = POINTER TO R1;

  VAR
    p0: P0;
    p1: P1;

BEGIN
  NEW(p0);
  NEW(p1);
  p0 := p1; (* 1. Насколько понимаю, так можно делать *)
  p0^ := p1^; (* 2. Это не должно компилироваться, хотя для Oberon-2 такое возможно *)
  p1^ := p0^; (* 3. Это должно компилироваться, согласно пункту 9.1 п 4 *)
END MyMod.
```

Правильно ли понимаю относительно пунктов 1, 2, 3?