public static SerializableSymbol calciteToSerializable(Enum<?> calciteSymbol) {
        final SerializableSymbol serializableSymbol = calciteToSerializable.get(calciteSymbol);
        if (serializableSymbol == null) {
            throw new TableException(
                    String.format(
                            "Symbol class '%s' has no serializable representation.",
                            calciteSymbol.getClass().getName()));
        }
        return serializableSymbol;
    }
@Test
    void testCalciteToSerializable() {
        final SerializableSymbol trimString = SerializableSymbol.of("TRIM", "LEADING");
        assertThat(calciteToSerializable(SqlTrimFunction.Flag.LEADING)).isEqualTo(trimString);
        assertThat(SymbolUtil.serializableToCalcite(SqlTrimFunction.Flag.class, "LEADING"))
                .isEqualTo(SqlTrimFunction.Flag.LEADING);

        final SerializableSymbol emptyOrErrorString =
                SerializableSymbol.of("JSON_QUERY_ON_EMPTY_OR_ERROR", "EMPTY_OBJECT");
        assertThat(calciteToSerializable(SqlJsonQueryEmptyOrErrorBehavior.EMPTY_OBJECT))
                .isEqualTo(emptyOrErrorString);
        assertThat(serializableToCalcite(emptyOrErrorString))
                .isEqualTo(SqlJsonQueryEmptyOrErrorBehavior.EMPTY_OBJECT);
    }