Class<?> raw = type.getRawClass();
if (raw == Optional.class){
JavaType[] types = config.getTypeFactory().findTypeParameters(type, Optional.class);
JavaType refType = (types == null) ? TypeFactory.unknownType() : types[0];
JsonDeserializer<?> valueDeser = type.getValueHandler();
TypeDeserializer typeDeser = type.getTypeHandler();
// [Issue#42]: Polymorphic types need type deserializer
if (typeDeser == null) {
typeDeser = config.findTypeDeserializer(refType);
}
return new GuavaOptionalDeserializer(type, refType, typeDeser, valueDeser);