code: private static List<String> parseForSummarise(final Reader input, final CsvMapper inputMapper,
  			final CsvSchema inputSchema, final List<String> overrideHeaders, final int headerLineCount,
  			List<String> defaultValues, BiFunction<List<String>, List<String>, List<String>> summariseFunction)
  			throws IOException, CSVStreamException {
  		// This will be populated with whatever is recognised as the headers when the
  		// input is parsed, so we can return it from this function
  		final List<String> headers = new ArrayList<>();
  		CSVStream.parse(input, h -> headers.addAll(h), summariseFunction, NULL_CONSUMER, overrideHeaders, defaultValues,
  				headerLineCount, inputMapper, inputSchema);
  		return headers;
  	}
docs: Parse the given inputs to in-memory maps to allow for summarisation.
  
  @param input
  The {@link Reader} containing the inputs to be summarised.
  @param inputMapper
  The CsvMapper to use to parse the file into memory
  @param inputSchema
  The CsvSchema to use to help the mapper parse the file into memory
  @param overrideHeaders
  Headers to use to override those in the file, or null to rely on
  the headers from the file
  @param headerLineCount
  The number of lines in the file that must be skipped, or 0 to not
  skip any headers and instead use overrideHeaders
  @param defaultValues
  A list that is either empty, signifying there are no default
  values known, or exactly the same length as each row in the CSV
  file being parsed. If the values for a field are empty/missing,
  and a non-null, non-empty value appears in this list, it will be
  substituted in when calculating the statistics.
  @param summariseFunction
  The function which will perform the summarisation
  @return The list of headers that were either overridden or found in the file
  @throws IOException
  If there is an error reading from the file
  @throws CSVStreamException
  If there is a problem processing the CSV content