separate (Compilation_Unit)
procedure Add_Compilation_Units
             (Added_Unit : in Ada_Compilation_Unit;
              Unit_To_Add_To : in out Ada_Compilation_Unit) is
    --==================================================================
    -- Append Added_Unit to the end of Unit_To_Add_To                 ==
    --==================================================================

    Tail_Of_Unit_To_Add_To : New_List.List;
    Copy_Of_Added_Unit : New_List.List;

begin
    -- Add_Compilation_Units

    New_List.Share (The_List => New_List.List (Added_Unit),
                    With_The_List => Copy_Of_Added_Unit);

    New_List.Share (The_List => New_List.Tail_Of
                                   (New_List.List (Unit_To_Add_To)),
                    With_The_List => Tail_Of_Unit_To_Add_To);

    New_List.Append (This_List => Tail_Of_Unit_To_Add_To,
                     And_This_List => Copy_Of_Added_Unit);

exception
    when New_List.List_Is_Empty =>
        null; -- no change to values of ADDED_UNIT and
        -- UNIT_TO_ADD_TO; i.e., they are still NULL

end Add_Compilation_Units;