public static CsvMapper createCsvMapper() {
        final CsvMapper csvMapper = new CsvMapper();
        registerModules(csvMapper);
        return csvMapper;
    }
@Test
    void testCsvMapperOptionalSupportedEnabled() throws Exception {
        final CsvMapper mapper =
                JacksonMapperFactory.createCsvMapper()
                        // ensures symmetric read/write behavior for empty optionals/strings
                        // ensures:   Optional.empty() --write--> "" --read--> Optional.empty()
                        // otherwise: Optional.empty() --write--> "" --read--> Optional("")
                        // we should consider enabling this by default, but it unfortunately
                        // also affects String parsing without Optionals (i.e., prior code)
                        .enable(CsvParser.Feature.EMPTY_STRING_AS_NULL);

        final ObjectWriter writer = mapper.writerWithSchemaFor(TypeWithOptional.class);

        assertThat(writer.writeValueAsString(new TypeWithOptional(Optional.of("value"))))
                .isEqualTo("value\n");
        assertThat(writer.writeValueAsString(new TypeWithOptional(Optional.empty())))
                .isEqualTo("\n");

        final ObjectReader reader = mapper.readerWithSchemaFor(TypeWithOptional.class);

        assertThat(reader.readValue("value\n", TypeWithOptional.class).data).contains("value");
        assertThat(reader.readValue("null\n", TypeWithOptional.class).data).contains("null");
        assertThat(reader.readValue("\n", TypeWithOptional.class).data).isEmpty();
    }