Matchers { public static <P> Matcher<P> or(Iterable<? extends Matcher<P>> matchers) { return or(toArray(matchers)); }  static Matcher<P> alwaysMatch(); static Matcher<P> neverMatch(); static Matcher<P> and(Iterable<? extends Matcher<P>> matchers); static Matcher<P> and(Matcher<P>... matchers); static Matcher<P> or(Iterable<? extends Matcher<P>> matchers); static Matcher<P> or(Matcher<P>... matchers);  }
@Test public void or_single() { Matcher<Boolean> one = Boolean::booleanValue; assertThat(or(one)).isSameAs(one); }
@Test public void or_multiple_matched() { Matcher<Void> one = b -> true; Matcher<Void> two = b -> false; Matcher<Void> three = b -> true; assertThat(or(one, two, three).matches(null)).isTrue(); }
@Test public void or_multiple_unmatched() { Matcher<Void> one = b -> false; Matcher<Void> two = b -> false; Matcher<Void> three = b -> false; assertThat(or(one, two, three).matches(null)).isFalse(); }