code: public static <T> CloseableIterable<T> cycle(final CloseableIterable<T> iterable) {
          return wrap(Iterables.cycle(iterable), iterable);
      }
docs: Returns a closeable iterable whose iterators cycle indefinitely over the elements of
  {@code iterable}.
  <p/>
  <p>That iterator supports {@code remove()} if {@code iterable.iterator()}
  does. After {@code remove()} is called, subsequent cycles omit the removed
  element, which is no longer in {@code iterable}. The iterator's
  {@code hasNext()} method returns {@code true} until {@code iterable} is
  empty.
  <p/>
  <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.  The close method should be expicitly
  called when done with iteration.  Tools such as {@code CloseableIterables.autoClose()}
  will not work.