code: public static <T> Ix<T> from(Iterable<T> source) {
          if (source instanceof Ix) {
              return (Ix<T>)source;
          }
          return new IxWrapper<T>(nullCheck(source, "source"));
      }
docs: Wraps the given Iterable source into an Ix instance (if
  not already an Ix subclass).
  <p>
  The result's iterator() forwards the remove() calls to the source's
  iterator().
  @param <T> the value type
  @param source the Iterable to wrap, not null
  @return the new Ix instance
  @throws NullPointerException if source is null
  @since 1.0