@Override
    public Object[] next() {
      if (context.getErrorInfoCollector().hasErrors()) {
        return null;
      }
      Assert.that(dataProviders.length == context.getCurrentFeature().getDataProviders().size());
      firstIteration = false;

      // advances iterators and computes args
      Object[] next = new Object[dataProviders.length];
      for (int i = 0; i < dataProviders.length; ) {
        try {
          if (dataProviderIterators[i] == null) {
            continue;
          }
          // if the filter block excluded an iteration
          // this might be called after the last iteration
          // so just return null if no further data is available
          // to just cause the iteration to be skipped
          if (!dataProviderIterators[i].hasNext()) {
            return null;
          }
          Object[] nextValues = dataProviderIterators[i].next();
          if (nextValues == null) {
            return null;
          }
          System.arraycopy(nextValues, 0, next, i, nextValues.length);
          i += nextValues.length;
        } catch (Throwable t) {
          supervisor.error(context.getErrorInfoCollector(), new ErrorInfo(context.getCurrentFeature().getDataProviders().get(i).getDataProviderMethod(), t, getErrorContext()));
          return null;
        }
      }
      return next;
    }
A fallback iterator that returns a single empty iteration.
<p>
This is used when a feature has no data provider method and iteration behavior is forcefully enabled.

@since 2.3
spock-core/src/main/java/org/spockframework/runtime/DataIteratorFactory.java