@Override
    public boolean test(Pickle pickle) {
        URI picklePath = pickle.getUri();
        if (!lineFilters.containsKey(picklePath)) {
            return true;
        }
        for (Integer line : lineFilters.get(picklePath)) {
            if (Objects.equals(line, pickle.getLocation().getLine())
                    || Objects.equals(line, pickle.getScenarioLocation().getLine())
                    || pickle.getExamplesLocation().map(Location::getLine).map(line::equals).orElse(false)
                    || pickle.getRuleLocation().map(Location::getLine).map(line::equals).orElse(false)
                    || pickle.getFeatureLocation().map(Location::getLine).map(line::equals).orElse(false)) {
                return true;
            }
        }
        return false;
    }
@Test
    void matches_scenario() {
        LinePredicate predicate = new LinePredicate(singletonMap(
            featurePath,
            singletonList(3)));
        assertTrue(predicate.test(firstPickle));
        assertTrue(predicate.test(secondPickle));
        assertTrue(predicate.test(thirdPickle));
        assertTrue(predicate.test(fourthPickle));
    }