code: public static <T1, T2, T3> TriPredicate<T1, T2, T3> and(TriPredicate<T1, T2, T3> first, TriPredicate<T1, T2, T3> second) {
          dbc.precondition(first != null, "first predicate is null");
          dbc.precondition(second != null, "second predicate is null");
          return Logic.Ternary.and(Iterations.iterable(first, second));
      }
docs: Creates a composite AND predicate from the given predicates.
  
  @param <T1> the first element type parameter
  @param <T2> the second element type parameter
  @param <T3> the third element type parameter
  @param first
  @param second
  @return the composite predicate