generic
    type Item is private;
    type Index is (<>);
    type Items is array (Index range <>) of Item;
    with procedure Put (The_Item : in Item);
    with function Filter (The_Items : in Items) return Item;
package Compress_Filter is

    procedure Compress (The_Items : in Items);

end Compress_Filter;