public static <T> Predicate<T> and(Collection<? extends Predicate<? super T>> components) {
        return new AndPredicate<T>(components);
    }
public static < T > Predicate < T > and ( Collection < ? extends Predicate < ? super T > > components ) { return new AndPredicate < T > ( 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}.

@param components the components
@return a predicate