@Override
    public @NotNull Iterator<E> iterator() {
      List<Iterable<? extends E>> iterables = Arrays.asList(getIterables());
      //noinspection unchecked
      return new FlattenFun.FlattenIt<E, E>(
        (Iterator<? extends E>)iterables.iterator(),
        Functions.<E, Iterable<E>>identity());
    }
@Override
    public @NotNull Iterator<E> iterator()