code: public static <E> ArrayDeque<E> newArrayDeque(Iterable<? extends E> elements) {
      if (elements instanceof Collection) {
        return new ArrayDeque<E>(Collections2.cast(elements));
      }
      ArrayDeque<E> deque = new ArrayDeque<E>();
      Iterables.addAll(deque, elements);
      return deque;
    }
docs: Creates an {@code ArrayDeque} containing the elements of the specified iterable, in the order
  they are returned by the iterable's iterator.
  
  @since 12.0