android/guava/src/com/google/common/collect/Lists.java
@SafeVarargs
  @GwtCompatible(serializable = true)
  public static <E> ArrayList<E> newArrayList(E... elements) {
    checkNotNull(elements); // for GWT
    // Avoid integer overflow when a large array is passed in
    int capacity = computeArrayListCapacity(elements.length);
    ArrayList<E> list = new ArrayList<>(capacity);
    Collections.addAll(list, elements);
    return list;
  }
@SafeVarargs
  @GwtCompatible(serializable = true)
  public static <E> ArrayList<E> newArrayList(E... elements) {
    checkNotNull(elements); // for GWT
    // Avoid integer overflow when a large array is passed in
    int capacity = computeArrayListCapacity(elements.length);
    ArrayList<E> list = new ArrayList<>(capacity);
    Collections.addAll(list, elements);
    return list;
  }
Creates a <i>mutable</i> {@code ArrayList} instance containing the given elements.

<p><b>Note:</b> essentially the only reason to use this method is when you will need to add or
remove elements later. Otherwise, for non-null elements use {@link ImmutableList#of()} (for
varargs) or {@link ImmutableList#copyOf(Object[])} (for an array) instead. If any elements
might be null, or you need support for {@link List#set(int, Object)}, use {@link
Arrays#asList}.

<p>Note that even when you do need the ability to add or remove, this method provides only a
tiny bit of syntactic sugar for {@code newArrayList(}{@link Arrays#asList asList}{@code
(...))}, or for creating an empty list then calling {@link Collections#addAll}. This method is
not actually very useful and will likely be deprecated in the future.