android/guava/src/com/google/common/base/Predicates.java
public static <T> Predicate<T> and(Iterable<? extends Predicate<? super T>> components) {
    return new AndPredicate<T>(defensiveCopy(components));
  }
public static <T> Predicate<T> and(Iterable<? extends Predicate<? super T>> components) {
    return new AndPredicate<T>(defensiveCopy(components));
  }
public static < T > Predicate < T > and ( Iterable < ? extends Predicate < ? super T > > components ) { return new AndPredicate < T > ( defensiveCopy ( components ) ) ; }
Returns a predicate that evaluates to {@code true} if each of its components evaluates to
{@code true}. The components are evaluated in order, and evaluation will be "short-circuited"
as soon as a false predicate is found. It defensively copies the iterable passed in, so future
changes to it won't alter the behavior of this predicate. If {@code components} is empty, the
returned predicate will always evaluate to {@code true}.
Returns a predicate that evaluates to {