static <A> ImmutableNonEmptyIterable<A> unsafeImmutableNonEmptyIterable(Iterable<A> underlying) {
        if (underlying instanceof ImmutableNonEmptyIterable<?>) {
            return (ImmutableNonEmptyIterable<A>) underlying;
        } else if (underlying instanceof Collection<?>) {
            return ImmutableNonEmptyCollectionWrapper.wrap((Collection<A>) underlying);