@Test
  public void or() throws Exception {
    Person john = ImmutablePerson.builder().id("p1").name("John").age(30).build();
    Person adam = ImmutablePerson.builder().id("a1").name("Adam").age(44).build();

    repository.insert(john).getUnchecked();
    repository.insert(adam).getUnchecked();

    check(repository.find(criteria().age(30).or().age(44)).fetchAll().getUnchecked()).hasContentInAnyOrder(john, adam);
    check(repository.find(criteria().age(1).or().age(2)).fetchAll().getUnchecked()).isEmpty();
    check(repository.find(criteria().age(30).or().age(2)).fetchAll().getUnchecked()).hasContentInAnyOrder(john);
    check(repository.find(criteria().age(1).or().age(44)).fetchAll().getUnchecked()).hasContentInAnyOrder(adam);
    check(repository.find(criteria().age(30).or().name("Adam")).fetchAll().getUnchecked()).hasContentInAnyOrder(john, adam);
    check(repository.find(criteria().name("Adam").or().age(30)).fetchAll().getUnchecked()).hasContentInAnyOrder(john, adam);
    check(repository.find(criteria().name("Adam").or().name("Adam").or().name("Adam")).fetchAll().getUnchecked()).hasContentInAnyOrder(adam);
    check(repository.find(criteria().name("a").or().name("b").or().name("c")).fetchAll().getUnchecked()).isEmpty();
    check(repository.find(criteria().id("p1").or().name("John").or().age(30)).fetchAll().getUnchecked()).hasContentInAnyOrder(john);
    check(repository.find(criteria().id("p1").or().idNot("p1")).fetchAll().getUnchecked()).hasContentInAnyOrder(john, adam);
  }
This one seems to fail: ageNot(30) should return no result.
mongo/test/org/immutables/mongo/fixture/criteria/PersonCriteriaTest.java