procedure Structural is
   type T;
   type T_Access is access all T;
   
   type A (D : Boolean) is record
      case D is
         when True =>
            B : T_Access;
         when False =>
            C : T_Access;
      end case;
   end record;

   type A_Access is access all A;

   type T is record
      P : A_Access;
   end record;

   V1 : A_Access;
   V3 : Integer;
begin
   V1 := new A' (D => True, B => null);
   V1.B := new T' (P => V1);

   --  Break on the following line.
   --  Then display V1, V1.B, V1.B.P
   V3 := 0;
end Structural;
