Maravilha.

É um pouco ruim não poder usar tipos primitivos, mas o ganho em simplicidade de código acaba compensando a mudança para as wrapper classes.

Eu não tenho certeza, porque não pude testar, mas talvez dê pra contornar esta limitação usando o método withMatcher. Na documentação tem um exemplo assim:

ExampleMatcher matcher = ExampleMatcher.matching()
  .withMatcher("firstname", match -> match.endsWith())
  .withMatcher("firstname", match -> match.startsWith());
}

E eu acredito que nessa expressão lambda, que passamos como segundo argumento, deva dar pra fazer alguma validação envolvendo os tipos primitivos.