code: public static <T> Predicate<T> or(Iterable<? extends Predicate<? super T>> components) {
          return new OrPredicate(components);
      }
docs: Returns a Predicate that evaluates to true iff any one of its components
  evaluates to true.  The components are evaluated in order, and evaluation
  will be "short-circuited" as soon as the answer is determined.  Does not
  defensively copy the iterable passed in, so future changes to it will alter
  the behavior of this Predicate. If components is empty, the returned
  Predicate will always evaluate to false.