with Ada.Containers.Vectors; package Atomic4 is type String is limited null record; type String_Access is access all String; pragma Atomic (String_Access); type Reference is record Text : String_Access; end record; package Reference_Vectors is new Ada.Containers.Vectors (Natural, Reference); type Reader is tagged limited record Current_Reference : Reference; Reference_Stack : Reference_Vectors.Vector; end record; procedure Next (Self : in out Reader'Class); end Atomic4;