private Object[] nextArgs(Iterator[] iterators) {
    if (runStatus != OK) return null;

    Object[] next = new Object[iterators.length];
    for (int i = 0; i < iterators.length; i++)
      try {
        next[i] = iterators[i].next();
      } catch (Throwable t) {
        runStatus = supervisor.error(
            new ErrorInfo(currentFeature.getDataProviders().get(i).getDataProviderMethod(), t));
        return null;
      }

    try {
      return (Object[])invokeRaw(sharedInstance, currentFeature.getDataProcessorMethod(), next);
    } catch (Throwable t) {
      runStatus = supervisor.error(
          new ErrorInfo(currentFeature.getDataProcessorMethod(), t));
      return null;
    }
  }
private Object [ ] nextArgs ( Iterator [ ] iterators ) { if ( runStatus != OK ) return null ; Object [ ] next = new Object [ iterators . length ] ; for ( int i = 0 ; i < iterators . length ; i ++ ) try { next [ i ] = iterators [ i ] . next ( ) ; } catch ( Throwable t ) { runStatus = supervisor . error ( new ErrorInfo ( currentFeature . getDataProviders ( ) . get ( i ) . getDataProviderMethod ( ) , t ) ) ; return null ; } try { return ( Object [ ] ) invokeRaw ( sharedInstance , currentFeature . getDataProcessorMethod ( ) , next ) ; } catch ( Throwable t ) { runStatus = supervisor . error ( new ErrorInfo ( currentFeature . getDataProcessorMethod ( ) , t ) ) ; return null ; } }
advances iterators and computes args