@Override
  public void rowProcessed(Object[] row, T context) {
    splitter.addValuesToColumns(row, context);
    batchCount++;

    if (batchCount >= rowsPerBatch) {
      batchProcessed(batchCount);
      batchCount = 0;
      splitter.clearValues();
      batchesProcessed++;
    }
  }
 @Override
 public void processStarted(T context) {
   super.processStarted(context);
   splitter.reset();
   batchCount = 0;
   batchesProcessed = 0;
 }
 @Override
 public final String[] getHeaders() {
   return splitter.getHeaders();
 }
 /**
  * Returns the values of a given column.
  *
  * @param columnName the name of the column in the input.
  * @param columnType the type of data in that column
  * @param <V> the type of data in that column
  * @return a list with all data stored in the given column
  */
 public <V> List<V> getColumn(String columnName, Class<V> columnType) {
   return splitter.getColumnValues(columnName, columnType);
 }
 /**
  * Returns the values of a given column.
  *
  * @param columnIndex the position of the column in the input (0-based).
  * @param columnType the type of data in that column
  * @param <V> the type of data in that column
  * @return a list with all data stored in the given column
  */
 public <V> List<V> getColumn(int columnIndex, Class<V> columnType) {
   return splitter.getColumnValues(columnIndex, columnType);
 }
 @Override
 public List<Object> getColumn(String columnName) {
   return splitter.getColumnValues(columnName, Object.class);
 }
 @Override
 public List<Object> getColumn(int columnIndex) {
   return splitter.getColumnValues(columnIndex, Object.class);
 }
 @Override
 public final Map<Integer, List<Object>> getColumnValuesAsMapOfIndexes() {
   return splitter.getColumnValuesAsMapOfIndexes();
 }
 @Override
 public final Map<String, List<Object>> getColumnValuesAsMapOfNames() {
   return splitter.getColumnValuesAsMapOfNames();
 }
 @Override
 public final void putColumnValuesInMapOfIndexes(Map<Integer, List<Object>> map) {
   splitter.putColumnValuesInMapOfIndexes(map);
 }
 @Override
 public final void putColumnValuesInMapOfNames(Map<String, List<Object>> map) {
   splitter.putColumnValuesInMapOfNames(map);
 }
 @Override
 public final List<List<Object>> getColumnValuesAsList() {
   return splitter.getColumnValues();
 }