@Override protected boolean matchesSafely(Iterable<? extends T> items, Description mismatchDescription) { Matching<T> matching = new Matching<T>(matchers, mismatchDescription); for (T item : items) { if (!matching.matches(item)) { return false; } } return matching.isFinished(items); }