private CSVParser buildCsvParser(CSVFormat csvFormat, InputStream inputStream, ByteOrderMarkEnum byteOrderMark)
        throws IOException {
        if (byteOrderMark == null) {
            return csvFormat.parse(
                new InputStreamReader(inputStream, csvReadContext.csvReadWorkbookHolder().getCharset()));
        }
        return csvFormat.parse(new InputStreamReader(new BOMInputStream(inputStream, byteOrderMark.getByteOrderMark()),
            csvReadContext.csvReadWorkbookHolder().getCharset()));
    }
Builds and returns a CSVParser instance based on the provided CSVFormat, InputStream, and ByteOrderMarkEnum.

@param csvFormat The format configuration for parsing the CSV file.
@param inputStream The input stream from which the CSV data will be read.
@param byteOrderMark The enumeration representing the Byte Order Mark (BOM) of the file's character set.
@return A CSVParser instance configured to parse the CSV data.
@throws IOException If an I/O error occurs while creating the parser or reading from the input stream.

This method checks if the byteOrderMark is null. If it is null, it creates a CSVParser using the provided
input stream and charset. Otherwise, it wraps the input stream with a BOMInputStream to handle files with a
Byte Order Mark, ensuring proper decoding of the file content.
fastexcel-core/src/main/java/cn/idev/excel/analysis/csv/CsvExcelReadExecutor.java