Qual é o padrão idiomático de Hamcrest para afirmar que cada elemento de um iterável corresponde a um determinado matcher?

Examine o seguinte trecho:

    assertThat(
        Arrays.asList("1x", "2x", "3x", "4z"),
        not(hasItem(not(endsWith("x"))))
    );

Isso afirma que a lista não possui um elemento que não termine com "x". É claro que essa é a maneira de dois negativos de dizer que todos os elementos da lista terminam com "x".

Observe também que o trecho lança:

java.lang.AssertionError: 
Expected: not a collection containing not a string ending with "x"
     got: <[1x, 2x, 3x, 4z]>

Isto lista a lista inteira, em vez de apenas o elemento que não termina com "x"

Existe uma maneira idiomática de:

Afirmando que cada elemento termina com "x" (sem negativos duplos)No erro de asserção, liste apenas os elementos que não terminam com "x"

questionAnswers(3)

yourAnswerToTheQuestion