question: protected JavaType findSerializationType ( Annotated a , boolean useStaticTyping , JavaType declaredType ) { Class < ? > serClass = _annotationIntrospector . findSerializationType ( a ) ; if ( serClass != null ) { Class < ? > rawDeclared = declaredType . getRawClass ( ) ; if ( serClass . isAssignableFrom ( rawDeclared ) ) { declaredType = declaredType . widenBy ( serClass ) ; } else { if ( ! rawDeclared . isAssignableFrom ( serClass ) ) { throw new IllegalArgumentException ( "Illegal concrete-type annotation for method '" + a . getName ( ) + "': class " + serClass . getName ( ) + " not a super-type of (declared) class " + rawDeclared . getName ( ) ) ; } declaredType = _config . constructSpecializedType ( declaredType , serClass ) ; } useStaticTyping = true ; } JavaType secondary = BeanSerializerFactory . modifySecondaryTypesByAnnotation ( _config , a , declaredType ) ; if ( secondary != declaredType ) { useStaticTyping = true ; declaredType = secondary ; } if ( ! useStaticTyping ) { JsonSerialize . Typing typing = _annotationIntrospector . findSerializationTyping ( a ) ; if ( typing != null ) { useStaticTyping = ( typing == JsonSerialize . Typing . STATIC ) ; } } return useStaticTyping ? declaredType : null ; }
target:  Method that will try to determine statically defined type of property being serialized, based on annotations (for overrides), and alternatively declared type (if static typing for serialization is enabled). If neither can be used (no annotations, dynamic typing), returns null.