code: public static <T> Stream<T> cycle(T...items) {
        return IntStream.iterate(0, i -> i == items.length - 1 ? 0 : i + 1).mapToObj(i -> items[i]);
      }
docs: Cycles through a set of items indefinitely.
  @param items The items to cycle through.
  @param <T> The type of the items.
  @return An infinite stream cycling through the supplied items.