public static void processJacksonJsonInclude(FieldInfo fieldInfo, Annotation annotation) {
        Class<? extends Annotation> annotationClass = annotation.getClass();
        BeanUtils.annotationMethods(annotationClass, m -> {
            String name = m.getName();
            try {
                Object result = m.invoke(annotation);
                if ("value".equals(name)) {
                    String include = ((Enum) result).name();
                    switch (include) {
                        case "ALWAYS":
                            fieldInfo.features |= JSONWriter.Feature.WriteNulls.mask;
                            break;
                        case "NON_DEFAULT":
                            fieldInfo.features |= JSONWriter.Feature.NotWriteDefaultValue.mask;
                            break;
                        case "NON_EMPTY":
                            fieldInfo.features |= JSONWriter.Feature.NotWriteEmptyArray.mask;
                            fieldInfo.features |= JSONWriter.Feature.IgnoreEmpty.mask;
                            break;
                        default:
                            break;
                    }
                }
            } catch (Throwable ignored) {
                // ignored
            }
        });
    }
The WildcardType interface supports multiple upper bounds and multiple
lower bounds. We only support what the Java 6 language needs - at most one
bound. If a lower bound is set, the upper bound must be Object.class.
core/src/main/java/com/alibaba/fastjson2/util/BeanUtils.java