@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_pickles_from_files_not_in_the_predicate_map() {
        // the argument "path/file.feature another_path/file.feature:8"
        // results in only line predicates only for another_path/file.feature,
        // but all pickles from path/file.feature shall also be executed.
        LinePredicate predicate = new LinePredicate(singletonMap(
            URI.create("classpath:another_path/file.feature"),
            singletonList(8)));
        assertTrue(predicate.test(firstPickle));
    }