private List<FieldInfo> requestFieldInfos(JavaType javaType) {
        if (!mapper.canDeserialize(javaType)) {
            return ImmutableList.of();
        }

        final BeanDescription description = mapper.getDeserializationConfig().introspect(javaType);
        final List<BeanPropertyDefinition> properties = description.findProperties();
        if (properties.isEmpty()) {
            return newReflectiveStructInfo(javaType.getRawClass()).fields();
        }

        return properties.stream()
                         .map(property -> fieldInfos(javaType,
                                                     property.getName(),
                                                     property.getInternalName(),
                                                     property.getPrimaryType()))
                         .collect(toImmutableList());
    }
A default {@link DescriptiveTypeInfoProvider} to create a {@link StructInfo} from a {@code typeDescriptor}.
If {@code typeDescriptor} is unknown type, Jackson is used to try to extract fields
and their metadata.
core/src/main/java/com/linecorp/armeria/internal/server/annotation/DefaultDescriptiveTypeInfoProvider.java