separate (Halstead_List)
procedure Iterate (Across_The_List : in List) is
    --==============================================================
    -- Iterate allows a user to visit every item in the list      ==
    -- without changing the state of the list.                    ==
    --==============================================================

    Current_Node : List := Across_The_List;

begin
    -- Iterate

    Traverse_List:
        while Current_Node /= null loop

            Process (This_Item => Current_Node.Location_Of_Item.all,
                     Frequency_Of_Item => Current_Node.Frequency);

            -- advance Current_Node to the next node
            Current_Node := Current_Node.Next;

        end loop Traverse_List;

end Iterate;