@Test
  public void subCollection() throws Exception {
    Person john = ImmutablePerson.builder().id("p1").name("John").age(30).build();
    check(repository.find(criteria().aliasesEmpty()).fetchAll().getUnchecked()).isEmpty();

    repository.insert(john).getUnchecked();
    check(repository.find(criteria().aliasesEmpty()).fetchAll().getUnchecked()).hasContentInAnyOrder(john);

    Person adam = ImmutablePerson.builder().id("p2").name("Adam").age(40).aliases(Arrays.asList("a1", "a2")).build();

    repository.insert(adam).getUnchecked();
    check(repository.find(criteria().aliasesEmpty()).fetchAll().getUnchecked()).hasContentInAnyOrder(john);
    check(repository.find(criteria().aliasesNonEmpty()).fetchAll().getUnchecked()).hasContentInAnyOrder(adam);
    check(repository.find(criteria().aliasesContains("a1")).fetchAll().getUnchecked()).hasContentInAnyOrder(adam);
    check(repository.find(criteria().aliasesContains("a2")).fetchAll().getUnchecked()).hasContentInAnyOrder(adam);
//    check(repository.find(repository.criteria().aliasesContainsAll(Arrays.asList("a1", "a2"))).fetchAll().getUnchecked()).hasContentInAnyOrder(adam);
//    check(repository.find(repository.criteria().aliasesContainsAll(Arrays.asList("a2", "a1"))).fetchAll().getUnchecked()).hasContentInAnyOrder(adam);
    check(repository.find(criteria().aliasesContainsAll(Collections.singletonList("a1"))).fetchAll().getUnchecked()).isEmpty();

    check(repository.find(criteria().aliasesAnyStartsWith("a")).fetchAll().getUnchecked()).hasContentInAnyOrder(adam);
    check(repository.find(criteria().aliasesAnyStartsWith("a1")).fetchAll().getUnchecked()).hasContentInAnyOrder(adam);
    check(repository.find(criteria().aliasesAnyStartsWith("b")).fetchAll().getUnchecked()).isEmpty();

    check(repository.find(criteria().aliasesSize(0)).fetchAll().getUnchecked()).hasContentInAnyOrder(john);
    check(repository.find(criteria().aliasesSize(1)).fetchAll().getUnchecked()).isEmpty();
    check(repository.find(criteria().aliasesSize(2)).fetchAll().getUnchecked()).hasContentInAnyOrder(adam);
    check(repository.find(criteria().aliasesSize(3)).fetchAll().getUnchecked()).isEmpty();
    check(repository.find(criteria().aliasesSize(4)).fetchAll().getUnchecked()).isEmpty();
  }
This one seems to fail: ageNot(30) should return no result.
mongo/test/org/immutables/mongo/fixture/criteria/PersonCriteriaTest.java