code: private AnalysisJob buildSlaveJob(final AnalysisJob job, final int slaveJobIndex, final int firstRow,
              final int maxRows) {
          logger.info("Building slave job {} with firstRow={} and maxRow={}", slaveJobIndex + 1, firstRow, maxRows);
  
          try (AnalysisJobBuilder jobBuilder = new AnalysisJobBuilder(_configuration, job)) {
  
              final FilterComponentBuilder<MaxRowsFilter, Category> maxRowsFilter =
                      jobBuilder.addFilter(MaxRowsFilter.class);
              maxRowsFilter.getComponentInstance().setFirstRow(firstRow);
              maxRowsFilter.getComponentInstance().setMaxRows(maxRows);
  
              final boolean naturalRecordOrderConsistent =
                      jobBuilder.getDatastore().getPerformanceCharacteristics().isNaturalRecordOrderConsistent();
              if (!naturalRecordOrderConsistent) {
                  final InputColumn<?> orderColumn = findOrderByColumn(jobBuilder);
                  maxRowsFilter.getComponentInstance().setOrderColumn(orderColumn);
              }
  
              jobBuilder.setDefaultRequirement(maxRowsFilter, MaxRowsFilter.Category.VALID);
  
              // in assertion/test mode do an early validation
              assert jobBuilder.isConfigured(true);
  
              return jobBuilder.toAnalysisJob();
          }
      }
docs: Creates a slave job by copying the original job and adding a
  {@link MaxRowsFilter} as a default requirement.
  
  @param job
  @param firstRow
  @param maxRows
  @return