public static <E> List<E> asList(@Nullable E first, E[] rest) {
    return new OnePlusArrayList<>(first, rest);
  }
public static <E> List<E> asList(@Nullable E first, E[] rest) {
    return new OnePlusArrayList<>(first, rest);
  }
public static < E > List < E > asList ( @ Nullable E first , E [ ] rest ) { return new OnePlusArrayList <> ( first , rest ) ; }
Returns an unmodifiable list containing the specified first element and backed by the specified
array of additional elements. Changes to the {@code rest} array will be reflected in the
returned list. Unlike {@link Arrays#asList}, the returned list is unmodifiable.

<p>This is useful when a varargs method needs to use a signature such as {@code (Foo firstFoo,
Foo... moreFoos)}, in order to avoid overload ambiguity or to enforce a minimum argument count.

<p>The returned list is serializable and implements {@link RandomAccess}.

@param first the first element
@param rest an array of additional elements, possibly empty
@return an unmodifiable list containing the specified elements
Returns an unmodifiable list containing the specified first element and backed by the specified array of additional elements . Changes to the { @code rest } array will be reflected in the returned list . Unlike { @link Arrays#asList } the returned list is unmodifiable .