generic type Tree is private; with function Is_Null (The_Tree : in Tree) return Boolean; with function Number_Of_Children_In (The_Tree : in Tree) return Natural; with function Child_Of (The_Tree : in Tree; The_Child : in Positive) return Tree; package Tree_Search_Arbitrary is generic with procedure Process (The_Tree : in Tree; Continue : out Boolean); procedure Traverse_Pre_Order (The_Tree : in Tree); generic with procedure Process (The_Tree : in Tree; Continue : out Boolean); procedure Traverse_Post_Order (The_Tree : in Tree); end Tree_Search_Arbitrary;