Почему findFirst () генерирует исключение NullPointerException, если первый найденный элемент имеет значение null?

Почему это броситьjava.lang.NullPointerException?

List<String> strings = new ArrayList<>();
        strings.add(null);
        strings.add("test");

        String firstString = strings.stream()
                .findFirst()      // Exception thrown here
                .orElse("StringWhenListIsEmpty");
                //.orElse(null);  // Changing the `orElse()` to avoid ambiguity

Первый пункт вstrings&nbsp;являетсяnull, что является вполне приемлемым значением. Более того,findFirst()&nbsp;возвращаетНеобязательный, что имеет еще больше смысла дляfindFirst()&nbsp;уметь справлятьсяnulls.

РЕДАКТИРОВАТЬ: обновилorElse()&nbsp;быть менее двусмысленным.