code: public static<T> Filter<T> not(final Filter<T> filter) {
  		return new AbstractFilter<T>() {
  			@Override
  			public boolean apply(final T x) {
  				return ! filter.apply(x);
  			}
  
  			@Override
  			public String toString() {
  				return "(not " + filter + ")";
  			}
  
  			@Override
  			public Filter<T> copy() {
  				return not(filter.copy());
  			}
  		};
  	}
docs: Produces the negation of the given filter.
  
  @param <T> the type of objects that the filter deal with.
  @param filter the filter.
  @return the negation of the given filter.