code: public static <E> List<E> asList(@Nullable E first, E[] rest) {
      return new OnePlusArrayList<>(first, rest);
    }
docs: 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