``` type.isTypeOrSubTypeOf(Optional.class) ``` is evaluated to true with Optional\<Integer\> while it is evaluated to false with OptionalInt because OptionalInt is not a type or subtype of Optional\<\> Same goes for OptionalDouble and OptionalLong https://github.com/FasterXML/jackson-modules-java8/blob/master/datatypes/src/main/java/com/fasterxml/jackson/datatype/jdk8/Jdk8BeanSerializerModifier.java#L26