1generic 2 3 type Element_T is private; 4 5package Opt27_Pkg is 6 7 type Node_T is private; 8 9 type List_T is private; 10 11 function Is_Null (Node : in Node_T) return Boolean; 12 13 generic 14 15 type Template_T is private; 16 17 with function Is_Match 18 (Element : in Element_T; 19 Template : in Template_T) return Boolean is <>; 20 21 function Find_Elem (Template : Template_T; List : List_T) return Node_T; 22 23private 24 25 type Node_Rec_T; 26 type Node_T is access Node_Rec_T; 27 28 type List_T is record 29 First_Node : Node_T := null; 30 Last_Node : Node_T := null; 31 end record; 32 33end Opt27_Pkg; 34