private static EnumInfo newEnumInfo(Class<?> enumClass) {
        final String name = enumClass.getName();

        final Field[] declaredFields = enumClass.getDeclaredFields();
        final List<EnumValueInfo> values =
                Stream.of(declaredFields)
                      .filter(Field::isEnumConstant)
                      .map(f -> {
                          final Description valueDescription = AnnotationUtil.findFirst(f, Description.class);
                          if (valueDescription != null) {
                              return new EnumValueInfo(f.getName(), null,
                                                       DescriptionInfo.from(valueDescription));
                          }

                          return new EnumValueInfo(f.getName(), null);
                      })
                      .collect(toImmutableList());

        return new EnumInfo(name, values, classDescriptionInfo(enumClass));
    }
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