public static boolean evaluate(IncrementallyUpdatedFilterPredicate pred) {
    return Objects.requireNonNull(pred, "pred cannot be null").accept(INSTANCE);
  }
@Test
  public void testValueInspector() {
    // known, and set to false criteria, null considered false
    ValueInspector v = intIsEven();
    v.update(11);
    assertFalse(evaluate(v));
    v.reset();

    // known and set to true criteria, null considered false
    v.update(12);
    assertTrue(evaluate(v));
    v.reset();

    // known and set to null, null considered false
    v.updateNull();
    assertFalse(evaluate(v));
    v.reset();

    // known, and set to false criteria, null considered true
    ValueInspector intIsNull = intIsNull();
    intIsNull.update(10);
    assertFalse(evaluate(intIsNull));
    intIsNull.reset();

    // known, and set to false criteria, null considered true
    intIsNull.updateNull();
    assertTrue(evaluate(intIsNull));
    intIsNull.reset();

    // unknown, null considered false
    v.reset();
    assertFalse(evaluate(v));

    // unknown, null considered true
    intIsNull.reset();
    assertTrue(evaluate(intIsNull));
  }