code: private <T> T readIntoBean(final T bean, final Class<T> clazz, final CellProcessor[] processors) throws IOException {
  		if( readRow() ) {
  			if( processors == null ) {
  				// populate bean data with the raw String values
  				beanData.getColumns().clear();
  				beanData.getColumns().addAll(getColumns());
  			} else {
  				// populate bean data with the processed values
  				executeProcessors(beanData.getColumns(), processors);
  			}
  			
  			if( bean != null ) {
  				// populate existing bean
  				dozerBeanMapper.map(beanData, bean);
  				return bean;
  			} else {
  				// let Dozer create a new bean
  				return dozerBeanMapper.map(beanData, clazz);
  			}
  			
  		}
  		
  		return null; // EOF
  	}
docs: Reads a row of a CSV file and populates the a bean, using Dozer to map column values to the appropriate field. If
  an existing bean is supplied, Dozer will populate that, otherwise Dozer will create an instance of type clazz
  (only one of bean or clazz should be supplied). If processors are supplied then they are used, otherwise the raw
  String values will be used.
  
  @param bean
  the bean to populate (if null, then clazz will be used instead)
  @param clazz
  the type to instantiate (only required if bean is null)
  @param processors
  the (optional) cell processors
  @return the populated bean
  @throws IOException
  if an I/O error occurred