### Question:
CSVStore extends DataStore implements WritableFeatureSet, ResourceOnFileSystem { @Override public Stream<Feature> features(boolean parallel) throws DataStoreException { final CSVReader reader = new CSVReader(this, getType(), fileLock); final Stream<Feature> stream = StreamSupport.stream(Spliterators.spliteratorUnknownSize(reader, Spliterator.ORDERED), false); stream.onClose(reader::close); return stream; } CSVStore(final Path f, final char separator);  CSVStore(final Path f, final char separator, FeatureType ft);  CSVStore(final ParameterValueGroup params); @Override Optional<GenericName> getIdentifier(); @Override Optional<ParameterValueGroup> getOpenParameters(); @Override Metadata getMetadata(); @Override Optional<Envelope> getEnvelope(); @Override FeatureType getType(); @Override Path[] getComponentFiles(); @Override Stream<Feature> features(boolean parallel); @Override void close(); @Override void updateType(FeatureType newType); @Override void add(Iterator<? extends Feature> features); @Override boolean removeIf(Predicate<? super Feature> filter); @Override void replaceIf(Predicate<? super Feature> filter, UnaryOperator<Feature> updater); static final String COMMENT_STRING; static final Charset UTF8_ENCODING; }### Answer:
@Test public void testReadEscape() throws Exception { try (final CSVStore store = new CSVStore(Paths.get("./src/test/resources/org/geotoolkit/csv/escaped.csv"), ';')) { try (Stream<Feature> stream = store.features(false)) { Iterator<Feature> ite = stream.iterator(); Feature next = ite.next(); assertEquals("hubert", next.getPropertyValue("name")); assertEquals("someone from the \"big fisher\" corp,\na good guy and;\na ;family \"best\" friend", next.getPropertyValue("comment")); assertEquals(36, next.getPropertyValue("age")); next = ite.next(); assertEquals("marc", next.getPropertyValue("name")); assertEquals("lucky luck", next.getPropertyValue("comment")); assertEquals(22, next.getPropertyValue("age")); } } }