code: @SafeVarargs
  	public static<T> Filter<T> and(final Filter<T>... f) {
  		return new Filter<T>() {
  			@Override
  			public boolean apply(final T x) {
  				for (final Filter<T> filter: f) if (! filter.apply(x)) return false;
  				return true;
  			}
  
  			@Override
  			public String toString() {
  				return "(" + StringUtils.join(f, " and ") + ")";
  			}
  
  			@Override
  			public Filter<T> copy() {
  				return Filters.and(Filters.copy(f));
  			}
  		};
  	}
docs: Produces the conjunction of the given filters.
  
  @param <T> the type of objects that the filters deal with.
  @param f the filters.
  @return the conjunction.