code: public static <T> Predicate<T> and(
          Predicate<? super T> p0, 
          Predicate<? super T> p1)
      {
          Objects.requireNonNull(p0, "The predicate 0 is null");
          Objects.requireNonNull(p1, "The predicate 1 is null");
          return new Predicate<T>()
          {
              @Override
              public boolean test(T t)
              {
                  return p0.test(t) && p1.test(t);
              }
              
              @Override
              public String toString()
              {
                  return "(" + p0 + " && " + p1 + ")";
              }
          };
      }
docs: Returns a <code>Predicate</code> that is a short-circuiting conjunction
  of the given predicates, and whose string representation resembles
  the code of this condition.
  
  @param p0 The first predicate. May not be <code>null</code>.
  @param p1 The second predicate. May not be <code>null</code>.
  @return The resulting predicate