code: public static <T> Predicate<T> negate(
          Predicate<? super T> p)
      {
          Objects.requireNonNull(p, "The predicate is null");
          return new Predicate<T>()
          {
              @Override
              public boolean test(T t)
              {
                  return !p.test(t);
              }
              
              @Override
              public String toString()
              {
                  return "!(" + p + ")";
              }
          };
      }
docs: Returns a <code>Predicate</code> that is a negation of the given
  predicate, and whose string representation resembles the code
  of this condition.
  
  @param p The predicate. May not be <code>null</code>.
  @return The resulting predicate