class Or extends GenericCompositeMatcher {

    @Override
    public Collection<MailAddress> match(Mail mail) {
        return getMatchers().stream()
            .flatMap(Throwing.<Matcher, Stream<MailAddress>>function(matcher -> applyMatcher(matcher, mail))
                .sneakyThrow())
            .collect(Collectors.toSet());
    }

}