static <A> NonEmptyIterable<A> unsafeNonEmptyIterable(Iterable<A> underlying) {
        if (underlying instanceof NonEmptyIterable<?>) {
            return (NonEmptyIterable<A>) underlying;
        } else if (underlying instanceof Collection<?>) {
            return NonEmptyCollectionWrapper.wrap((Collection<A>) underlying);