code: public CsvReader includeFields(boolean ... fields) {
  		if (fields == null || fields.length == 0) {
  			throw new IllegalArgumentException("The set of included fields must not be null or empty.");
  		}
  
  		int lastTruePos = -1;
  		for (int i = 0; i < fields.length; i++) {
  			if (fields[i]) {
  				lastTruePos = i;
  			}
  		}
  
  		if (lastTruePos == -1) {
  			throw new IllegalArgumentException("The description of fields to parse excluded all fields. At least one fields must be included.");
  		}
  		if (lastTruePos == fields.length - 1) {
  			this.includedMask = fields;
  		} else {
  			this.includedMask = Arrays.copyOfRange(fields, 0, lastTruePos + 1);
  		}
  		return this;
  	}
docs: Configures which fields of the CSV file should be included and which should be skipped. The
  parser will look at the first {@code n} fields, where {@code n} is the length of the boolean
  array. The parser will skip over all fields where the boolean value at the corresponding position
  in the array is {@code false}. The result contains the fields where the corresponding position in
  the boolean array is {@code true}.
  The number of fields in the result is consequently equal to the number of times that {@code true}
  occurs in the fields array.
  
  @param fields The array of flags that describes which fields are to be included and which not.
  @return The CSV reader instance itself, to allow for fluent function chaining.