code: public static <T> void parse(final InputStream inputStream, final Consumer<List<String>> headersValidator,
  			final BiFunction<List<String>, List<String>, T> lineConverter, final Consumer<T> resultConsumer)
  			throws IOException, CSVStreamException {
  		try (final Reader inputStreamReader = new BufferedReader(
  				new InputStreamReader(inputStream, StandardCharsets.UTF_8));) {
  			parse(inputStreamReader, headersValidator, lineConverter, resultConsumer);
  		}
  	}
docs: Stream a CSV file from the given InputStream through the header validator,
  line checker, and if the line checker succeeds, send the checked/converted
  line to the consumer.
  
  @param inputStream
  The {@link InputStream} containing the CSV file.
  @param headersValidator
  The validator of the header line. Throwing
  IllegalArgumentException or other RuntimeExceptions causes the
  parsing process to short-circuit after parsing the header line,
  with a CSVStreamException being rethrown by this code.
  @param lineConverter
  The validator and converter of lines, based on the header line. If
  the lineChecker returns null, the line will not be passed to the
  writer.
  @param resultConsumer
  The consumer of the checked lines.
  @param <T>
  The type of the results that will be created by the lineChecker
  and pushed into the writer {@link Consumer}.
  @throws IOException
  If an error occurred accessing the input.
  @throws CSVStreamException
  If an error occurred validating the input.