generic
    type Item is limited private;
    type Pointer is access Item;
    with procedure Free (The_Item : in out Item);
    with procedure Set_Pointer
                      (The_Item : in out Item; The_Pointer : in Pointer);
    with function Pointer_Of (The_Item : in Item) return Pointer;
package Storage_Manager_Concurrent is

    procedure Free (The_Pointer : in out Pointer);

    function New_Item return Pointer;

end Storage_Manager_Concurrent;