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;