@Override
    public void check(Collection<? extends T> collection, ConditionEvents events) {
        ViolatedAndSatisfiedConditionEvents subEvents = new ViolatedAndSatisfiedConditionEvents();
        for (T item : collection) {
            condition.check(item, subEvents);
        }
        if (!subEvents.getAllowed().isEmpty() || !subEvents.getViolating().isEmpty()) {
            events.add(new OnlyConditionEvent(collection, subEvents));
        }
    }
@Test
    public void satisfied_works_and_description_contains_mismatches() {
        ConditionEvents events = ConditionEvents.Factory.create();
        containOnlyElementsThat(IS_SERIALIZABLE).check(ONE_SERIALIZABLE_AND_ONE_NON_SERIALIZABLE_OBJECT, events);

        assertThat(events).containViolations(isSerializableMessageFor(Object.class));

        events = ConditionEvents.Factory.create();
        containOnlyElementsThat(IS_SERIALIZABLE).check(TWO_SERIALIZABLE_OBJECTS, events);

        assertThat(events).containNoViolation();
    }