package Generator_Of_Strings_And_Dyn_Values is
    subtype Key_Type is String (1 .. 4);
    type Value_Type is limited private;
    type Item_Type is
        record
            Key : Key_Type;
            Val : Value_Type;
        end record;
    type Vector_Type is array (Positive range <>) of Item_Type;
    procedure Generate (Vector : in out Vector_Type);
    procedure Generate2 (Vector : in out Vector_Type);
    procedure Generate_Ascending (Vector : in out Vector_Type);
    procedure Generate_Descending (Vector : in out Vector_Type);

    procedure Assign (Dest : in out Key_Type; Source : in Key_Type);
    procedure Assign (Dest : in out Value_Type; Source : in Value_Type);
    procedure Destroy (Val : in out Value_Type);
    function Equals (Left, Right : Value_Type) return Boolean;
    function Equals (Left, Right : Key_Type) return Boolean;
    function Less (Left, Right : Key_Type) return Boolean;

private
    type Value_Type is access Integer;
end Generator_Of_Strings_And_Dyn_Values;