code: public static <T> Predicate<T> isEqual( final Object obj ) {
          if (obj == null) {
              return new Predicate<T>() {
                  @Override
                  public boolean test( T input ) {
                      return input == null;
                  }
              };
          }
          return new Predicate<T>() {
              @Override
              public boolean test( T input ) {
                  return Objects.equals(input, obj);
              }
          };
      }
docs: Return a predicate that is equivalent to {@link Objects#equals(Object, Object)} called with the supplied object and the
  object passed as a parameter to the {@link #test(Object)} method.
  
  @param obj the object to compare the test parameters
  @return the new predicate; never null