-- { dg-do compile } with Ada.Finalization; with Controlled1_Pkg; use Controlled1_Pkg; package Controlled1 is type Collection is new Ada.Finalization.Controlled with null record; type Object_Kind_Type is (One, Two); type Byte_Array is array (Natural range <>) of Integer; type Bounded_Byte_Array_Type is record A : Byte_Array (1 .. Value); end record; type Object_Type is tagged record A : Bounded_Byte_Array_Type; end record; type R_Object_Type is new Object_Type with record L : Collection; end record; type Obj_Type (Kind : Object_Kind_Type := One) is record case Kind is when One => R : R_Object_Type; when others => null; end case; end record; type Obj_Array_Type is array (Positive range <>) of Obj_Type; end Controlled1;