class Not extends GenericCompositeMatcher {

    @Override
    public Collection<MailAddress> match(Mail mail) throws MessagingException {
        Collection<MailAddress> finalResult = Optional.ofNullable(Lists.newArrayList(mail.getRecipients())).orElse(new ArrayList<>());
        for (Matcher matcher : getMatchers()) {
            Collection<MailAddress> matcherResult = matcher.match(mail);
            if (matcherResult != null) {
                finalResult.removeAll(matcherResult);
            }
        }
        return finalResult;
    }

}