class FieldReaderBigDecimalMethod<T>
        extends FieldReaderObject<T> {
    FieldReaderBigDecimalMethod(
            String fieldName,
            Type fieldType,
            Class fieldClass,
            int ordinal,
            long features,
            String format,
            Locale locale,
            BigDecimal defaultValue,
            JSONSchema schema,
            Method method
    ) {
        super(fieldName, fieldType, fieldClass, ordinal, features, format, locale, defaultValue, schema, method, null, null);
    }

    @Override
    public void readFieldValue(JSONReader jsonReader, T object) {
        BigDecimal fieldValue = jsonReader.readBigDecimal();

        if (schema != null) {
            schema.assertValidate(fieldValue);
        }

        try {
            method.invoke(object, fieldValue);
        } catch (Exception e) {
            throw new JSONException(jsonReader.info("set " + fieldName + " error"), e);
        }
    }

    @Override
    public void accept(T object, Object value) {
        BigDecimal decimalValue = TypeUtils.toBigDecimal(value);

        if (schema != null) {
            schema.assertValidate(decimalValue);
        }

        try {
            method.invoke(object, decimalValue);
        } catch (Exception e) {
            throw new JSONException("set " + fieldName + " error", e);
        }
    }

    @Override
    public void accept(T object, int value) {
        if (schema != null) {
            schema.assertValidate(value);
        }

        try {
            method.invoke(object, BigDecimal.valueOf(value));
        } catch (Exception e) {
            throw new JSONException("set " + fieldName + " error", e);
        }
    }

    @Override
    public void accept(T object, long value) {<FILL_FUNCTION_BODY>}
}

        if (schema != null) {
            schema.assertValidate(value);
        }

        try {
            method.invoke(object, BigDecimal.valueOf(value));
        } catch (Exception e) {
            throw new JSONException("set " + fieldName + " error", e);
        }
    
<methods>public void <init>(java.lang.String, java.lang.reflect.Type, Class#RAW, int, long, java.lang.String, java.util.Locale, java.lang.Object, com.alibaba.fastjson2.schema.JSONSchema, java.lang.reflect.Method, java.lang.reflect.Field, BiConsumer#RAW) ,public void accept(T, boolean) ,public void accept(T, byte) ,public void accept(T, short) ,public void accept(T, int) ,public void accept(T, long) ,public void accept(T, float) ,public void accept(T, double) ,public void accept(T, char) ,public void accept(T, java.lang.Object) ,public BiConsumer#RAW getFunction() ,public ObjectReader#RAW getInitReader() ,public ObjectReader#RAW getObjectReader(com.alibaba.fastjson2.JSONReader) ,public ObjectReader#RAW getObjectReader(com.alibaba.fastjson2.JSONReader.Context) ,public void processExtra(com.alibaba.fastjson2.JSONReader, java.lang.Object) ,public void readFieldValue(com.alibaba.fastjson2.JSONReader, T) ,public java.lang.Object readFieldValue(com.alibaba.fastjson2.JSONReader) ,public void readFieldValueJSONB(com.alibaba.fastjson2.JSONReader, T) <variables>protected final non-sealed BiConsumer#RAW function,protected ObjectReader#RAW initReader