Las secuencias Java findAny () encuentran una excepción de puntero nulo después de que la operación filter () filtra todo

Tengo problemas para entender por quéfindAny() lanza una excepción de puntero nulo despuésfilter() operación en una secuencia. En este caso de prueba en particular, la operación del filtro debería haber filtrado todo, sin dejar resultados parafindAny().

Optional<JsonNode> encryption = sseEncryptionList.stream()
                  .filter(n -> n.textValue().equals("AES256")) //Filters out everything
                  .findAny(); //Throws null pointer exception

El rastro de la pila:

Exception in thread "main" java.lang.NullPointerException
at example.Main.lambda$main$0(Main.java:41)
at java.util.stream.ReferencePipeline operación en una secuencia. En este caso de prueba en particular, la operación del filtro debería haber filtrado todo, sin dejar resultados para1.accept(ReferencePipeline.java:174)
at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1351)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:469)
at example.Main.main(Main.java:42)

¿Es este comportamiento esperado parafindAny() para lanzar una excepción de puntero nulo si la secuencia no contiene ningún elemento?

Editar: ¿Cuál es una forma elegante y funcional de resolver operaciones de filtro que podrían filtrar todos los elementos?

Respuestas a la pregunta(3)

Su respuesta a la pregunta