package Lines is

    subtype Line is String;

    type Lines_Type is private;

    function Make return Lines_Type;

    function Is_Empty (Lines : Lines_Type) return Boolean;

    procedure Add (New_Line : Line; To : in out Lines_Type);

    type Line_Iterator is private;

    function Initialize (Lines : Lines_Type) return Line_Iterator;
    function Value (Iterator : Line_Iterator) return Line;
    procedure Next (Iterator : in out Line_Iterator);
    function Done (Iterator : Line_Iterator) return Boolean;

private
    type Lines_Type is new Boolean;

    type Line_Iterator is new Boolean;
end Lines;

