code: public static <T> Iterable<T> cycle(T... elements) {
      return cycle(Lists.newArrayList(elements));
    }
docs: Returns an iterable whose iterators cycle indefinitely over the provided
  elements.
  
  <p>After {@code remove} is invoked on a generated iterator, the removed
  element will no longer appear in either that iterator or any other iterator
  created from the same source iterable. That is, this method behaves exactly
  as {@code Iterables.cycle(Lists.newArrayList(elements))}. The iterator's
  {@code hasNext} method returns {@code true} until all of the original
  elements have been removed.
  
  <p><b>Warning:</b> Typical uses of the resulting iterator may produce an
  infinite loop. You should use an explicit {@code break} or be certain that
  you will eventually remove all the elements.
  
  <p>To cycle over the elements {@code n} times, use the following:
  {@code Iterables.concat(Collections.nCopies(n, Arrays.asList(elements)))}