package Incomplete3 is type Output_T; type Output_T is abstract tagged private; type Tracer_T is tagged private; function Get_Tracer (This : access Output_T'Class) return Tracer_T'class; function Get_Output (This : in Tracer_T) return access Output_T'Class; private type Output_T is abstract tagged record B : Boolean := True; end record; type Tracer_T is tagged record Output : access Output_T'Class := null; end record; end Incomplete3;