public static <I> Iterator<I> asIterator(final Iterable<? extends I> from) {
    //noinspection unchecked
    return from == null? Collections.<I>emptyIterator() : (Iterator<I>)from.iterator();
  }
public static <I> Iterator<I> asIterator(final Iterable<? extends I> from)