@Override public Object deserializeWithType(JsonParser jp,DeserializationContext ctxt,TypeDeserializer typeDeserializer) throws IOException, JsonProcessingException {
switch (jp.getCurrentToken()) {
case VALUE_NUMBER_INT:
case VALUE_NUMBER_FLOAT:
case VALUE_STRING:
    return deserialize(jp,ctxt);
}
return typeDeserializer.deserializeTypedFromScalar(jp,ctxt);
}

@ Override public Object deserializeWithType ( JsonParser jp , DeserializationContext ctxt , TypeDeserializer typeDeserializer ) throws IOException , JsonProcessingException { switch ( jp . getCurrentToken ( ) ) { case VALUE_NUMBER_INT : case VALUE_NUMBER_FLOAT : case VALUE_STRING : return deserialize ( jp , ctxt ) ; } return typeDeserializer . deserializeTypedFromScalar ( jp , ctxt ) ; }
as mentioned in class javadoc , there is additional complexity in handling potentially mixed type information here . because of this , we must actually check for " raw " integers and doubles first , before calling type deserializer .
