generic type Item is private; type Index is (<>); type Items is array (Index range <>) of Item; with function "<" (Left : in Item; Right : in Item) return Boolean; package Heap_Sort is procedure Sort (The_Items : in out Items); end Heap_Sort;