public RuntimeOptionsBuilder parse(Map<String, String> properties) {
        return parse(properties::get);
    }
@Test
    void should_parse_features_and_preserve_existing_tag_filters() {
        RuntimeOptions existing = RuntimeOptions.defaultOptions();
        existing.setTagExpressions(Collections.singletonList(TagExpressionParser.parse("@example")));
        properties.put(Constants.FEATURES_PROPERTY_NAME, "classpath:com/example.feature");
        RuntimeOptions options = cucumberPropertiesParser.parse(properties).build(existing);

        List<String> tagExpressions = options.getTagExpressions().stream()
                .map(Object::toString)
                .collect(toList());

        assertAll(
            () -> assertThat(options.getFeaturePaths(), contains(
                URI.create("classpath:com/example.feature"))),
            () -> assertThat(tagExpressions, contains("@example")));
    }