Appends all of the elements in the specified Collection to the end of this list, in the order that they are returned by the specified Collection's Iterator. The behavior of this operation is undefined if the specified Collection is modified while the operation is in progress. (This implies that the behavior of this call is undefined if the specified Collection is this list, and this list is nonempty.)
This method performs any necessary type conversion.
@param c the elements to be inserted into this list.
@return
true if this list changed as a result of the call.
@throws NullPointerException if the specified collection is null.