code: public static <T> Predicate<T> and(Predicate<? super T>... components) {
          return and(Arrays.asList(components));
      }
docs: Returns a Predicate that evaluates to true iff each 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.