@Override
 public JsonInclude.Include findSerializationInclusion(Annotated a, JsonInclude.Include defValue) {
   JsonInclude inc = _findAnnotation(a, JsonInclude.class);
   if (inc != null) {
     return inc.value();
   }
   JsonSerialize ann = _findAnnotation(a, JsonSerialize.class);
   if (ann != null) {
     @SuppressWarnings("deprecation")
     JsonSerialize.Inclusion i2 = ann.include();
     switch (i2) {
       case ALWAYS:
         return JsonInclude.Include.ALWAYS;
       case NON_NULL:
         return JsonInclude.Include.NON_NULL;
       case NON_DEFAULT:
         return JsonInclude.Include.NON_DEFAULT;
       case NON_EMPTY:
         return JsonInclude.Include.NON_EMPTY;
       case DEFAULT_INCLUSION: // since 2.3 -- fall through, use default
         break;
     }
   }
   return defValue;
 }
 @Override
 public Object findNullSerializer(Annotated a) {
   JsonSerialize ann = _findAnnotation(a, JsonSerialize.class);
   if (ann != null) {
     Class<? extends JsonSerializer<?>> serClass = ann.nullsUsing();
     if (serClass != JsonSerializer.None.class) {
       return serClass;
     }
   }
   return null;
 }
  @Override
  public Object findSerializer(Annotated a) {
    JsonSerialize ann = _findAnnotation(a, JsonSerialize.class);
    if (ann != null) {
      Class<? extends JsonSerializer<?>> serClass = ann.using();
      if (serClass != JsonSerializer.None.class) {
        return serClass;
      }
    }

    /* 18-Oct-2010, tatu: [JACKSON-351] @JsonRawValue handled just here, for now;
     *  if we need to get raw indicator from other sources need to add
     *  separate accessor within {@link AnnotationIntrospector} interface.
     */
    JsonRawValue annRaw = _findAnnotation(a, JsonRawValue.class);
    if ((annRaw != null) && annRaw.value()) {
      // let's construct instance with nominal type:
      Class<?> cls = a.getRawType();
      return new RawSerializer<Object>(cls);
    }
    return null;
  }
 @Override
 public Object findSerializationContentConverter(AnnotatedMember a) {
   JsonSerialize ann = _findAnnotation(a, JsonSerialize.class);
   return (ann == null) ? null : _classIfExplicit(ann.contentConverter(), Converter.None.class);
 }
 @Override
 public JsonSerialize.Typing findSerializationTyping(Annotated a) {
   JsonSerialize ann = _findAnnotation(a, JsonSerialize.class);
   return (ann == null) ? null : ann.typing();
 }
 @Override
 public Class<?> findSerializationContentType(Annotated am, JavaType baseType) {
   JsonSerialize ann = _findAnnotation(am, JsonSerialize.class);
   return (ann == null) ? null : _classIfExplicit(ann.contentAs());
 }
 @Override
 public Class<?> findSerializationType(Annotated am) {
   JsonSerialize ann = _findAnnotation(am, JsonSerialize.class);
   return (ann == null) ? null : _classIfExplicit(ann.as());
 }