Or implements Predicate<Field<T>> { @Override public boolean resolve(final Field<T> field) { boolean result = false; for (final Predicate<Field<T>> predicate : this.opers) { if (predicate.resolve(field)) { result = true; break; } } return result; } Or(final Iterable<? extends Predicate<Field<T>>> operands);  Or(final Predicate<Field<T>> first, final Predicate<Field<T>> second); @Override boolean resolve(final Field<T> field);  }
@Test public void resolvesToTrueWhenOnePredicateTrue() { MatcherAssert.assertThat( new Or<>( Arrays.asList(new True<>(), new False<>(), new False<>()) ).resolve(new MkField<>(new Object(), new Object())), Matchers.is(true) ); }
@Test public void resolvesToFalseWhenAllPredicatesFalse() { MatcherAssert.assertThat( new Or<>( new False<>(), new False<>() ).resolve(new MkField<>(new Object(), new Object())), Matchers.is(false) ); }