### Question:
FilterFn extends DoFn<T, T> { public static <S> FilterFn<S> not(FilterFn<S> fn) { return new NotFn<S>(fn); }  abstract boolean accept(T input); @Override void process(T input, Emitter<T> emitter); @Override float scaleFactor(); static FilterFn<S> and(FilterFn<S>...fns); static FilterFn<S> or(FilterFn<S>...fns); static FilterFn<S> not(FilterFn<S> fn);  }### Answer:
@Test public void testNot() { assertFalse(FilterFn.not(TRUE).accept("foo")); assertTrue(FilterFn.not(FALSE).accept("foo")); }