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);
		}
	}
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 ) ; } }
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.