static <T> ISeq<T> of(final Iterable<? extends T> values) {
		requireNonNull(values);

		@SuppressWarnings("unchecked")
		final Iterable<T> vals = (Iterable<T>)values;
		return switch (vals) {
			case ISeq<T> seq -> seq;
			case MSeq<T> seq -> seq.toISeq();
			default -> MSeq.<T>of(values).toISeq();
		};
	}
Create a new {@code ISeq} from the given values.

@param <T> the element type
@param values the array values.
@return a new {@code ISeq} with the given values.
@throws NullPointerException if the {@code values} array is {@code null}.
jenetics/src/main/java/io/jenetics/util/ISeq.java