code: public static <T> Filter<T> not(final Filter<T> filter) {
          return new NonMutatingFilter<T>() {
              @Override
              public boolean accepts(T item) throws IOException {
                  T result = filter.accept(item);
                  if (result == null) {
                      return true;
                  } else {
                      return false;
                  }
              }
  
              @Override
              public void close() {
                  filter.close();
              }
          };
      }
docs: Gets a filter that inverts the boolean response of the given filter.
  Objects that return any value when passed to the wrapped filter will
  return <code>null</code>. Those that return <code>null</code> will
  instead return the original value.
  <p>
  When the returned filter is closed, the underlying filter will be
  closed.
  
  @param filter the filter to invert.
  @param <T> the type.
  @return the inverting filter.