code: public static <T> List<T> immutableListMerge(List<? extends T> list1, List<? extends T> list2) {
        return new ImmutableListCopy<>(list1, list2);
     }
docs: 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