package body Opt27_Pkg is type Node_Rec_T is record Element : Element_T; Left : Node_T; Right : Node_T; end record; function Is_Null (Node : in Node_T) return Boolean is begin return (Node = null); end Is_Null; function Find_Elem (Template : Template_T; List : List_T) return Node_T is Element_Found : Boolean := False; Node_Walker : Node_T := null; begin Node_Walker := List.First_Node; while not Element_Found and (Node_Walker /= null) loop if Is_Match (Node_Walker.Element, Template) then Element_Found := True; else Node_Walker := Node_Walker.Right; end if; end loop; return Node_Walker; end; end Opt27_Pkg;