¿Cómo escribo concisamente un || b donde a y b son valores opcionales?

Estoy contento con una respuesta en cualquier idioma, pero finalmente quiero una respuesta en Java. (Java 8+ está bien. No se limita a Java 8. He intentado arreglar las etiquetas).

Si tengo dosOptional<Integer>alores @, ¿cómo calculo concisamente el equivalente dea || b, sentido:a, si está definido; de lo contrariob, si está definido; de lo contrarioempty()?

Optional<Integer> a = ...;
Optional<Integer> b = ...;
Optional<Integer> aOrB = a || b; // How to write this in Java 8+?

Sé que puedo escribira.orElse(12), pero ¿y si el "valor" predeterminado también esOptional?

Evidentemente, en C #, el operador?? hace lo que quiero.