private static Optional<DeserializationRuntimeConverter> wrapNumericConverter(
            Optional<DeserializationRuntimeConverter> converterOptional) {
        return converterOptional.map(
                converter -> new DeserializationRuntimeConverter() {

                    private static final long serialVersionUID = 1L;

                    @Override
                    public Object convert(Object dbzObj, Schema schema) throws Exception {
                        if (VariableScaleDecimal.LOGICAL_NAME.equals(schema.name())) {
                            SpecialValueDecimal decimal =
                                    VariableScaleDecimal.toLogical((Struct) dbzObj);
                            return converter.convert(
                                    decimal.getDecimalValue().orElse(BigDecimal.ZERO),
                                    schema);
                        }
                        return converter.convert(dbzObj, schema);
                    }
                });
    }
Creates a runtime converter which assuming input object is not null.
inlong-sort/sort-flink/sort-flink-v1.13/sort-connectors/postgres-cdc/src/main/java/org/apache/inlong/sort/cdc/postgres/table/PostgreSQLDeserializationConverterFactory.java