@Beta
  public <U> void verifyEach(
    Iterable<U> things,
    Function<? super U, ?> namer,
    @ClosureParams(value = FromString.class, options = {"U", "U, int"})
    @DelegatesTo(type = "U", strategy = Closure.DELEGATE_FIRST)
    Closure<?> closure
  ) {
    if (things == null) {
      throw new SpockAssertionError("Target of 'verifyEach' block must not be null");
    }
    if (namer == null) {
      throw new SpockAssertionError("Namer for a 'verifyEach' block must not be null");
    }
    SpockRuntime.verifyEach(things, namer, closure);
  }
Performs assertions on each item, collecting up failures instead of stopping at first.
<p>
Exception messages will contain the result of calling the namer for an item to identify it.
<p>
The closure can either use one or two parameters.
The first parameter will always be the item.
The second optional parameter will be the iteration index of the item.

@param things the iterable to inspect
@param namer the namer function to use when rendering the exception
@param closure a code block containing top-level conditions
@param <U> type of items in things
@since 2.4
spock-core/src/main/java/spock/lang/Specification.java