public static <T> List<T> immutableListMerge(List<? extends T> list1, List<? extends T> list2) {
      return new ImmutableListCopy<>(list1, list2);
   }
public static < T > List < T > immutableListMerge ( List < ? extends T > list1 , List < ? extends T > list2 ) { return new ImmutableListCopy < > ( list1 , list2 ) ; }
Creates a new immutable list containing the union (combined entries) of both lists.

@param list1 contains the first elements of the new list
@param list2 contains the successor elements of the new list
@return a new immutable merged copy of list1 and list2