"""
ZetaSQL Proto Models

Auto-generated dataclass-based proto model classes.
DO NOT EDIT MANUALLY - regenerate with scripts/generate_proto_models.py

Features:
- Dataclass-based concrete models (not proto wrappers)
- Direct instance creation without proto
- Bidirectional proto conversion (from_proto/to_proto)
- MRO-based automatic parent chain tracking

Usage:
    from zetasql.types import ResolvedLiteral, Type
    
    # Create instance directly
    literal = ResolvedLiteral(
        value=ValueWithType(...),
        type=Type(type_kind=2),
        has_explicit_type=True
    )
    
    # Convert to proto
    proto = literal.to_proto()
    
    # Load from proto
    literal2 = ResolvedLiteral.from_proto(proto)
"""

from __future__ import annotations
from dataclasses import dataclass, field
from typing import Optional, List, Any, ClassVar, Dict, TYPE_CHECKING
import datetime

import zetasql.wasi._pb2.zetasql.common.match_recognize.match_test_result_pb2 as match_recognize_match_test_result_pb2
import zetasql.wasi._pb2.zetasql.common.reflection_pb2 as common_reflection_pb2
import zetasql.wasi._pb2.zetasql.compliance.compliance_label_pb2 as compliance_compliance_label_pb2
import zetasql.wasi._pb2.zetasql.compliance.known_error_pb2 as compliance_known_error_pb2
import zetasql.wasi._pb2.zetasql.local_service.local_service_pb2 as local_service_local_service_pb2
import zetasql.wasi._pb2.zetasql.parser.ast_enums_pb2 as parser_ast_enums_pb2
import zetasql.wasi._pb2.zetasql.parser.parse_tree_pb2 as parser_parse_tree_pb2
import zetasql.wasi._pb2.zetasql.proto.anon_output_with_report_pb2 as proto_anon_output_with_report_pb2
import zetasql.wasi._pb2.zetasql.proto.function_pb2 as proto_function_pb2
import zetasql.wasi._pb2.zetasql.proto.internal_error_location_pb2 as proto_internal_error_location_pb2
import zetasql.wasi._pb2.zetasql.proto.internal_fix_suggestion_pb2 as proto_internal_fix_suggestion_pb2
import zetasql.wasi._pb2.zetasql.proto.module_options_pb2 as proto_module_options_pb2
import zetasql.wasi._pb2.zetasql.proto.options_pb2 as proto_options_pb2
import zetasql.wasi._pb2.zetasql.proto.placeholder_descriptor_pb2 as proto_placeholder_descriptor_pb2
import zetasql.wasi._pb2.zetasql.proto.script_exception_pb2 as proto_script_exception_pb2
import zetasql.wasi._pb2.zetasql.proto.simple_catalog_pb2 as proto_simple_catalog_pb2
import zetasql.wasi._pb2.zetasql.proto.simple_property_graph_pb2 as proto_simple_property_graph_pb2
import zetasql.wasi._pb2.zetasql.public.annotation_pb2 as public_annotation_pb2
import zetasql.wasi._pb2.zetasql.public.builtin_function_pb2 as public_builtin_function_pb2
import zetasql.wasi._pb2.zetasql.public.collation_pb2 as public_collation_pb2
import zetasql.wasi._pb2.zetasql.public.constness_level_pb2 as public_constness_level_pb2
import zetasql.wasi._pb2.zetasql.public.deprecation_warning_pb2 as public_deprecation_warning_pb2
import zetasql.wasi._pb2.zetasql.public.error_location_pb2 as public_error_location_pb2
import zetasql.wasi._pb2.zetasql.public.feature_label_dictionary_pb2 as public_feature_label_dictionary_pb2
import zetasql.wasi._pb2.zetasql.public.fix_suggestion_pb2 as public_fix_suggestion_pb2
import zetasql.wasi._pb2.zetasql.public.formatter_options_pb2 as public_formatter_options_pb2
import zetasql.wasi._pb2.zetasql.public.function_pb2 as public_function_pb2
import zetasql.wasi._pb2.zetasql.public.functions.array_find_mode_pb2 as functions_array_find_mode_pb2
import zetasql.wasi._pb2.zetasql.public.functions.array_zip_mode_pb2 as functions_array_zip_mode_pb2
import zetasql.wasi._pb2.zetasql.public.functions.bitwise_agg_mode_pb2 as functions_bitwise_agg_mode_pb2
import zetasql.wasi._pb2.zetasql.public.functions.datetime_pb2 as functions_datetime_pb2
import zetasql.wasi._pb2.zetasql.public.functions.differential_privacy_pb2 as functions_differential_privacy_pb2
import zetasql.wasi._pb2.zetasql.public.functions.match_recognize.compiled_pattern_pb2 as match_recognize_compiled_pattern_pb2
import zetasql.wasi._pb2.zetasql.public.functions.normalize_mode_pb2 as functions_normalize_mode_pb2
import zetasql.wasi._pb2.zetasql.public.functions.range_sessionize_mode_pb2 as functions_range_sessionize_mode_pb2
import zetasql.wasi._pb2.zetasql.public.functions.rank_type_pb2 as functions_rank_type_pb2
import zetasql.wasi._pb2.zetasql.public.functions.rounding_mode_pb2 as functions_rounding_mode_pb2
import zetasql.wasi._pb2.zetasql.public.functions.unsupported_fields_pb2 as functions_unsupported_fields_pb2
import zetasql.wasi._pb2.zetasql.public.information_schema.property_graph_pb2 as information_schema_property_graph_pb2
import zetasql.wasi._pb2.zetasql.public.options_pb2 as public_options_pb2
import zetasql.wasi._pb2.zetasql.public.parse_location_range_pb2 as public_parse_location_range_pb2
import zetasql.wasi._pb2.zetasql.public.parse_resume_location_pb2 as public_parse_resume_location_pb2
import zetasql.wasi._pb2.zetasql.public.proto.logging_pb2 as proto_logging_pb2
import zetasql.wasi._pb2.zetasql.public.proto.type_annotation_pb2 as proto_type_annotation_pb2
import zetasql.wasi._pb2.zetasql.public.proto.wire_format_annotation_pb2 as proto_wire_format_annotation_pb2
import zetasql.wasi._pb2.zetasql.public.simple_connection_pb2 as public_simple_connection_pb2
import zetasql.wasi._pb2.zetasql.public.simple_constant_pb2 as public_simple_constant_pb2
import zetasql.wasi._pb2.zetasql.public.simple_model_pb2 as public_simple_model_pb2
import zetasql.wasi._pb2.zetasql.public.simple_sequence_pb2 as public_simple_sequence_pb2
import zetasql.wasi._pb2.zetasql.public.simple_table_pb2 as public_simple_table_pb2
import zetasql.wasi._pb2.zetasql.public.simple_token_list_pb2 as public_simple_token_list_pb2
import zetasql.wasi._pb2.zetasql.public.simple_value_pb2 as public_simple_value_pb2
import zetasql.wasi._pb2.zetasql.public.type_modifiers_pb2 as public_type_modifiers_pb2
import zetasql.wasi._pb2.zetasql.public.type_parameters_pb2 as public_type_parameters_pb2
import zetasql.wasi._pb2.zetasql.public.type_pb2 as public_type_pb2
import zetasql.wasi._pb2.zetasql.public.value_pb2 as public_value_pb2
import zetasql.wasi._pb2.zetasql.reference_impl.evaluator_table_iterator_pb2 as reference_impl_evaluator_table_iterator_pb2
import zetasql.wasi._pb2.zetasql.resolved_ast.resolved_ast_enums_pb2 as resolved_ast_resolved_ast_enums_pb2
import zetasql.wasi._pb2.zetasql.resolved_ast.resolved_ast_pb2 as resolved_ast_resolved_ast_pb2
import zetasql.wasi._pb2.zetasql.resolved_ast.resolved_node_kind_pb2 as resolved_ast_resolved_node_kind_pb2
import zetasql.wasi._pb2.zetasql.resolved_ast.serialization_pb2 as resolved_ast_serialization_pb2
import zetasql.wasi._pb2.zetasql.scripting.procedure_extension_pb2 as scripting_procedure_extension_pb2
import zetasql.wasi._pb2.zetasql.scripting.script_executor_state_pb2 as scripting_script_executor_state_pb2
import zetasql.wasi._pb2.zetasql.scripting.variable_pb2 as scripting_variable_pb2
import zetasql.wasi._pb2.zetasql.tools.execute_query.execute_query_pb2 as execute_query_execute_query_pb2
import google.protobuf.any_pb2 as any_pb2
import google.protobuf.descriptor_pb2 as descriptor_pb2
import google.protobuf.duration_pb2 as duration_pb2
import google.protobuf.timestamp_pb2 as timestamp_pb2


# Import IntEnum for enum types
from enum import IntEnum

# Import utilities for proto model functionality
import zetasql.types.proto_model.mixins as proto_model_mixins
from zetasql.types.proto_model.proto_model import ProtoModel

# ============================================================================
# Top-Level Enum Types
# ============================================================================

class DateTimestampPart(IntEnum):
    """
    Auto-generated IntEnum for protobuf DateTimestampPart.
    
    Values are directly compatible with protobuf integer constants.
    """

    __DateTimePart__switch_must_have_a_default__ = functions_datetime_pb2.__DateTimePart__switch_must_have_a_default__  # -1
    YEAR = functions_datetime_pb2.YEAR  # 1
    MONTH = functions_datetime_pb2.MONTH  # 2
    DAY = functions_datetime_pb2.DAY  # 3
    DAYOFWEEK = functions_datetime_pb2.DAYOFWEEK  # 4
    DAYOFYEAR = functions_datetime_pb2.DAYOFYEAR  # 5
    QUARTER = functions_datetime_pb2.QUARTER  # 6
    HOUR = functions_datetime_pb2.HOUR  # 7
    MINUTE = functions_datetime_pb2.MINUTE  # 8
    SECOND = functions_datetime_pb2.SECOND  # 9
    MILLISECOND = functions_datetime_pb2.MILLISECOND  # 10
    MICROSECOND = functions_datetime_pb2.MICROSECOND  # 11
    NANOSECOND = functions_datetime_pb2.NANOSECOND  # 12
    DATE = functions_datetime_pb2.DATE  # 13
    WEEK = functions_datetime_pb2.WEEK  # 14
    DATETIME = functions_datetime_pb2.DATETIME  # 15
    TIME = functions_datetime_pb2.TIME  # 16
    ISOYEAR = functions_datetime_pb2.ISOYEAR  # 17
    ISOWEEK = functions_datetime_pb2.ISOWEEK  # 18
    WEEK_MONDAY = functions_datetime_pb2.WEEK_MONDAY  # 19
    WEEK_TUESDAY = functions_datetime_pb2.WEEK_TUESDAY  # 20
    WEEK_WEDNESDAY = functions_datetime_pb2.WEEK_WEDNESDAY  # 21
    WEEK_THURSDAY = functions_datetime_pb2.WEEK_THURSDAY  # 22
    WEEK_FRIDAY = functions_datetime_pb2.WEEK_FRIDAY  # 23
    WEEK_SATURDAY = functions_datetime_pb2.WEEK_SATURDAY  # 24
    PICOSECOND = functions_datetime_pb2.PICOSECOND  # 25


class ErrorMessageMode(IntEnum):
    """
    Auto-generated IntEnum for protobuf ErrorMessageMode.
    
    Values are directly compatible with protobuf integer constants.
    """

    ERROR_MESSAGE_WITH_PAYLOAD = public_options_pb2.ERROR_MESSAGE_WITH_PAYLOAD  # 0
    ERROR_MESSAGE_ONE_LINE = public_options_pb2.ERROR_MESSAGE_ONE_LINE  # 1
    ERROR_MESSAGE_MULTI_LINE_WITH_CARET = public_options_pb2.ERROR_MESSAGE_MULTI_LINE_WITH_CARET  # 2


class ErrorMessageStability(IntEnum):
    """
    Auto-generated IntEnum for protobuf ErrorMessageStability.
    
    Values are directly compatible with protobuf integer constants.
    """

    ERROR_MESSAGE_STABILITY_UNSPECIFIED = public_options_pb2.ERROR_MESSAGE_STABILITY_UNSPECIFIED  # 0
    ERROR_MESSAGE_STABILITY_PRODUCTION = public_options_pb2.ERROR_MESSAGE_STABILITY_PRODUCTION  # 1
    ERROR_MESSAGE_STABILITY_TEST_REDACTED = public_options_pb2.ERROR_MESSAGE_STABILITY_TEST_REDACTED  # 2
    ERROR_MESSAGE_STABILITY_TEST_REDACTED_WITH_PAYLOADS = public_options_pb2.ERROR_MESSAGE_STABILITY_TEST_REDACTED_WITH_PAYLOADS  # 3
    ERROR_MESSAGE_STABILITY_TEST_MINIMIZED = public_options_pb2.ERROR_MESSAGE_STABILITY_TEST_MINIMIZED  # 4
    ERROR_MESSAGE_STABILITY_TEST_MINIMIZED_WITH_PAYLOADS = public_options_pb2.ERROR_MESSAGE_STABILITY_TEST_MINIMIZED_WITH_PAYLOADS  # 5


class FunctionSignatureId(IntEnum):
    """
    Auto-generated IntEnum for protobuf FunctionSignatureId.
    
    Values are directly compatible with protobuf integer constants.
    """

    __FunctionSignatureId__switch_must_have_a_default__ = public_builtin_function_pb2.__FunctionSignatureId__switch_must_have_a_default__  # -1
    FN_INVALID_FUNCTION_ID = public_builtin_function_pb2.FN_INVALID_FUNCTION_ID  # 1
    FN_ADD_DOUBLE = public_builtin_function_pb2.FN_ADD_DOUBLE  # 2
    FN_ADD_INT64 = public_builtin_function_pb2.FN_ADD_INT64  # 4
    FN_AND = public_builtin_function_pb2.FN_AND  # 5
    FN_CASE_NO_VALUE = public_builtin_function_pb2.FN_CASE_NO_VALUE  # 6
    FN_CASE_WITH_VALUE = public_builtin_function_pb2.FN_CASE_WITH_VALUE  # 7
    FN_DIVIDE_DOUBLE = public_builtin_function_pb2.FN_DIVIDE_DOUBLE  # 40
    FN_MULTIPLY_DOUBLE = public_builtin_function_pb2.FN_MULTIPLY_DOUBLE  # 41
    FN_EQUAL = public_builtin_function_pb2.FN_EQUAL  # 42
    FN_MULTIPLY_INT64 = public_builtin_function_pb2.FN_MULTIPLY_INT64  # 44
    FN_NOT = public_builtin_function_pb2.FN_NOT  # 45
    FN_OR = public_builtin_function_pb2.FN_OR  # 46
    FN_SUBTRACT_INT64 = public_builtin_function_pb2.FN_SUBTRACT_INT64  # 48
    FN_COUNT_STAR = public_builtin_function_pb2.FN_COUNT_STAR  # 57
    FN_UNARY_MINUS_INT32 = public_builtin_function_pb2.FN_UNARY_MINUS_INT32  # 83
    FN_UNARY_MINUS_INT64 = public_builtin_function_pb2.FN_UNARY_MINUS_INT64  # 84
    FN_UNARY_MINUS_FLOAT = public_builtin_function_pb2.FN_UNARY_MINUS_FLOAT  # 87
    FN_UNARY_MINUS_DOUBLE = public_builtin_function_pb2.FN_UNARY_MINUS_DOUBLE  # 88
    FN_STRING_LIKE = public_builtin_function_pb2.FN_STRING_LIKE  # 97
    FN_BYTE_LIKE = public_builtin_function_pb2.FN_BYTE_LIKE  # 98
    FN_IN = public_builtin_function_pb2.FN_IN  # 100
    FN_IS_NULL = public_builtin_function_pb2.FN_IS_NULL  # 101
    FN_IS_TRUE = public_builtin_function_pb2.FN_IS_TRUE  # 102
    FN_IS_FALSE = public_builtin_function_pb2.FN_IS_FALSE  # 103
    FN_LESS = public_builtin_function_pb2.FN_LESS  # 105
    FN_LESS_OR_EQUAL = public_builtin_function_pb2.FN_LESS_OR_EQUAL  # 106
    FN_GREATER = public_builtin_function_pb2.FN_GREATER  # 107
    FN_GREATER_OR_EQUAL = public_builtin_function_pb2.FN_GREATER_OR_EQUAL  # 108
    FN_NOT_EQUAL = public_builtin_function_pb2.FN_NOT_EQUAL  # 109
    FN_BETWEEN = public_builtin_function_pb2.FN_BETWEEN  # 110
    FN_MULTIPLY_UINT64 = public_builtin_function_pb2.FN_MULTIPLY_UINT64  # 114
    FN_SUBTRACT_DOUBLE = public_builtin_function_pb2.FN_SUBTRACT_DOUBLE  # 115
    FN_SUBTRACT_UINT64 = public_builtin_function_pb2.FN_SUBTRACT_UINT64  # 117
    FN_ADD_UINT64 = public_builtin_function_pb2.FN_ADD_UINT64  # 119
    FN_BITWISE_NOT_INT32 = public_builtin_function_pb2.FN_BITWISE_NOT_INT32  # 120
    FN_BITWISE_NOT_INT64 = public_builtin_function_pb2.FN_BITWISE_NOT_INT64  # 121
    FN_BITWISE_NOT_UINT32 = public_builtin_function_pb2.FN_BITWISE_NOT_UINT32  # 122
    FN_BITWISE_NOT_UINT64 = public_builtin_function_pb2.FN_BITWISE_NOT_UINT64  # 123
    FN_BITWISE_OR_INT32 = public_builtin_function_pb2.FN_BITWISE_OR_INT32  # 124
    FN_BITWISE_OR_INT64 = public_builtin_function_pb2.FN_BITWISE_OR_INT64  # 125
    FN_BITWISE_OR_UINT32 = public_builtin_function_pb2.FN_BITWISE_OR_UINT32  # 126
    FN_BITWISE_OR_UINT64 = public_builtin_function_pb2.FN_BITWISE_OR_UINT64  # 127
    FN_BITWISE_XOR_INT32 = public_builtin_function_pb2.FN_BITWISE_XOR_INT32  # 128
    FN_BITWISE_XOR_INT64 = public_builtin_function_pb2.FN_BITWISE_XOR_INT64  # 129
    FN_BITWISE_XOR_UINT32 = public_builtin_function_pb2.FN_BITWISE_XOR_UINT32  # 130
    FN_BITWISE_XOR_UINT64 = public_builtin_function_pb2.FN_BITWISE_XOR_UINT64  # 131
    FN_BITWISE_AND_INT32 = public_builtin_function_pb2.FN_BITWISE_AND_INT32  # 132
    FN_BITWISE_AND_INT64 = public_builtin_function_pb2.FN_BITWISE_AND_INT64  # 133
    FN_BITWISE_AND_UINT32 = public_builtin_function_pb2.FN_BITWISE_AND_UINT32  # 134
    FN_BITWISE_AND_UINT64 = public_builtin_function_pb2.FN_BITWISE_AND_UINT64  # 135
    FN_BITWISE_LEFT_SHIFT_INT32 = public_builtin_function_pb2.FN_BITWISE_LEFT_SHIFT_INT32  # 136
    FN_BITWISE_LEFT_SHIFT_INT64 = public_builtin_function_pb2.FN_BITWISE_LEFT_SHIFT_INT64  # 137
    FN_BITWISE_LEFT_SHIFT_UINT32 = public_builtin_function_pb2.FN_BITWISE_LEFT_SHIFT_UINT32  # 138
    FN_BITWISE_LEFT_SHIFT_UINT64 = public_builtin_function_pb2.FN_BITWISE_LEFT_SHIFT_UINT64  # 139
    FN_BITWISE_RIGHT_SHIFT_INT32 = public_builtin_function_pb2.FN_BITWISE_RIGHT_SHIFT_INT32  # 140
    FN_BITWISE_RIGHT_SHIFT_INT64 = public_builtin_function_pb2.FN_BITWISE_RIGHT_SHIFT_INT64  # 141
    FN_BITWISE_RIGHT_SHIFT_UINT32 = public_builtin_function_pb2.FN_BITWISE_RIGHT_SHIFT_UINT32  # 142
    FN_BITWISE_RIGHT_SHIFT_UINT64 = public_builtin_function_pb2.FN_BITWISE_RIGHT_SHIFT_UINT64  # 143
    FN_BIT_COUNT_INT32 = public_builtin_function_pb2.FN_BIT_COUNT_INT32  # 144
    FN_BIT_COUNT_INT64 = public_builtin_function_pb2.FN_BIT_COUNT_INT64  # 145
    FN_BIT_COUNT_UINT64 = public_builtin_function_pb2.FN_BIT_COUNT_UINT64  # 146
    FN_MAKE_ARRAY = public_builtin_function_pb2.FN_MAKE_ARRAY  # 218
    FN_IN_ARRAY = public_builtin_function_pb2.FN_IN_ARRAY  # 219
    FN_ARRAY_LENGTH = public_builtin_function_pb2.FN_ARRAY_LENGTH  # 220
    FN_GREATER_INT64_UINT64 = public_builtin_function_pb2.FN_GREATER_INT64_UINT64  # 222
    FN_GREATER_UINT64_INT64 = public_builtin_function_pb2.FN_GREATER_UINT64_INT64  # 223
    FN_GREATER_OR_EQUAL_INT64_UINT64 = public_builtin_function_pb2.FN_GREATER_OR_EQUAL_INT64_UINT64  # 224
    FN_GREATER_OR_EQUAL_UINT64_INT64 = public_builtin_function_pb2.FN_GREATER_OR_EQUAL_UINT64_INT64  # 225
    FN_LESS_INT64_UINT64 = public_builtin_function_pb2.FN_LESS_INT64_UINT64  # 226
    FN_LESS_UINT64_INT64 = public_builtin_function_pb2.FN_LESS_UINT64_INT64  # 227
    FN_LESS_OR_EQUAL_INT64_UINT64 = public_builtin_function_pb2.FN_LESS_OR_EQUAL_INT64_UINT64  # 228
    FN_LESS_OR_EQUAL_UINT64_INT64 = public_builtin_function_pb2.FN_LESS_OR_EQUAL_UINT64_INT64  # 229
    FN_EQUAL_INT64_UINT64 = public_builtin_function_pb2.FN_EQUAL_INT64_UINT64  # 230
    FN_EQUAL_UINT64_INT64 = public_builtin_function_pb2.FN_EQUAL_UINT64_INT64  # 231
    FN_NOT_EQUAL_INT64_UINT64 = public_builtin_function_pb2.FN_NOT_EQUAL_INT64_UINT64  # 232
    FN_NOT_EQUAL_UINT64_INT64 = public_builtin_function_pb2.FN_NOT_EQUAL_UINT64_INT64  # 233
    FN_ARRAY_AT_OFFSET = public_builtin_function_pb2.FN_ARRAY_AT_OFFSET  # 234
    FN_ARRAY_AT_ORDINAL = public_builtin_function_pb2.FN_ARRAY_AT_ORDINAL  # 235
    FN_ARRAY_CONCAT = public_builtin_function_pb2.FN_ARRAY_CONCAT  # 236
    FN_ARRAY_TO_STRING = public_builtin_function_pb2.FN_ARRAY_TO_STRING  # 237
    FN_ARRAY_TO_BYTES = public_builtin_function_pb2.FN_ARRAY_TO_BYTES  # 238
    FN_SAFE_ARRAY_AT_OFFSET = public_builtin_function_pb2.FN_SAFE_ARRAY_AT_OFFSET  # 239
    FN_SAFE_ARRAY_AT_ORDINAL = public_builtin_function_pb2.FN_SAFE_ARRAY_AT_ORDINAL  # 240
    FN_BITWISE_NOT_BYTES = public_builtin_function_pb2.FN_BITWISE_NOT_BYTES  # 241
    FN_BITWISE_OR_BYTES = public_builtin_function_pb2.FN_BITWISE_OR_BYTES  # 242
    FN_BITWISE_XOR_BYTES = public_builtin_function_pb2.FN_BITWISE_XOR_BYTES  # 243
    FN_BITWISE_AND_BYTES = public_builtin_function_pb2.FN_BITWISE_AND_BYTES  # 244
    FN_BITWISE_LEFT_SHIFT_BYTES = public_builtin_function_pb2.FN_BITWISE_LEFT_SHIFT_BYTES  # 245
    FN_BITWISE_RIGHT_SHIFT_BYTES = public_builtin_function_pb2.FN_BITWISE_RIGHT_SHIFT_BYTES  # 246
    FN_BIT_COUNT_BYTES = public_builtin_function_pb2.FN_BIT_COUNT_BYTES  # 247
    FN_ADD_NUMERIC = public_builtin_function_pb2.FN_ADD_NUMERIC  # 248
    FN_SUBTRACT_NUMERIC = public_builtin_function_pb2.FN_SUBTRACT_NUMERIC  # 249
    FN_DIVIDE_NUMERIC = public_builtin_function_pb2.FN_DIVIDE_NUMERIC  # 250
    FN_MULTIPLY_NUMERIC = public_builtin_function_pb2.FN_MULTIPLY_NUMERIC  # 251
    FN_UNARY_MINUS_NUMERIC = public_builtin_function_pb2.FN_UNARY_MINUS_NUMERIC  # 252
    FN_ERROR = public_builtin_function_pb2.FN_ERROR  # 253
    FN_BETWEEN_INT64_UINT64_UINT64 = public_builtin_function_pb2.FN_BETWEEN_INT64_UINT64_UINT64  # 254
    FN_BETWEEN_INT64_UINT64_INT64 = public_builtin_function_pb2.FN_BETWEEN_INT64_UINT64_INT64  # 255
    FN_BETWEEN_INT64_INT64_UINT64 = public_builtin_function_pb2.FN_BETWEEN_INT64_INT64_UINT64  # 256
    FN_BETWEEN_UINT64_INT64_INT64 = public_builtin_function_pb2.FN_BETWEEN_UINT64_INT64_INT64  # 257
    FN_BETWEEN_UINT64_UINT64_INT64 = public_builtin_function_pb2.FN_BETWEEN_UINT64_UINT64_INT64  # 258
    FN_BETWEEN_UINT64_INT64_UINT64 = public_builtin_function_pb2.FN_BETWEEN_UINT64_INT64_UINT64  # 259
    FN_ARRAY_CONCAT_OP = public_builtin_function_pb2.FN_ARRAY_CONCAT_OP  # 260
    FN_ADD_BIGNUMERIC = public_builtin_function_pb2.FN_ADD_BIGNUMERIC  # 261
    FN_SUBTRACT_BIGNUMERIC = public_builtin_function_pb2.FN_SUBTRACT_BIGNUMERIC  # 262
    FN_DIVIDE_BIGNUMERIC = public_builtin_function_pb2.FN_DIVIDE_BIGNUMERIC  # 263
    FN_MULTIPLY_BIGNUMERIC = public_builtin_function_pb2.FN_MULTIPLY_BIGNUMERIC  # 264
    FN_UNARY_MINUS_BIGNUMERIC = public_builtin_function_pb2.FN_UNARY_MINUS_BIGNUMERIC  # 265
    FN_ADD_DATE_INT64 = public_builtin_function_pb2.FN_ADD_DATE_INT64  # 266
    FN_ADD_INT64_DATE = public_builtin_function_pb2.FN_ADD_INT64_DATE  # 267
    FN_SUBTRACT_DATE_INT64 = public_builtin_function_pb2.FN_SUBTRACT_DATE_INT64  # 268
    FN_DISTINCT = public_builtin_function_pb2.FN_DISTINCT  # 269
    FN_DISTINCT_INT64_UINT64 = public_builtin_function_pb2.FN_DISTINCT_INT64_UINT64  # 270
    FN_DISTINCT_UINT64_INT64 = public_builtin_function_pb2.FN_DISTINCT_UINT64_INT64  # 271
    FN_NOT_DISTINCT = public_builtin_function_pb2.FN_NOT_DISTINCT  # 272
    FN_NOT_DISTINCT_INT64_UINT64 = public_builtin_function_pb2.FN_NOT_DISTINCT_INT64_UINT64  # 273
    FN_NOT_DISTINCT_UINT64_INT64 = public_builtin_function_pb2.FN_NOT_DISTINCT_UINT64_INT64  # 274
    FN_UNARY_MINUS_INTERVAL = public_builtin_function_pb2.FN_UNARY_MINUS_INTERVAL  # 275
    FN_SUBTRACT_DATE = public_builtin_function_pb2.FN_SUBTRACT_DATE  # 276
    FN_SUBTRACT_TIMESTAMP = public_builtin_function_pb2.FN_SUBTRACT_TIMESTAMP  # 277
    FN_SUBTRACT_DATETIME = public_builtin_function_pb2.FN_SUBTRACT_DATETIME  # 278
    FN_SUBTRACT_TIME = public_builtin_function_pb2.FN_SUBTRACT_TIME  # 279
    FN_ADD_TIMESTAMP_INTERVAL = public_builtin_function_pb2.FN_ADD_TIMESTAMP_INTERVAL  # 280
    FN_ADD_INTERVAL_TIMESTAMP = public_builtin_function_pb2.FN_ADD_INTERVAL_TIMESTAMP  # 281
    FN_ADD_DATE_INTERVAL = public_builtin_function_pb2.FN_ADD_DATE_INTERVAL  # 282
    FN_ADD_INTERVAL_DATE = public_builtin_function_pb2.FN_ADD_INTERVAL_DATE  # 283
    FN_ADD_DATETIME_INTERVAL = public_builtin_function_pb2.FN_ADD_DATETIME_INTERVAL  # 284
    FN_ADD_INTERVAL_DATETIME = public_builtin_function_pb2.FN_ADD_INTERVAL_DATETIME  # 285
    FN_SUBTRACT_TIMESTAMP_INTERVAL = public_builtin_function_pb2.FN_SUBTRACT_TIMESTAMP_INTERVAL  # 286
    FN_SUBTRACT_DATE_INTERVAL = public_builtin_function_pb2.FN_SUBTRACT_DATE_INTERVAL  # 287
    FN_SUBTRACT_DATETIME_INTERVAL = public_builtin_function_pb2.FN_SUBTRACT_DATETIME_INTERVAL  # 288
    FN_ADD_INTERVAL_INTERVAL = public_builtin_function_pb2.FN_ADD_INTERVAL_INTERVAL  # 289
    FN_SUBTRACT_INTERVAL_INTERVAL = public_builtin_function_pb2.FN_SUBTRACT_INTERVAL_INTERVAL  # 290
    FN_STRING_ARRAY_LIKE_ANY = public_builtin_function_pb2.FN_STRING_ARRAY_LIKE_ANY  # 291
    FN_STRING_ARRAY_LIKE_ALL = public_builtin_function_pb2.FN_STRING_ARRAY_LIKE_ALL  # 292
    FN_STRING_LIKE_ANY = public_builtin_function_pb2.FN_STRING_LIKE_ANY  # 293
    FN_STRING_LIKE_ALL = public_builtin_function_pb2.FN_STRING_LIKE_ALL  # 294
    FN_BYTE_ARRAY_LIKE_ANY = public_builtin_function_pb2.FN_BYTE_ARRAY_LIKE_ANY  # 295
    FN_BYTE_ARRAY_LIKE_ALL = public_builtin_function_pb2.FN_BYTE_ARRAY_LIKE_ALL  # 296
    FN_BYTE_LIKE_ANY = public_builtin_function_pb2.FN_BYTE_LIKE_ANY  # 297
    FN_BYTE_LIKE_ALL = public_builtin_function_pb2.FN_BYTE_LIKE_ALL  # 298
    FN_MULTIPLY_INTERVAL_INT64 = public_builtin_function_pb2.FN_MULTIPLY_INTERVAL_INT64  # 299
    FN_MULTIPLY_INT64_INTERVAL = public_builtin_function_pb2.FN_MULTIPLY_INT64_INTERVAL  # 300
    FN_DIVIDE_INTERVAL_INT64 = public_builtin_function_pb2.FN_DIVIDE_INTERVAL_INT64  # 301
    FN_STRING_NOT_LIKE_ANY = public_builtin_function_pb2.FN_STRING_NOT_LIKE_ANY  # 302
    FN_BYTE_NOT_LIKE_ANY = public_builtin_function_pb2.FN_BYTE_NOT_LIKE_ANY  # 303
    FN_STRING_ARRAY_NOT_LIKE_ANY = public_builtin_function_pb2.FN_STRING_ARRAY_NOT_LIKE_ANY  # 304
    FN_BYTE_ARRAY_NOT_LIKE_ANY = public_builtin_function_pb2.FN_BYTE_ARRAY_NOT_LIKE_ANY  # 305
    FN_STRING_NOT_LIKE_ALL = public_builtin_function_pb2.FN_STRING_NOT_LIKE_ALL  # 306
    FN_BYTE_NOT_LIKE_ALL = public_builtin_function_pb2.FN_BYTE_NOT_LIKE_ALL  # 307
    FN_STRING_ARRAY_NOT_LIKE_ALL = public_builtin_function_pb2.FN_STRING_ARRAY_NOT_LIKE_ALL  # 308
    FN_BYTE_ARRAY_NOT_LIKE_ALL = public_builtin_function_pb2.FN_BYTE_ARRAY_NOT_LIKE_ALL  # 309
    FN_CONCAT_STRING = public_builtin_function_pb2.FN_CONCAT_STRING  # 1000
    FN_CONCAT_BYTES = public_builtin_function_pb2.FN_CONCAT_BYTES  # 1001
    FN_STRPOS_STRING = public_builtin_function_pb2.FN_STRPOS_STRING  # 1002
    FN_STRPOS_BYTES = public_builtin_function_pb2.FN_STRPOS_BYTES  # 1003
    FN_LOWER_STRING = public_builtin_function_pb2.FN_LOWER_STRING  # 1006
    FN_LOWER_BYTES = public_builtin_function_pb2.FN_LOWER_BYTES  # 1007
    FN_UPPER_STRING = public_builtin_function_pb2.FN_UPPER_STRING  # 1008
    FN_UPPER_BYTES = public_builtin_function_pb2.FN_UPPER_BYTES  # 1009
    FN_LENGTH_STRING = public_builtin_function_pb2.FN_LENGTH_STRING  # 1010
    FN_LENGTH_BYTES = public_builtin_function_pb2.FN_LENGTH_BYTES  # 1011
    FN_STARTS_WITH_STRING = public_builtin_function_pb2.FN_STARTS_WITH_STRING  # 1012
    FN_STARTS_WITH_BYTES = public_builtin_function_pb2.FN_STARTS_WITH_BYTES  # 1013
    FN_ENDS_WITH_STRING = public_builtin_function_pb2.FN_ENDS_WITH_STRING  # 1014
    FN_ENDS_WITH_BYTES = public_builtin_function_pb2.FN_ENDS_WITH_BYTES  # 1015
    FN_SUBSTR_STRING = public_builtin_function_pb2.FN_SUBSTR_STRING  # 1016
    FN_SUBSTR_BYTES = public_builtin_function_pb2.FN_SUBSTR_BYTES  # 1017
    FN_TRIM_STRING = public_builtin_function_pb2.FN_TRIM_STRING  # 1018
    FN_TRIM_BYTES = public_builtin_function_pb2.FN_TRIM_BYTES  # 1019
    FN_LTRIM_STRING = public_builtin_function_pb2.FN_LTRIM_STRING  # 1020
    FN_LTRIM_BYTES = public_builtin_function_pb2.FN_LTRIM_BYTES  # 1021
    FN_RTRIM_STRING = public_builtin_function_pb2.FN_RTRIM_STRING  # 1022
    FN_RTRIM_BYTES = public_builtin_function_pb2.FN_RTRIM_BYTES  # 1023
    FN_REPLACE_STRING = public_builtin_function_pb2.FN_REPLACE_STRING  # 1024
    FN_REPLACE_BYTES = public_builtin_function_pb2.FN_REPLACE_BYTES  # 1025
    FN_REGEXP_MATCH_STRING = public_builtin_function_pb2.FN_REGEXP_MATCH_STRING  # 1026
    FN_REGEXP_MATCH_BYTES = public_builtin_function_pb2.FN_REGEXP_MATCH_BYTES  # 1027
    FN_REGEXP_EXTRACT_STRING = public_builtin_function_pb2.FN_REGEXP_EXTRACT_STRING  # 1028
    FN_REGEXP_EXTRACT_BYTES = public_builtin_function_pb2.FN_REGEXP_EXTRACT_BYTES  # 1029
    FN_REGEXP_REPLACE_STRING = public_builtin_function_pb2.FN_REGEXP_REPLACE_STRING  # 1030
    FN_REGEXP_REPLACE_BYTES = public_builtin_function_pb2.FN_REGEXP_REPLACE_BYTES  # 1031
    FN_REGEXP_EXTRACT_ALL_STRING = public_builtin_function_pb2.FN_REGEXP_EXTRACT_ALL_STRING  # 1032
    FN_REGEXP_EXTRACT_ALL_BYTES = public_builtin_function_pb2.FN_REGEXP_EXTRACT_ALL_BYTES  # 1033
    FN_BYTE_LENGTH_STRING = public_builtin_function_pb2.FN_BYTE_LENGTH_STRING  # 1034
    FN_BYTE_LENGTH_BYTES = public_builtin_function_pb2.FN_BYTE_LENGTH_BYTES  # 1035
    FN_CHAR_LENGTH_STRING = public_builtin_function_pb2.FN_CHAR_LENGTH_STRING  # 1036
    FN_FORMAT_STRING = public_builtin_function_pb2.FN_FORMAT_STRING  # 1037
    FN_SPLIT_STRING = public_builtin_function_pb2.FN_SPLIT_STRING  # 1038
    FN_SPLIT_BYTES = public_builtin_function_pb2.FN_SPLIT_BYTES  # 1039
    FN_REGEXP_CONTAINS_STRING = public_builtin_function_pb2.FN_REGEXP_CONTAINS_STRING  # 1040
    FN_REGEXP_CONTAINS_BYTES = public_builtin_function_pb2.FN_REGEXP_CONTAINS_BYTES  # 1041
    FN_SAFE_CONVERT_BYTES_TO_STRING = public_builtin_function_pb2.FN_SAFE_CONVERT_BYTES_TO_STRING  # 1042
    FN_NORMALIZE_STRING = public_builtin_function_pb2.FN_NORMALIZE_STRING  # 1043
    FN_NORMALIZE_AND_CASEFOLD_STRING = public_builtin_function_pb2.FN_NORMALIZE_AND_CASEFOLD_STRING  # 1044
    FN_TO_BASE64 = public_builtin_function_pb2.FN_TO_BASE64  # 1045
    FN_FROM_BASE64 = public_builtin_function_pb2.FN_FROM_BASE64  # 1046
    FN_TO_CODE_POINTS_STRING = public_builtin_function_pb2.FN_TO_CODE_POINTS_STRING  # 1047
    FN_TO_CODE_POINTS_BYTES = public_builtin_function_pb2.FN_TO_CODE_POINTS_BYTES  # 1048
    FN_CODE_POINTS_TO_STRING = public_builtin_function_pb2.FN_CODE_POINTS_TO_STRING  # 1049
    FN_CODE_POINTS_TO_BYTES = public_builtin_function_pb2.FN_CODE_POINTS_TO_BYTES  # 1050
    FN_LPAD_BYTES = public_builtin_function_pb2.FN_LPAD_BYTES  # 1051
    FN_LPAD_STRING = public_builtin_function_pb2.FN_LPAD_STRING  # 1052
    FN_RPAD_BYTES = public_builtin_function_pb2.FN_RPAD_BYTES  # 1053
    FN_RPAD_STRING = public_builtin_function_pb2.FN_RPAD_STRING  # 1054
    FN_REPEAT_BYTES = public_builtin_function_pb2.FN_REPEAT_BYTES  # 1055
    FN_REPEAT_STRING = public_builtin_function_pb2.FN_REPEAT_STRING  # 1056
    FN_REVERSE_STRING = public_builtin_function_pb2.FN_REVERSE_STRING  # 1057
    FN_REVERSE_BYTES = public_builtin_function_pb2.FN_REVERSE_BYTES  # 1058
    FN_TO_HEX = public_builtin_function_pb2.FN_TO_HEX  # 1059
    FN_FROM_HEX = public_builtin_function_pb2.FN_FROM_HEX  # 1060
    FN_TO_BASE32 = public_builtin_function_pb2.FN_TO_BASE32  # 1061
    FN_FROM_BASE32 = public_builtin_function_pb2.FN_FROM_BASE32  # 1062
    FN_CONCAT_OP_STRING = public_builtin_function_pb2.FN_CONCAT_OP_STRING  # 1063
    FN_CONCAT_OP_BYTES = public_builtin_function_pb2.FN_CONCAT_OP_BYTES  # 1064
    FN_LEFT_STRING = public_builtin_function_pb2.FN_LEFT_STRING  # 1065
    FN_LEFT_BYTES = public_builtin_function_pb2.FN_LEFT_BYTES  # 1066
    FN_RIGHT_STRING = public_builtin_function_pb2.FN_RIGHT_STRING  # 1067
    FN_RIGHT_BYTES = public_builtin_function_pb2.FN_RIGHT_BYTES  # 1068
    FN_SOUNDEX_STRING = public_builtin_function_pb2.FN_SOUNDEX_STRING  # 1069
    FN_INSTR_STRING = public_builtin_function_pb2.FN_INSTR_STRING  # 1070
    FN_INSTR_BYTES = public_builtin_function_pb2.FN_INSTR_BYTES  # 1071
    FN_ASCII_STRING = public_builtin_function_pb2.FN_ASCII_STRING  # 1072
    FN_ASCII_BYTES = public_builtin_function_pb2.FN_ASCII_BYTES  # 1073
    FN_TRANSLATE_STRING = public_builtin_function_pb2.FN_TRANSLATE_STRING  # 1074
    FN_TRANSLATE_BYTES = public_builtin_function_pb2.FN_TRANSLATE_BYTES  # 1075
    FN_INITCAP_STRING = public_builtin_function_pb2.FN_INITCAP_STRING  # 1076
    FN_UNICODE_STRING = public_builtin_function_pb2.FN_UNICODE_STRING  # 1077
    FN_CHR_STRING = public_builtin_function_pb2.FN_CHR_STRING  # 1078
    FN_REGEXP_INSTR_STRING = public_builtin_function_pb2.FN_REGEXP_INSTR_STRING  # 1079
    FN_REGEXP_INSTR_BYTES = public_builtin_function_pb2.FN_REGEXP_INSTR_BYTES  # 1080
    FN_COLLATE = public_builtin_function_pb2.FN_COLLATE  # 1082
    FN_SPLIT_SUBSTR = public_builtin_function_pb2.FN_SPLIT_SUBSTR  # 1083
    FN_REGEXP_EXTRACT_GROUPS_STRING = public_builtin_function_pb2.FN_REGEXP_EXTRACT_GROUPS_STRING  # 1084
    FN_REGEXP_EXTRACT_GROUPS_BYTES = public_builtin_function_pb2.FN_REGEXP_EXTRACT_GROUPS_BYTES  # 1085
    FN_IF = public_builtin_function_pb2.FN_IF  # 1100
    FN_COALESCE = public_builtin_function_pb2.FN_COALESCE  # 1101
    FN_IFNULL = public_builtin_function_pb2.FN_IFNULL  # 1102
    FN_NULLIF = public_builtin_function_pb2.FN_NULLIF  # 1103
    FN_IFERROR = public_builtin_function_pb2.FN_IFERROR  # 1104
    FN_NULLIFERROR = public_builtin_function_pb2.FN_NULLIFERROR  # 1105
    FN_ISERROR = public_builtin_function_pb2.FN_ISERROR  # 1106
    FN_WITH_SIDE_EFFECTS = public_builtin_function_pb2.FN_WITH_SIDE_EFFECTS  # 1107
    FN_CURRENT_DATE = public_builtin_function_pb2.FN_CURRENT_DATE  # 1200
    FN_DATE_ADD_DATE = public_builtin_function_pb2.FN_DATE_ADD_DATE  # 1205
    FN_DATE_DIFF_DATE = public_builtin_function_pb2.FN_DATE_DIFF_DATE  # 1210
    FN_DATE_SUB_DATE = public_builtin_function_pb2.FN_DATE_SUB_DATE  # 1215
    FN_DATE_TRUNC_DATE = public_builtin_function_pb2.FN_DATE_TRUNC_DATE  # 1220
    FN_DATE_FROM_UNIX_DATE = public_builtin_function_pb2.FN_DATE_FROM_UNIX_DATE  # 1225
    FN_UNIX_DATE = public_builtin_function_pb2.FN_UNIX_DATE  # 1230
    FN_EXTRACT_FROM_DATE = public_builtin_function_pb2.FN_EXTRACT_FROM_DATE  # 1251
    FN_CURRENT_TIMESTAMP = public_builtin_function_pb2.FN_CURRENT_TIMESTAMP  # 1260
    FN_TIMESTAMP_ADD = public_builtin_function_pb2.FN_TIMESTAMP_ADD  # 1261
    FN_TIMESTAMP_DIFF = public_builtin_function_pb2.FN_TIMESTAMP_DIFF  # 1262
    FN_TIMESTAMP_SUB = public_builtin_function_pb2.FN_TIMESTAMP_SUB  # 1263
    FN_TIMESTAMP_TRUNC = public_builtin_function_pb2.FN_TIMESTAMP_TRUNC  # 1264
    FN_UNIX_SECONDS_FROM_TIMESTAMP = public_builtin_function_pb2.FN_UNIX_SECONDS_FROM_TIMESTAMP  # 1268
    FN_UNIX_MILLIS_FROM_TIMESTAMP = public_builtin_function_pb2.FN_UNIX_MILLIS_FROM_TIMESTAMP  # 1269
    FN_UNIX_MICROS_FROM_TIMESTAMP = public_builtin_function_pb2.FN_UNIX_MICROS_FROM_TIMESTAMP  # 1270
    FN_DATE_FROM_TIMESTAMP = public_builtin_function_pb2.FN_DATE_FROM_TIMESTAMP  # 1271
    FN_TIMESTAMP_FROM_STRING = public_builtin_function_pb2.FN_TIMESTAMP_FROM_STRING  # 1272
    FN_TIMESTAMP_FROM_DATE = public_builtin_function_pb2.FN_TIMESTAMP_FROM_DATE  # 1273
    FN_STRING_FROM_TIMESTAMP = public_builtin_function_pb2.FN_STRING_FROM_TIMESTAMP  # 1274
    FN_EXTRACT_FROM_TIMESTAMP = public_builtin_function_pb2.FN_EXTRACT_FROM_TIMESTAMP  # 1275
    FN_EXTRACT_DATE_FROM_TIMESTAMP = public_builtin_function_pb2.FN_EXTRACT_DATE_FROM_TIMESTAMP  # 1276
    FN_TIMESTAMP_FROM_INT64_SECONDS = public_builtin_function_pb2.FN_TIMESTAMP_FROM_INT64_SECONDS  # 1289
    FN_TIMESTAMP_FROM_INT64_MILLIS = public_builtin_function_pb2.FN_TIMESTAMP_FROM_INT64_MILLIS  # 1290
    FN_TIMESTAMP_FROM_INT64_MICROS = public_builtin_function_pb2.FN_TIMESTAMP_FROM_INT64_MICROS  # 1291
    FN_FORMAT_DATE = public_builtin_function_pb2.FN_FORMAT_DATE  # 1293
    FN_FORMAT_TIMESTAMP = public_builtin_function_pb2.FN_FORMAT_TIMESTAMP  # 1294
    FN_PARSE_DATE = public_builtin_function_pb2.FN_PARSE_DATE  # 1295
    FN_PARSE_TIMESTAMP = public_builtin_function_pb2.FN_PARSE_TIMESTAMP  # 1296
    FN_DATE_FROM_YEAR_MONTH_DAY = public_builtin_function_pb2.FN_DATE_FROM_YEAR_MONTH_DAY  # 1297
    FN_TIME_FROM_HOUR_MINUTE_SECOND = public_builtin_function_pb2.FN_TIME_FROM_HOUR_MINUTE_SECOND  # 1298
    FN_DATETIME_FROM_DATE_AND_TIME = public_builtin_function_pb2.FN_DATETIME_FROM_DATE_AND_TIME  # 1299
    FN_ABS_INT32 = public_builtin_function_pb2.FN_ABS_INT32  # 1300
    FN_ABS_INT64 = public_builtin_function_pb2.FN_ABS_INT64  # 1301
    FN_ABS_FLOAT = public_builtin_function_pb2.FN_ABS_FLOAT  # 1302
    FN_ABS_DOUBLE = public_builtin_function_pb2.FN_ABS_DOUBLE  # 1303
    FN_ROUND_DOUBLE = public_builtin_function_pb2.FN_ROUND_DOUBLE  # 1305
    FN_ROUND_FLOAT = public_builtin_function_pb2.FN_ROUND_FLOAT  # 1306
    FN_ROUND_WITH_DIGITS_DOUBLE = public_builtin_function_pb2.FN_ROUND_WITH_DIGITS_DOUBLE  # 1307
    FN_ROUND_WITH_DIGITS_FLOAT = public_builtin_function_pb2.FN_ROUND_WITH_DIGITS_FLOAT  # 1308
    FN_TRUNC_DOUBLE = public_builtin_function_pb2.FN_TRUNC_DOUBLE  # 1309
    FN_TRUNC_FLOAT = public_builtin_function_pb2.FN_TRUNC_FLOAT  # 1310
    FN_TRUNC_WITH_DIGITS_DOUBLE = public_builtin_function_pb2.FN_TRUNC_WITH_DIGITS_DOUBLE  # 1311
    FN_TRUNC_WITH_DIGITS_FLOAT = public_builtin_function_pb2.FN_TRUNC_WITH_DIGITS_FLOAT  # 1312
    FN_CEIL_DOUBLE = public_builtin_function_pb2.FN_CEIL_DOUBLE  # 1313
    FN_CEIL_FLOAT = public_builtin_function_pb2.FN_CEIL_FLOAT  # 1314
    FN_FLOOR_DOUBLE = public_builtin_function_pb2.FN_FLOOR_DOUBLE  # 1315
    FN_FLOOR_FLOAT = public_builtin_function_pb2.FN_FLOOR_FLOAT  # 1316
    FN_IS_INF = public_builtin_function_pb2.FN_IS_INF  # 1317
    FN_IS_NAN = public_builtin_function_pb2.FN_IS_NAN  # 1318
    FN_IEEE_DIVIDE_DOUBLE = public_builtin_function_pb2.FN_IEEE_DIVIDE_DOUBLE  # 1319
    FN_IEEE_DIVIDE_FLOAT = public_builtin_function_pb2.FN_IEEE_DIVIDE_FLOAT  # 1320
    FN_GREATEST = public_builtin_function_pb2.FN_GREATEST  # 1321
    FN_LEAST = public_builtin_function_pb2.FN_LEAST  # 1322
    FN_SQRT_DOUBLE = public_builtin_function_pb2.FN_SQRT_DOUBLE  # 1323
    FN_POW_DOUBLE = public_builtin_function_pb2.FN_POW_DOUBLE  # 1324
    FN_EXP_DOUBLE = public_builtin_function_pb2.FN_EXP_DOUBLE  # 1325
    FN_NATURAL_LOGARITHM_DOUBLE = public_builtin_function_pb2.FN_NATURAL_LOGARITHM_DOUBLE  # 1326
    FN_LOGARITHM_DOUBLE = public_builtin_function_pb2.FN_LOGARITHM_DOUBLE  # 1327
    FN_COS_DOUBLE = public_builtin_function_pb2.FN_COS_DOUBLE  # 1328
    FN_COSH_DOUBLE = public_builtin_function_pb2.FN_COSH_DOUBLE  # 1329
    FN_ACOS_DOUBLE = public_builtin_function_pb2.FN_ACOS_DOUBLE  # 1330
    FN_ACOSH_DOUBLE = public_builtin_function_pb2.FN_ACOSH_DOUBLE  # 1331
    FN_SIN_DOUBLE = public_builtin_function_pb2.FN_SIN_DOUBLE  # 1332
    FN_SINH_DOUBLE = public_builtin_function_pb2.FN_SINH_DOUBLE  # 1333
    FN_ASIN_DOUBLE = public_builtin_function_pb2.FN_ASIN_DOUBLE  # 1334
    FN_ASINH_DOUBLE = public_builtin_function_pb2.FN_ASINH_DOUBLE  # 1335
    FN_TAN_DOUBLE = public_builtin_function_pb2.FN_TAN_DOUBLE  # 1336
    FN_TANH_DOUBLE = public_builtin_function_pb2.FN_TANH_DOUBLE  # 1337
    FN_ATAN_DOUBLE = public_builtin_function_pb2.FN_ATAN_DOUBLE  # 1338
    FN_ATANH_DOUBLE = public_builtin_function_pb2.FN_ATANH_DOUBLE  # 1339
    FN_ATAN2_DOUBLE = public_builtin_function_pb2.FN_ATAN2_DOUBLE  # 1340
    FN_SIGN_INT32 = public_builtin_function_pb2.FN_SIGN_INT32  # 1341
    FN_SIGN_INT64 = public_builtin_function_pb2.FN_SIGN_INT64  # 1342
    FN_SIGN_FLOAT = public_builtin_function_pb2.FN_SIGN_FLOAT  # 1343
    FN_SIGN_DOUBLE = public_builtin_function_pb2.FN_SIGN_DOUBLE  # 1344
    FN_DECIMAL_LOGARITHM_DOUBLE = public_builtin_function_pb2.FN_DECIMAL_LOGARITHM_DOUBLE  # 1345
    FN_ABS_UINT32 = public_builtin_function_pb2.FN_ABS_UINT32  # 1346
    FN_ABS_UINT64 = public_builtin_function_pb2.FN_ABS_UINT64  # 1347
    FN_MOD_INT64 = public_builtin_function_pb2.FN_MOD_INT64  # 1349
    FN_MOD_UINT64 = public_builtin_function_pb2.FN_MOD_UINT64  # 1351
    FN_DIV_INT64 = public_builtin_function_pb2.FN_DIV_INT64  # 1353
    FN_DIV_UINT64 = public_builtin_function_pb2.FN_DIV_UINT64  # 1355
    FN_SIGN_UINT32 = public_builtin_function_pb2.FN_SIGN_UINT32  # 1356
    FN_SIGN_UINT64 = public_builtin_function_pb2.FN_SIGN_UINT64  # 1357
    FN_SAFE_DIVIDE_DOUBLE = public_builtin_function_pb2.FN_SAFE_DIVIDE_DOUBLE  # 1358
    FN_ABS_NUMERIC = public_builtin_function_pb2.FN_ABS_NUMERIC  # 1359
    FN_SIGN_NUMERIC = public_builtin_function_pb2.FN_SIGN_NUMERIC  # 1360
    FN_SAFE_DIVIDE_NUMERIC = public_builtin_function_pb2.FN_SAFE_DIVIDE_NUMERIC  # 1361
    FN_DIV_NUMERIC = public_builtin_function_pb2.FN_DIV_NUMERIC  # 1362
    FN_ROUND_NUMERIC = public_builtin_function_pb2.FN_ROUND_NUMERIC  # 1363
    FN_ROUND_WITH_DIGITS_NUMERIC = public_builtin_function_pb2.FN_ROUND_WITH_DIGITS_NUMERIC  # 1364
    FN_TRUNC_NUMERIC = public_builtin_function_pb2.FN_TRUNC_NUMERIC  # 1365
    FN_TRUNC_WITH_DIGITS_NUMERIC = public_builtin_function_pb2.FN_TRUNC_WITH_DIGITS_NUMERIC  # 1366
    FN_MOD_NUMERIC = public_builtin_function_pb2.FN_MOD_NUMERIC  # 1367
    FN_CEIL_NUMERIC = public_builtin_function_pb2.FN_CEIL_NUMERIC  # 1368
    FN_FLOOR_NUMERIC = public_builtin_function_pb2.FN_FLOOR_NUMERIC  # 1369
    FN_POW_NUMERIC = public_builtin_function_pb2.FN_POW_NUMERIC  # 1370
    FN_SAFE_ADD_INT64 = public_builtin_function_pb2.FN_SAFE_ADD_INT64  # 1371
    FN_SAFE_ADD_UINT64 = public_builtin_function_pb2.FN_SAFE_ADD_UINT64  # 1372
    FN_SAFE_ADD_DOUBLE = public_builtin_function_pb2.FN_SAFE_ADD_DOUBLE  # 1373
    FN_SAFE_ADD_NUMERIC = public_builtin_function_pb2.FN_SAFE_ADD_NUMERIC  # 1374
    FN_SAFE_SUBTRACT_INT64 = public_builtin_function_pb2.FN_SAFE_SUBTRACT_INT64  # 1375
    FN_SAFE_SUBTRACT_UINT64 = public_builtin_function_pb2.FN_SAFE_SUBTRACT_UINT64  # 1376
    FN_SAFE_SUBTRACT_DOUBLE = public_builtin_function_pb2.FN_SAFE_SUBTRACT_DOUBLE  # 1377
    FN_SAFE_SUBTRACT_NUMERIC = public_builtin_function_pb2.FN_SAFE_SUBTRACT_NUMERIC  # 1378
    FN_SAFE_MULTIPLY_INT64 = public_builtin_function_pb2.FN_SAFE_MULTIPLY_INT64  # 1379
    FN_SAFE_MULTIPLY_UINT64 = public_builtin_function_pb2.FN_SAFE_MULTIPLY_UINT64  # 1380
    FN_SAFE_MULTIPLY_DOUBLE = public_builtin_function_pb2.FN_SAFE_MULTIPLY_DOUBLE  # 1381
    FN_SAFE_MULTIPLY_NUMERIC = public_builtin_function_pb2.FN_SAFE_MULTIPLY_NUMERIC  # 1382
    FN_SAFE_UNARY_MINUS_INT32 = public_builtin_function_pb2.FN_SAFE_UNARY_MINUS_INT32  # 1383
    FN_SAFE_UNARY_MINUS_INT64 = public_builtin_function_pb2.FN_SAFE_UNARY_MINUS_INT64  # 1384
    FN_SAFE_UNARY_MINUS_FLOAT = public_builtin_function_pb2.FN_SAFE_UNARY_MINUS_FLOAT  # 1385
    FN_SAFE_UNARY_MINUS_DOUBLE = public_builtin_function_pb2.FN_SAFE_UNARY_MINUS_DOUBLE  # 1386
    FN_SAFE_UNARY_MINUS_NUMERIC = public_builtin_function_pb2.FN_SAFE_UNARY_MINUS_NUMERIC  # 1387
    FN_SAFE_DIVIDE_BIGNUMERIC = public_builtin_function_pb2.FN_SAFE_DIVIDE_BIGNUMERIC  # 1388
    FN_SAFE_ADD_BIGNUMERIC = public_builtin_function_pb2.FN_SAFE_ADD_BIGNUMERIC  # 1389
    FN_SAFE_SUBTRACT_BIGNUMERIC = public_builtin_function_pb2.FN_SAFE_SUBTRACT_BIGNUMERIC  # 1390
    FN_SAFE_MULTIPLY_BIGNUMERIC = public_builtin_function_pb2.FN_SAFE_MULTIPLY_BIGNUMERIC  # 1391
    FN_SAFE_UNARY_MINUS_BIGNUMERIC = public_builtin_function_pb2.FN_SAFE_UNARY_MINUS_BIGNUMERIC  # 1392
    FN_CEIL_BIGNUMERIC = public_builtin_function_pb2.FN_CEIL_BIGNUMERIC  # 1393
    FN_FLOOR_BIGNUMERIC = public_builtin_function_pb2.FN_FLOOR_BIGNUMERIC  # 1394
    FN_ABS_BIGNUMERIC = public_builtin_function_pb2.FN_ABS_BIGNUMERIC  # 1395
    FN_SIGN_BIGNUMERIC = public_builtin_function_pb2.FN_SIGN_BIGNUMERIC  # 1396
    FN_ROUND_BIGNUMERIC = public_builtin_function_pb2.FN_ROUND_BIGNUMERIC  # 1397
    FN_ROUND_WITH_DIGITS_BIGNUMERIC = public_builtin_function_pb2.FN_ROUND_WITH_DIGITS_BIGNUMERIC  # 1398
    FN_TRUNC_BIGNUMERIC = public_builtin_function_pb2.FN_TRUNC_BIGNUMERIC  # 1399
    FN_ANY_VALUE = public_builtin_function_pb2.FN_ANY_VALUE  # 1400
    FN_ARRAY_AGG = public_builtin_function_pb2.FN_ARRAY_AGG  # 1401
    FN_AVG_INT64 = public_builtin_function_pb2.FN_AVG_INT64  # 1402
    FN_AVG_UINT64 = public_builtin_function_pb2.FN_AVG_UINT64  # 1403
    FN_AVG_DOUBLE = public_builtin_function_pb2.FN_AVG_DOUBLE  # 1404
    FN_COUNT = public_builtin_function_pb2.FN_COUNT  # 1405
    FN_MAX = public_builtin_function_pb2.FN_MAX  # 1406
    FN_MIN = public_builtin_function_pb2.FN_MIN  # 1407
    FN_STRING_AGG_STRING = public_builtin_function_pb2.FN_STRING_AGG_STRING  # 1408
    FN_STRING_AGG_DELIM_STRING = public_builtin_function_pb2.FN_STRING_AGG_DELIM_STRING  # 1409
    FN_SUM_INT64 = public_builtin_function_pb2.FN_SUM_INT64  # 1410
    FN_SUM_UINT64 = public_builtin_function_pb2.FN_SUM_UINT64  # 1411
    FN_SUM_DOUBLE = public_builtin_function_pb2.FN_SUM_DOUBLE  # 1412
    FN_STRING_AGG_BYTES = public_builtin_function_pb2.FN_STRING_AGG_BYTES  # 1413
    FN_STRING_AGG_DELIM_BYTES = public_builtin_function_pb2.FN_STRING_AGG_DELIM_BYTES  # 1414
    FN_BIT_AND_INT32 = public_builtin_function_pb2.FN_BIT_AND_INT32  # 1415
    FN_BIT_AND_INT64 = public_builtin_function_pb2.FN_BIT_AND_INT64  # 1416
    FN_BIT_AND_UINT32 = public_builtin_function_pb2.FN_BIT_AND_UINT32  # 1417
    FN_BIT_AND_UINT64 = public_builtin_function_pb2.FN_BIT_AND_UINT64  # 1418
    FN_BIT_OR_INT32 = public_builtin_function_pb2.FN_BIT_OR_INT32  # 1419
    FN_BIT_OR_INT64 = public_builtin_function_pb2.FN_BIT_OR_INT64  # 1420
    FN_BIT_OR_UINT32 = public_builtin_function_pb2.FN_BIT_OR_UINT32  # 1421
    FN_BIT_OR_UINT64 = public_builtin_function_pb2.FN_BIT_OR_UINT64  # 1422
    FN_BIT_XOR_INT32 = public_builtin_function_pb2.FN_BIT_XOR_INT32  # 1423
    FN_BIT_XOR_INT64 = public_builtin_function_pb2.FN_BIT_XOR_INT64  # 1424
    FN_BIT_XOR_UINT32 = public_builtin_function_pb2.FN_BIT_XOR_UINT32  # 1425
    FN_BIT_XOR_UINT64 = public_builtin_function_pb2.FN_BIT_XOR_UINT64  # 1426
    FN_LOGICAL_AND = public_builtin_function_pb2.FN_LOGICAL_AND  # 1427
    FN_LOGICAL_OR = public_builtin_function_pb2.FN_LOGICAL_OR  # 1428
    FN_APPROX_COUNT_DISTINCT = public_builtin_function_pb2.FN_APPROX_COUNT_DISTINCT  # 1429
    FN_APPROX_QUANTILES = public_builtin_function_pb2.FN_APPROX_QUANTILES  # 1430
    FN_APPROX_TOP_COUNT = public_builtin_function_pb2.FN_APPROX_TOP_COUNT  # 1431
    FN_APPROX_TOP_SUM_INT64 = public_builtin_function_pb2.FN_APPROX_TOP_SUM_INT64  # 1432
    FN_APPROX_TOP_SUM_UINT64 = public_builtin_function_pb2.FN_APPROX_TOP_SUM_UINT64  # 1433
    FN_APPROX_TOP_SUM_DOUBLE = public_builtin_function_pb2.FN_APPROX_TOP_SUM_DOUBLE  # 1434
    FN_CORR = public_builtin_function_pb2.FN_CORR  # 1435
    FN_COVAR_POP = public_builtin_function_pb2.FN_COVAR_POP  # 1436
    FN_COVAR_SAMP = public_builtin_function_pb2.FN_COVAR_SAMP  # 1437
    FN_STDDEV_POP = public_builtin_function_pb2.FN_STDDEV_POP  # 1438
    FN_STDDEV_SAMP = public_builtin_function_pb2.FN_STDDEV_SAMP  # 1439
    FN_VAR_POP = public_builtin_function_pb2.FN_VAR_POP  # 1440
    FN_VAR_SAMP = public_builtin_function_pb2.FN_VAR_SAMP  # 1441
    FN_ARRAY_CONCAT_AGG = public_builtin_function_pb2.FN_ARRAY_CONCAT_AGG  # 1442
    FN_COUNTIF = public_builtin_function_pb2.FN_COUNTIF  # 1443
    FN_HLL_COUNT_MERGE = public_builtin_function_pb2.FN_HLL_COUNT_MERGE  # 1444
    FN_HLL_COUNT_EXTRACT = public_builtin_function_pb2.FN_HLL_COUNT_EXTRACT  # 1445
    FN_HLL_COUNT_INIT_INT64 = public_builtin_function_pb2.FN_HLL_COUNT_INIT_INT64  # 1446
    FN_HLL_COUNT_INIT_UINT64 = public_builtin_function_pb2.FN_HLL_COUNT_INIT_UINT64  # 1447
    FN_HLL_COUNT_INIT_STRING = public_builtin_function_pb2.FN_HLL_COUNT_INIT_STRING  # 1448
    FN_HLL_COUNT_INIT_BYTES = public_builtin_function_pb2.FN_HLL_COUNT_INIT_BYTES  # 1449
    FN_HLL_COUNT_MERGE_PARTIAL = public_builtin_function_pb2.FN_HLL_COUNT_MERGE_PARTIAL  # 1450
    FN_KLL_QUANTILES_INIT_INT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_INIT_INT64  # 1451
    FN_KLL_QUANTILES_INIT_UINT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_INIT_UINT64  # 1452
    FN_KLL_QUANTILES_INIT_DOUBLE = public_builtin_function_pb2.FN_KLL_QUANTILES_INIT_DOUBLE  # 1453
    FN_KLL_QUANTILES_MERGE_PARTIAL = public_builtin_function_pb2.FN_KLL_QUANTILES_MERGE_PARTIAL  # 1454
    FN_KLL_QUANTILES_MERGE_INT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_MERGE_INT64  # 1455
    FN_KLL_QUANTILES_MERGE_UINT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_MERGE_UINT64  # 1456
    FN_KLL_QUANTILES_MERGE_DOUBLE = public_builtin_function_pb2.FN_KLL_QUANTILES_MERGE_DOUBLE  # 1457
    FN_KLL_QUANTILES_EXTRACT_INT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_EXTRACT_INT64  # 1458
    FN_KLL_QUANTILES_EXTRACT_UINT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_EXTRACT_UINT64  # 1459
    FN_KLL_QUANTILES_EXTRACT_DOUBLE = public_builtin_function_pb2.FN_KLL_QUANTILES_EXTRACT_DOUBLE  # 1460
    FN_KLL_QUANTILES_MERGE_POINT_INT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_MERGE_POINT_INT64  # 1461
    FN_KLL_QUANTILES_MERGE_POINT_UINT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_MERGE_POINT_UINT64  # 1462
    FN_KLL_QUANTILES_MERGE_POINT_DOUBLE = public_builtin_function_pb2.FN_KLL_QUANTILES_MERGE_POINT_DOUBLE  # 1463
    FN_KLL_QUANTILES_EXTRACT_POINT_INT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_EXTRACT_POINT_INT64  # 1464
    FN_KLL_QUANTILES_EXTRACT_POINT_UINT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_EXTRACT_POINT_UINT64  # 1465
    FN_KLL_QUANTILES_EXTRACT_POINT_DOUBLE = public_builtin_function_pb2.FN_KLL_QUANTILES_EXTRACT_POINT_DOUBLE  # 1466
    FN_SUM_NUMERIC = public_builtin_function_pb2.FN_SUM_NUMERIC  # 1467
    FN_AVG_NUMERIC = public_builtin_function_pb2.FN_AVG_NUMERIC  # 1468
    FN_APPROX_TOP_SUM_NUMERIC = public_builtin_function_pb2.FN_APPROX_TOP_SUM_NUMERIC  # 1469
    FN_HLL_COUNT_INIT_NUMERIC = public_builtin_function_pb2.FN_HLL_COUNT_INIT_NUMERIC  # 1470
    FN_CORR_NUMERIC = public_builtin_function_pb2.FN_CORR_NUMERIC  # 1471
    FN_COVAR_POP_NUMERIC = public_builtin_function_pb2.FN_COVAR_POP_NUMERIC  # 1472
    FN_COVAR_SAMP_NUMERIC = public_builtin_function_pb2.FN_COVAR_SAMP_NUMERIC  # 1473
    FN_STDDEV_POP_NUMERIC = public_builtin_function_pb2.FN_STDDEV_POP_NUMERIC  # 1474
    FN_STDDEV_SAMP_NUMERIC = public_builtin_function_pb2.FN_STDDEV_SAMP_NUMERIC  # 1475
    FN_VAR_POP_NUMERIC = public_builtin_function_pb2.FN_VAR_POP_NUMERIC  # 1476
    FN_VAR_SAMP_NUMERIC = public_builtin_function_pb2.FN_VAR_SAMP_NUMERIC  # 1477
    FN_SUM_BIGNUMERIC = public_builtin_function_pb2.FN_SUM_BIGNUMERIC  # 1478
    FN_AVG_BIGNUMERIC = public_builtin_function_pb2.FN_AVG_BIGNUMERIC  # 1479
    FN_APPROX_TOP_SUM_BIGNUMERIC = public_builtin_function_pb2.FN_APPROX_TOP_SUM_BIGNUMERIC  # 1480
    FN_HLL_COUNT_INIT_BIGNUMERIC = public_builtin_function_pb2.FN_HLL_COUNT_INIT_BIGNUMERIC  # 1481
    FN_STDDEV_POP_BIGNUMERIC = public_builtin_function_pb2.FN_STDDEV_POP_BIGNUMERIC  # 1482
    FN_STDDEV_SAMP_BIGNUMERIC = public_builtin_function_pb2.FN_STDDEV_SAMP_BIGNUMERIC  # 1483
    FN_VAR_POP_BIGNUMERIC = public_builtin_function_pb2.FN_VAR_POP_BIGNUMERIC  # 1484
    FN_VAR_SAMP_BIGNUMERIC = public_builtin_function_pb2.FN_VAR_SAMP_BIGNUMERIC  # 1485
    FN_COVAR_POP_BIGNUMERIC = public_builtin_function_pb2.FN_COVAR_POP_BIGNUMERIC  # 1486
    FN_COVAR_SAMP_BIGNUMERIC = public_builtin_function_pb2.FN_COVAR_SAMP_BIGNUMERIC  # 1487
    FN_CORR_BIGNUMERIC = public_builtin_function_pb2.FN_CORR_BIGNUMERIC  # 1488
    FN_SUM_INTERVAL = public_builtin_function_pb2.FN_SUM_INTERVAL  # 1489
    FN_AVG_INTERVAL = public_builtin_function_pb2.FN_AVG_INTERVAL  # 1490
    FN_D3A_COUNT_MERGE = public_builtin_function_pb2.FN_D3A_COUNT_MERGE  # 1491
    FN_D3A_COUNT_EXTRACT = public_builtin_function_pb2.FN_D3A_COUNT_EXTRACT  # 1492
    FN_D3A_COUNT_INIT_INT64 = public_builtin_function_pb2.FN_D3A_COUNT_INIT_INT64  # 1493
    FN_D3A_COUNT_INIT_UINT64 = public_builtin_function_pb2.FN_D3A_COUNT_INIT_UINT64  # 1494
    FN_D3A_COUNT_INIT_NUMERIC = public_builtin_function_pb2.FN_D3A_COUNT_INIT_NUMERIC  # 1495
    FN_D3A_COUNT_INIT_BIGNUMERIC = public_builtin_function_pb2.FN_D3A_COUNT_INIT_BIGNUMERIC  # 1496
    FN_D3A_COUNT_INIT_STRING = public_builtin_function_pb2.FN_D3A_COUNT_INIT_STRING  # 1497
    FN_D3A_COUNT_INIT_BYTES = public_builtin_function_pb2.FN_D3A_COUNT_INIT_BYTES  # 1498
    FN_D3A_COUNT_MERGE_PARTIAL = public_builtin_function_pb2.FN_D3A_COUNT_MERGE_PARTIAL  # 1499
    FN_DENSE_RANK = public_builtin_function_pb2.FN_DENSE_RANK  # 1500
    FN_RANK = public_builtin_function_pb2.FN_RANK  # 1501
    FN_ROW_NUMBER = public_builtin_function_pb2.FN_ROW_NUMBER  # 1502
    FN_PERCENT_RANK = public_builtin_function_pb2.FN_PERCENT_RANK  # 1503
    FN_CUME_DIST = public_builtin_function_pb2.FN_CUME_DIST  # 1504
    FN_NTILE = public_builtin_function_pb2.FN_NTILE  # 1505
    FN_LEAD = public_builtin_function_pb2.FN_LEAD  # 1506
    FN_LAG = public_builtin_function_pb2.FN_LAG  # 1507
    FN_FIRST_VALUE = public_builtin_function_pb2.FN_FIRST_VALUE  # 1508
    FN_LAST_VALUE = public_builtin_function_pb2.FN_LAST_VALUE  # 1509
    FN_NTH_VALUE = public_builtin_function_pb2.FN_NTH_VALUE  # 1510
    FN_PERCENTILE_CONT = public_builtin_function_pb2.FN_PERCENTILE_CONT  # 1511
    FN_PERCENTILE_DISC = public_builtin_function_pb2.FN_PERCENTILE_DISC  # 1512
    FN_PERCENTILE_CONT_NUMERIC = public_builtin_function_pb2.FN_PERCENTILE_CONT_NUMERIC  # 1513
    FN_PERCENTILE_DISC_NUMERIC = public_builtin_function_pb2.FN_PERCENTILE_DISC_NUMERIC  # 1514
    FN_PERCENTILE_CONT_BIGNUMERIC = public_builtin_function_pb2.FN_PERCENTILE_CONT_BIGNUMERIC  # 1515
    FN_PERCENTILE_DISC_BIGNUMERIC = public_builtin_function_pb2.FN_PERCENTILE_DISC_BIGNUMERIC  # 1516
    FN_IS_FIRST = public_builtin_function_pb2.FN_IS_FIRST  # 1517
    FN_IS_LAST = public_builtin_function_pb2.FN_IS_LAST  # 1518
    FN_BIT_CAST_INT32_TO_INT32 = public_builtin_function_pb2.FN_BIT_CAST_INT32_TO_INT32  # 1604
    FN_BIT_CAST_UINT32_TO_INT32 = public_builtin_function_pb2.FN_BIT_CAST_UINT32_TO_INT32  # 1605
    FN_BIT_CAST_INT64_TO_INT64 = public_builtin_function_pb2.FN_BIT_CAST_INT64_TO_INT64  # 1606
    FN_BIT_CAST_UINT64_TO_INT64 = public_builtin_function_pb2.FN_BIT_CAST_UINT64_TO_INT64  # 1607
    FN_BIT_CAST_UINT32_TO_UINT32 = public_builtin_function_pb2.FN_BIT_CAST_UINT32_TO_UINT32  # 1608
    FN_BIT_CAST_INT32_TO_UINT32 = public_builtin_function_pb2.FN_BIT_CAST_INT32_TO_UINT32  # 1609
    FN_BIT_CAST_UINT64_TO_UINT64 = public_builtin_function_pb2.FN_BIT_CAST_UINT64_TO_UINT64  # 1610
    FN_BIT_CAST_INT64_TO_UINT64 = public_builtin_function_pb2.FN_BIT_CAST_INT64_TO_UINT64  # 1611
    FN_SESSION_USER = public_builtin_function_pb2.FN_SESSION_USER  # 1612
    FN_GENERATE_ARRAY_INT64 = public_builtin_function_pb2.FN_GENERATE_ARRAY_INT64  # 1613
    FN_GENERATE_ARRAY_UINT64 = public_builtin_function_pb2.FN_GENERATE_ARRAY_UINT64  # 1614
    FN_GENERATE_ARRAY_DOUBLE = public_builtin_function_pb2.FN_GENERATE_ARRAY_DOUBLE  # 1615
    FN_GENERATE_DATE_ARRAY = public_builtin_function_pb2.FN_GENERATE_DATE_ARRAY  # 1616
    FN_GENERATE_TIMESTAMP_ARRAY = public_builtin_function_pb2.FN_GENERATE_TIMESTAMP_ARRAY  # 1617
    FN_RAND = public_builtin_function_pb2.FN_RAND  # 1618
    FN_JSON_EXTRACT = public_builtin_function_pb2.FN_JSON_EXTRACT  # 1619
    FN_JSON_EXTRACT_SCALAR = public_builtin_function_pb2.FN_JSON_EXTRACT_SCALAR  # 1620
    FN_ARRAY_REVERSE = public_builtin_function_pb2.FN_ARRAY_REVERSE  # 1621
    FN_TO_JSON_STRING = public_builtin_function_pb2.FN_TO_JSON_STRING  # 1622
    FN_JSON_QUERY = public_builtin_function_pb2.FN_JSON_QUERY  # 1623
    FN_JSON_VALUE = public_builtin_function_pb2.FN_JSON_VALUE  # 1624
    FN_GENERATE_ARRAY_NUMERIC = public_builtin_function_pb2.FN_GENERATE_ARRAY_NUMERIC  # 1625
    FN_FROM_PROTO_TIMESTAMP = public_builtin_function_pb2.FN_FROM_PROTO_TIMESTAMP  # 1626
    FN_FROM_PROTO_DATE = public_builtin_function_pb2.FN_FROM_PROTO_DATE  # 1627
    FN_FROM_PROTO_TIME_OF_DAY = public_builtin_function_pb2.FN_FROM_PROTO_TIME_OF_DAY  # 1628
    FN_FROM_PROTO_DOUBLE = public_builtin_function_pb2.FN_FROM_PROTO_DOUBLE  # 1630
    FN_FROM_PROTO_FLOAT = public_builtin_function_pb2.FN_FROM_PROTO_FLOAT  # 1631
    FN_FROM_PROTO_INT64 = public_builtin_function_pb2.FN_FROM_PROTO_INT64  # 1632
    FN_FROM_PROTO_UINT64 = public_builtin_function_pb2.FN_FROM_PROTO_UINT64  # 1633
    FN_FROM_PROTO_INT32 = public_builtin_function_pb2.FN_FROM_PROTO_INT32  # 1634
    FN_FROM_PROTO_UINT32 = public_builtin_function_pb2.FN_FROM_PROTO_UINT32  # 1635
    FN_FROM_PROTO_BOOL = public_builtin_function_pb2.FN_FROM_PROTO_BOOL  # 1636
    FN_FROM_PROTO_BYTES = public_builtin_function_pb2.FN_FROM_PROTO_BYTES  # 1637
    FN_FROM_PROTO_STRING = public_builtin_function_pb2.FN_FROM_PROTO_STRING  # 1638
    FN_FROM_PROTO_IDEMPOTENT_TIMESTAMP = public_builtin_function_pb2.FN_FROM_PROTO_IDEMPOTENT_TIMESTAMP  # 1639
    FN_FROM_PROTO_IDEMPOTENT_DATE = public_builtin_function_pb2.FN_FROM_PROTO_IDEMPOTENT_DATE  # 1640
    FN_FROM_PROTO_IDEMPOTENT_TIME = public_builtin_function_pb2.FN_FROM_PROTO_IDEMPOTENT_TIME  # 1641
    FN_FROM_PROTO_IDEMPOTENT_DOUBLE = public_builtin_function_pb2.FN_FROM_PROTO_IDEMPOTENT_DOUBLE  # 1643
    FN_FROM_PROTO_IDEMPOTENT_FLOAT = public_builtin_function_pb2.FN_FROM_PROTO_IDEMPOTENT_FLOAT  # 1644
    FN_FROM_PROTO_IDEMPOTENT_INT64 = public_builtin_function_pb2.FN_FROM_PROTO_IDEMPOTENT_INT64  # 1645
    FN_FROM_PROTO_IDEMPOTENT_UINT64 = public_builtin_function_pb2.FN_FROM_PROTO_IDEMPOTENT_UINT64  # 1646
    FN_FROM_PROTO_IDEMPOTENT_INT32 = public_builtin_function_pb2.FN_FROM_PROTO_IDEMPOTENT_INT32  # 1647
    FN_FROM_PROTO_IDEMPOTENT_UINT32 = public_builtin_function_pb2.FN_FROM_PROTO_IDEMPOTENT_UINT32  # 1648
    FN_FROM_PROTO_IDEMPOTENT_BOOL = public_builtin_function_pb2.FN_FROM_PROTO_IDEMPOTENT_BOOL  # 1649
    FN_FROM_PROTO_IDEMPOTENT_BYTES = public_builtin_function_pb2.FN_FROM_PROTO_IDEMPOTENT_BYTES  # 1650
    FN_FROM_PROTO_IDEMPOTENT_STRING = public_builtin_function_pb2.FN_FROM_PROTO_IDEMPOTENT_STRING  # 1651
    FN_TO_PROTO_TIMESTAMP = public_builtin_function_pb2.FN_TO_PROTO_TIMESTAMP  # 1652
    FN_TO_PROTO_DATE = public_builtin_function_pb2.FN_TO_PROTO_DATE  # 1653
    FN_TO_PROTO_TIME = public_builtin_function_pb2.FN_TO_PROTO_TIME  # 1654
    FN_TO_PROTO_DOUBLE = public_builtin_function_pb2.FN_TO_PROTO_DOUBLE  # 1656
    FN_TO_PROTO_FLOAT = public_builtin_function_pb2.FN_TO_PROTO_FLOAT  # 1657
    FN_TO_PROTO_INT64 = public_builtin_function_pb2.FN_TO_PROTO_INT64  # 1658
    FN_TO_PROTO_UINT64 = public_builtin_function_pb2.FN_TO_PROTO_UINT64  # 1659
    FN_TO_PROTO_INT32 = public_builtin_function_pb2.FN_TO_PROTO_INT32  # 1660
    FN_TO_PROTO_UINT32 = public_builtin_function_pb2.FN_TO_PROTO_UINT32  # 1661
    FN_TO_PROTO_BOOL = public_builtin_function_pb2.FN_TO_PROTO_BOOL  # 1662
    FN_TO_PROTO_BYTES = public_builtin_function_pb2.FN_TO_PROTO_BYTES  # 1663
    FN_TO_PROTO_STRING = public_builtin_function_pb2.FN_TO_PROTO_STRING  # 1664
    FN_TO_PROTO_IDEMPOTENT_TIMESTAMP = public_builtin_function_pb2.FN_TO_PROTO_IDEMPOTENT_TIMESTAMP  # 1665
    FN_TO_PROTO_IDEMPOTENT_DATE = public_builtin_function_pb2.FN_TO_PROTO_IDEMPOTENT_DATE  # 1666
    FN_TO_PROTO_IDEMPOTENT_TIME_OF_DAY = public_builtin_function_pb2.FN_TO_PROTO_IDEMPOTENT_TIME_OF_DAY  # 1667
    FN_TO_PROTO_IDEMPOTENT_DOUBLE = public_builtin_function_pb2.FN_TO_PROTO_IDEMPOTENT_DOUBLE  # 1669
    FN_TO_PROTO_IDEMPOTENT_FLOAT = public_builtin_function_pb2.FN_TO_PROTO_IDEMPOTENT_FLOAT  # 1670
    FN_TO_PROTO_IDEMPOTENT_INT64 = public_builtin_function_pb2.FN_TO_PROTO_IDEMPOTENT_INT64  # 1671
    FN_TO_PROTO_IDEMPOTENT_UINT64 = public_builtin_function_pb2.FN_TO_PROTO_IDEMPOTENT_UINT64  # 1672
    FN_TO_PROTO_IDEMPOTENT_INT32 = public_builtin_function_pb2.FN_TO_PROTO_IDEMPOTENT_INT32  # 1673
    FN_TO_PROTO_IDEMPOTENT_UINT32 = public_builtin_function_pb2.FN_TO_PROTO_IDEMPOTENT_UINT32  # 1674
    FN_TO_PROTO_IDEMPOTENT_BOOL = public_builtin_function_pb2.FN_TO_PROTO_IDEMPOTENT_BOOL  # 1675
    FN_TO_PROTO_IDEMPOTENT_BYTES = public_builtin_function_pb2.FN_TO_PROTO_IDEMPOTENT_BYTES  # 1676
    FN_TO_PROTO_IDEMPOTENT_STRING = public_builtin_function_pb2.FN_TO_PROTO_IDEMPOTENT_STRING  # 1677
    FN_PROTO_DEFAULT_IF_NULL = public_builtin_function_pb2.FN_PROTO_DEFAULT_IF_NULL  # 1678
    FN_GENERATE_UUID = public_builtin_function_pb2.FN_GENERATE_UUID  # 1679
    FN_RANGE_BUCKET = public_builtin_function_pb2.FN_RANGE_BUCKET  # 1680
    FN_JSON_EXTRACT_ARRAY = public_builtin_function_pb2.FN_JSON_EXTRACT_ARRAY  # 1681
    FN_ENUM_VALUE_DESCRIPTOR_PROTO = public_builtin_function_pb2.FN_ENUM_VALUE_DESCRIPTOR_PROTO  # 1682
    FN_GENERATE_ARRAY_BIGNUMERIC = public_builtin_function_pb2.FN_GENERATE_ARRAY_BIGNUMERIC  # 1683
    FN_JSON_EXTRACT_JSON = public_builtin_function_pb2.FN_JSON_EXTRACT_JSON  # 1684
    FN_JSON_EXTRACT_SCALAR_JSON = public_builtin_function_pb2.FN_JSON_EXTRACT_SCALAR_JSON  # 1685
    FN_JSON_QUERY_JSON = public_builtin_function_pb2.FN_JSON_QUERY_JSON  # 1686
    FN_JSON_VALUE_JSON = public_builtin_function_pb2.FN_JSON_VALUE_JSON  # 1687
    FN_JSON_EXTRACT_STRING_ARRAY = public_builtin_function_pb2.FN_JSON_EXTRACT_STRING_ARRAY  # 1688
    FN_JSON_SUBSCRIPT_INT64 = public_builtin_function_pb2.FN_JSON_SUBSCRIPT_INT64  # 1689
    FN_JSON_SUBSCRIPT_STRING = public_builtin_function_pb2.FN_JSON_SUBSCRIPT_STRING  # 1690
    FN_JSON_EXTRACT_ARRAY_JSON = public_builtin_function_pb2.FN_JSON_EXTRACT_ARRAY_JSON  # 1691
    FN_JSON_EXTRACT_STRING_ARRAY_JSON = public_builtin_function_pb2.FN_JSON_EXTRACT_STRING_ARRAY_JSON  # 1692
    FN_JSON_QUERY_ARRAY = public_builtin_function_pb2.FN_JSON_QUERY_ARRAY  # 1693
    FN_JSON_QUERY_ARRAY_JSON = public_builtin_function_pb2.FN_JSON_QUERY_ARRAY_JSON  # 1694
    FN_JSON_VALUE_ARRAY = public_builtin_function_pb2.FN_JSON_VALUE_ARRAY  # 1695
    FN_JSON_VALUE_ARRAY_JSON = public_builtin_function_pb2.FN_JSON_VALUE_ARRAY_JSON  # 1696
    FN_TO_JSON = public_builtin_function_pb2.FN_TO_JSON  # 1697
    FN_PARSE_JSON = public_builtin_function_pb2.FN_PARSE_JSON  # 1698
    FN_TYPEOF = public_builtin_function_pb2.FN_TYPEOF  # 1699
    FN_NET_FORMAT_IP = public_builtin_function_pb2.FN_NET_FORMAT_IP  # 1700
    FN_NET_PARSE_IP = public_builtin_function_pb2.FN_NET_PARSE_IP  # 1701
    FN_NET_FORMAT_PACKED_IP = public_builtin_function_pb2.FN_NET_FORMAT_PACKED_IP  # 1702
    FN_NET_PARSE_PACKED_IP = public_builtin_function_pb2.FN_NET_PARSE_PACKED_IP  # 1703
    FN_NET_IP_IN_NET = public_builtin_function_pb2.FN_NET_IP_IN_NET  # 1704
    FN_NET_MAKE_NET = public_builtin_function_pb2.FN_NET_MAKE_NET  # 1705
    FN_NET_HOST = public_builtin_function_pb2.FN_NET_HOST  # 1706
    FN_NET_REG_DOMAIN = public_builtin_function_pb2.FN_NET_REG_DOMAIN  # 1707
    FN_NET_PUBLIC_SUFFIX = public_builtin_function_pb2.FN_NET_PUBLIC_SUFFIX  # 1708
    FN_NET_IP_FROM_STRING = public_builtin_function_pb2.FN_NET_IP_FROM_STRING  # 1709
    FN_NET_SAFE_IP_FROM_STRING = public_builtin_function_pb2.FN_NET_SAFE_IP_FROM_STRING  # 1710
    FN_NET_IP_TO_STRING = public_builtin_function_pb2.FN_NET_IP_TO_STRING  # 1711
    FN_NET_IP_NET_MASK = public_builtin_function_pb2.FN_NET_IP_NET_MASK  # 1712
    FN_NET_IP_TRUNC = public_builtin_function_pb2.FN_NET_IP_TRUNC  # 1713
    FN_NET_IPV4_FROM_INT64 = public_builtin_function_pb2.FN_NET_IPV4_FROM_INT64  # 1714
    FN_NET_IPV4_TO_INT64 = public_builtin_function_pb2.FN_NET_IPV4_TO_INT64  # 1715
    FN_DATETIME_FROM_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = public_builtin_function_pb2.FN_DATETIME_FROM_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND  # 1800
    FN_TIMESTAMP_FROM_DATETIME = public_builtin_function_pb2.FN_TIMESTAMP_FROM_DATETIME  # 1801
    FN_TIME_FROM_TIMESTAMP = public_builtin_function_pb2.FN_TIME_FROM_TIMESTAMP  # 1802
    FN_DATETIME_FROM_TIMESTAMP = public_builtin_function_pb2.FN_DATETIME_FROM_TIMESTAMP  # 1803
    FN_CURRENT_DATETIME = public_builtin_function_pb2.FN_CURRENT_DATETIME  # 1804
    FN_CURRENT_TIME = public_builtin_function_pb2.FN_CURRENT_TIME  # 1805
    FN_EXTRACT_FROM_DATETIME = public_builtin_function_pb2.FN_EXTRACT_FROM_DATETIME  # 1806
    FN_EXTRACT_FROM_TIME = public_builtin_function_pb2.FN_EXTRACT_FROM_TIME  # 1807
    FN_EXTRACT_DATE_FROM_DATETIME = public_builtin_function_pb2.FN_EXTRACT_DATE_FROM_DATETIME  # 1808
    FN_EXTRACT_TIME_FROM_DATETIME = public_builtin_function_pb2.FN_EXTRACT_TIME_FROM_DATETIME  # 1809
    FN_EXTRACT_TIME_FROM_TIMESTAMP = public_builtin_function_pb2.FN_EXTRACT_TIME_FROM_TIMESTAMP  # 1810
    FN_EXTRACT_DATETIME_FROM_TIMESTAMP = public_builtin_function_pb2.FN_EXTRACT_DATETIME_FROM_TIMESTAMP  # 1811
    FN_DATETIME_ADD = public_builtin_function_pb2.FN_DATETIME_ADD  # 1812
    FN_TIME_ADD = public_builtin_function_pb2.FN_TIME_ADD  # 1813
    FN_DATETIME_SUB = public_builtin_function_pb2.FN_DATETIME_SUB  # 1814
    FN_TIME_SUB = public_builtin_function_pb2.FN_TIME_SUB  # 1815
    FN_DATETIME_DIFF = public_builtin_function_pb2.FN_DATETIME_DIFF  # 1816
    FN_TIME_DIFF = public_builtin_function_pb2.FN_TIME_DIFF  # 1817
    FN_DATETIME_TRUNC = public_builtin_function_pb2.FN_DATETIME_TRUNC  # 1818
    FN_TIME_TRUNC = public_builtin_function_pb2.FN_TIME_TRUNC  # 1819
    FN_FORMAT_DATETIME = public_builtin_function_pb2.FN_FORMAT_DATETIME  # 1820
    FN_FORMAT_TIME = public_builtin_function_pb2.FN_FORMAT_TIME  # 1821
    FN_PARSE_DATETIME = public_builtin_function_pb2.FN_PARSE_DATETIME  # 1822
    FN_PARSE_TIME = public_builtin_function_pb2.FN_PARSE_TIME  # 1823
    FN_DATETIME_FROM_DATE = public_builtin_function_pb2.FN_DATETIME_FROM_DATE  # 1824
    FN_TIME_FROM_DATETIME = public_builtin_function_pb2.FN_TIME_FROM_DATETIME  # 1825
    FN_DATE_FROM_DATETIME = public_builtin_function_pb2.FN_DATE_FROM_DATETIME  # 1826
    FN_TIMESTAMP_FROM_UNIX_SECONDS_INT64 = public_builtin_function_pb2.FN_TIMESTAMP_FROM_UNIX_SECONDS_INT64  # 1827
    FN_TIMESTAMP_FROM_UNIX_SECONDS_TIMESTAMP = public_builtin_function_pb2.FN_TIMESTAMP_FROM_UNIX_SECONDS_TIMESTAMP  # 1828
    FN_TIMESTAMP_FROM_UNIX_MILLIS_INT64 = public_builtin_function_pb2.FN_TIMESTAMP_FROM_UNIX_MILLIS_INT64  # 1829
    FN_TIMESTAMP_FROM_UNIX_MILLIS_TIMESTAMP = public_builtin_function_pb2.FN_TIMESTAMP_FROM_UNIX_MILLIS_TIMESTAMP  # 1830
    FN_TIMESTAMP_FROM_UNIX_MICROS_INT64 = public_builtin_function_pb2.FN_TIMESTAMP_FROM_UNIX_MICROS_INT64  # 1831
    FN_TIMESTAMP_FROM_UNIX_MICROS_TIMESTAMP = public_builtin_function_pb2.FN_TIMESTAMP_FROM_UNIX_MICROS_TIMESTAMP  # 1832
    FN_DATE_FROM_DATE = public_builtin_function_pb2.FN_DATE_FROM_DATE  # 1833
    FN_TIMESTAMP_FROM_TIMESTAMP = public_builtin_function_pb2.FN_TIMESTAMP_FROM_TIMESTAMP  # 1834
    FN_DATETIME_FROM_DATETIME = public_builtin_function_pb2.FN_DATETIME_FROM_DATETIME  # 1835
    FN_TIME_FROM_TIME = public_builtin_function_pb2.FN_TIME_FROM_TIME  # 1836
    FN_DATE_FROM_STRING = public_builtin_function_pb2.FN_DATE_FROM_STRING  # 1837
    FN_TIME_FROM_STRING = public_builtin_function_pb2.FN_TIME_FROM_STRING  # 1838
    FN_DATETIME_FROM_STRING = public_builtin_function_pb2.FN_DATETIME_FROM_STRING  # 1839
    FN_STRING_FROM_DATE = public_builtin_function_pb2.FN_STRING_FROM_DATE  # 1840
    FN_STRING_FROM_DATETIME = public_builtin_function_pb2.FN_STRING_FROM_DATETIME  # 1841
    FN_STRING_FROM_TIME = public_builtin_function_pb2.FN_STRING_FROM_TIME  # 1842
    FN_LAST_DAY_DATE = public_builtin_function_pb2.FN_LAST_DAY_DATE  # 1843
    FN_LAST_DAY_DATETIME = public_builtin_function_pb2.FN_LAST_DAY_DATETIME  # 1844
    FN_INTERVAL_CONSTRUCTOR = public_builtin_function_pb2.FN_INTERVAL_CONSTRUCTOR  # 1855
    FN_MAKE_INTERVAL = public_builtin_function_pb2.FN_MAKE_INTERVAL  # 1856
    FN_EXTRACT_FROM_INTERVAL = public_builtin_function_pb2.FN_EXTRACT_FROM_INTERVAL  # 1857
    FN_JUSTIFY_HOURS = public_builtin_function_pb2.FN_JUSTIFY_HOURS  # 1858
    FN_JUSTIFY_DAYS = public_builtin_function_pb2.FN_JUSTIFY_DAYS  # 1859
    FN_JUSTIFY_INTERVAL = public_builtin_function_pb2.FN_JUSTIFY_INTERVAL  # 1860
    FN_TIMESTAMP_BUCKET = public_builtin_function_pb2.FN_TIMESTAMP_BUCKET  # 1861
    FN_DATETIME_BUCKET = public_builtin_function_pb2.FN_DATETIME_BUCKET  # 1862
    FN_DATE_BUCKET = public_builtin_function_pb2.FN_DATE_BUCKET  # 1863
    FN_TIMESTAMP_FROM_UNIX_SECONDS_UINT64 = public_builtin_function_pb2.FN_TIMESTAMP_FROM_UNIX_SECONDS_UINT64  # 1864
    FN_TIMESTAMP_FROM_UNIX_MILLIS_UINT64 = public_builtin_function_pb2.FN_TIMESTAMP_FROM_UNIX_MILLIS_UINT64  # 1865
    FN_TIMESTAMP_FROM_UNIX_MICROS_UINT64 = public_builtin_function_pb2.FN_TIMESTAMP_FROM_UNIX_MICROS_UINT64  # 1866
    FN_TO_SECONDS_INTERVAL = public_builtin_function_pb2.FN_TO_SECONDS_INTERVAL  # 1867
    FN_PARSE_TIMESTAMP_WITH_PRECISION = public_builtin_function_pb2.FN_PARSE_TIMESTAMP_WITH_PRECISION  # 1868
    FN_PARSE_TIMESTAMP_WITH_PRECISION_AND_TIMEZONE = public_builtin_function_pb2.FN_PARSE_TIMESTAMP_WITH_PRECISION_AND_TIMEZONE  # 1869
    FN_ADD_MONTHS_DATE = public_builtin_function_pb2.FN_ADD_MONTHS_DATE  # 1870
    FN_ADD_MONTHS_DATETIME = public_builtin_function_pb2.FN_ADD_MONTHS_DATETIME  # 1871
    FN_NEXT_DAY_DATE = public_builtin_function_pb2.FN_NEXT_DAY_DATE  # 1872
    FN_NEXT_DAY_DATETIME = public_builtin_function_pb2.FN_NEXT_DAY_DATETIME  # 1873
    FN_MD5_BYTES = public_builtin_function_pb2.FN_MD5_BYTES  # 1900
    FN_MD5_STRING = public_builtin_function_pb2.FN_MD5_STRING  # 1901
    FN_SHA1_BYTES = public_builtin_function_pb2.FN_SHA1_BYTES  # 1902
    FN_SHA1_STRING = public_builtin_function_pb2.FN_SHA1_STRING  # 1903
    FN_SHA256_BYTES = public_builtin_function_pb2.FN_SHA256_BYTES  # 1904
    FN_SHA256_STRING = public_builtin_function_pb2.FN_SHA256_STRING  # 1905
    FN_SHA512_BYTES = public_builtin_function_pb2.FN_SHA512_BYTES  # 1906
    FN_SHA512_STRING = public_builtin_function_pb2.FN_SHA512_STRING  # 1907
    FN_FARM_FINGERPRINT_BYTES = public_builtin_function_pb2.FN_FARM_FINGERPRINT_BYTES  # 1908
    FN_FARM_FINGERPRINT_STRING = public_builtin_function_pb2.FN_FARM_FINGERPRINT_STRING  # 1909
    FN_KEYS_NEW_KEYSET = public_builtin_function_pb2.FN_KEYS_NEW_KEYSET  # 1910
    FN_KEYS_ADD_KEY_FROM_RAW_BYTES = public_builtin_function_pb2.FN_KEYS_ADD_KEY_FROM_RAW_BYTES  # 1911
    FN_KEYS_ROTATE_KEYSET = public_builtin_function_pb2.FN_KEYS_ROTATE_KEYSET  # 1912
    FN_KEYS_KEYSET_LENGTH = public_builtin_function_pb2.FN_KEYS_KEYSET_LENGTH  # 1913
    FN_KEYS_KEYSET_TO_JSON = public_builtin_function_pb2.FN_KEYS_KEYSET_TO_JSON  # 1914
    FN_KEYS_KEYSET_FROM_JSON = public_builtin_function_pb2.FN_KEYS_KEYSET_FROM_JSON  # 1915
    FN_AEAD_ENCRYPT_STRING = public_builtin_function_pb2.FN_AEAD_ENCRYPT_STRING  # 1916
    FN_AEAD_ENCRYPT_BYTES = public_builtin_function_pb2.FN_AEAD_ENCRYPT_BYTES  # 1917
    FN_AEAD_DECRYPT_STRING = public_builtin_function_pb2.FN_AEAD_DECRYPT_STRING  # 1918
    FN_AEAD_DECRYPT_BYTES = public_builtin_function_pb2.FN_AEAD_DECRYPT_BYTES  # 1919
    FN_AEAD_ENVELOPE_ENCRYPT_STRING = public_builtin_function_pb2.FN_AEAD_ENVELOPE_ENCRYPT_STRING  # 1924
    FN_AEAD_ENVELOPE_ENCRYPT_BYTES = public_builtin_function_pb2.FN_AEAD_ENVELOPE_ENCRYPT_BYTES  # 1925
    FN_AEAD_ENVELOPE_DECRYPT_STRING = public_builtin_function_pb2.FN_AEAD_ENVELOPE_DECRYPT_STRING  # 1926
    FN_AEAD_ENVELOPE_DECRYPT_BYTES = public_builtin_function_pb2.FN_AEAD_ENVELOPE_DECRYPT_BYTES  # 1927
    FN_KEYS_KEYSET_CHAIN_STRING_BYTES_BYTES = public_builtin_function_pb2.FN_KEYS_KEYSET_CHAIN_STRING_BYTES_BYTES  # 1928
    FN_KEYS_KEYSET_CHAIN_STRING_BYTES = public_builtin_function_pb2.FN_KEYS_KEYSET_CHAIN_STRING_BYTES  # 1929
    FN_AEAD_ENCRYPT_STRUCT_STRING = public_builtin_function_pb2.FN_AEAD_ENCRYPT_STRUCT_STRING  # 1930
    FN_AEAD_ENCRYPT_STRUCT_BYTES = public_builtin_function_pb2.FN_AEAD_ENCRYPT_STRUCT_BYTES  # 1931
    FN_AEAD_DECRYPT_STRUCT_STRING = public_builtin_function_pb2.FN_AEAD_DECRYPT_STRUCT_STRING  # 1932
    FN_AEAD_DECRYPT_STRUCT_BYTES = public_builtin_function_pb2.FN_AEAD_DECRYPT_STRUCT_BYTES  # 1933
    FN_DETERMINISTIC_ENCRYPT_STRING = public_builtin_function_pb2.FN_DETERMINISTIC_ENCRYPT_STRING  # 1934
    FN_DETERMINISTIC_ENCRYPT_BYTES = public_builtin_function_pb2.FN_DETERMINISTIC_ENCRYPT_BYTES  # 1935
    FN_DETERMINISTIC_DECRYPT_STRING = public_builtin_function_pb2.FN_DETERMINISTIC_DECRYPT_STRING  # 1936
    FN_DETERMINISTIC_DECRYPT_BYTES = public_builtin_function_pb2.FN_DETERMINISTIC_DECRYPT_BYTES  # 1937
    FN_DETERMINISTIC_ENCRYPT_STRUCT_STRING = public_builtin_function_pb2.FN_DETERMINISTIC_ENCRYPT_STRUCT_STRING  # 1938
    FN_DETERMINISTIC_ENCRYPT_STRUCT_BYTES = public_builtin_function_pb2.FN_DETERMINISTIC_ENCRYPT_STRUCT_BYTES  # 1939
    FN_DETERMINISTIC_DECRYPT_STRUCT_STRING = public_builtin_function_pb2.FN_DETERMINISTIC_DECRYPT_STRUCT_STRING  # 1940
    FN_DETERMINISTIC_DECRYPT_STRUCT_BYTES = public_builtin_function_pb2.FN_DETERMINISTIC_DECRYPT_STRUCT_BYTES  # 1941
    FN_KEYS_NEW_WRAPPED_KEYSET = public_builtin_function_pb2.FN_KEYS_NEW_WRAPPED_KEYSET  # 1942
    FN_KEYS_ROTATE_WRAPPED_KEYSET = public_builtin_function_pb2.FN_KEYS_ROTATE_WRAPPED_KEYSET  # 1943
    FN_KEYS_REWRAP_KEYSET = public_builtin_function_pb2.FN_KEYS_REWRAP_KEYSET  # 1944
    FN_ROUND_WITH_ROUNDING_MODE_NUMERIC = public_builtin_function_pb2.FN_ROUND_WITH_ROUNDING_MODE_NUMERIC  # 1945
    FN_ROUND_WITH_ROUNDING_MODE_BIGNUMERIC = public_builtin_function_pb2.FN_ROUND_WITH_ROUNDING_MODE_BIGNUMERIC  # 1946
    FN_GROUPING = public_builtin_function_pb2.FN_GROUPING  # 1947
    FN_TO_JSON_UNSUPPORTED_FIELDS = public_builtin_function_pb2.FN_TO_JSON_UNSUPPORTED_FIELDS  # 1948
    FN_SAFE_TO_JSON = public_builtin_function_pb2.FN_SAFE_TO_JSON  # 1949
    FN_ST_GEOG_POINT = public_builtin_function_pb2.FN_ST_GEOG_POINT  # 2000
    FN_ST_MAKE_LINE = public_builtin_function_pb2.FN_ST_MAKE_LINE  # 2001
    FN_ST_MAKE_LINE_ARRAY = public_builtin_function_pb2.FN_ST_MAKE_LINE_ARRAY  # 2002
    FN_ST_MAKE_POLYGON = public_builtin_function_pb2.FN_ST_MAKE_POLYGON  # 2003
    FN_ST_MAKE_POLYGON_ORIENTED = public_builtin_function_pb2.FN_ST_MAKE_POLYGON_ORIENTED  # 2004
    FN_ST_INTERSECTION = public_builtin_function_pb2.FN_ST_INTERSECTION  # 2007
    FN_ST_UNION = public_builtin_function_pb2.FN_ST_UNION  # 2008
    FN_ST_UNION_ARRAY = public_builtin_function_pb2.FN_ST_UNION_ARRAY  # 2009
    FN_ST_DIFFERENCE = public_builtin_function_pb2.FN_ST_DIFFERENCE  # 2010
    FN_ST_UNARY_UNION = public_builtin_function_pb2.FN_ST_UNARY_UNION  # 2011
    FN_ST_CENTROID = public_builtin_function_pb2.FN_ST_CENTROID  # 2012
    FN_ST_BUFFER = public_builtin_function_pb2.FN_ST_BUFFER  # 2013
    FN_ST_BUFFER_WITH_TOLERANCE = public_builtin_function_pb2.FN_ST_BUFFER_WITH_TOLERANCE  # 2014
    FN_ST_SIMPLIFY = public_builtin_function_pb2.FN_ST_SIMPLIFY  # 2015
    FN_ST_SNAP_TO_GRID = public_builtin_function_pb2.FN_ST_SNAP_TO_GRID  # 2016
    FN_ST_CLOSEST_POINT = public_builtin_function_pb2.FN_ST_CLOSEST_POINT  # 2017
    FN_ST_BOUNDARY = public_builtin_function_pb2.FN_ST_BOUNDARY  # 2018
    FN_ST_EQUALS = public_builtin_function_pb2.FN_ST_EQUALS  # 2020
    FN_ST_INTERSECTS = public_builtin_function_pb2.FN_ST_INTERSECTS  # 2021
    FN_ST_CONTAINS = public_builtin_function_pb2.FN_ST_CONTAINS  # 2022
    FN_ST_COVERS = public_builtin_function_pb2.FN_ST_COVERS  # 2023
    FN_ST_DISJOINT = public_builtin_function_pb2.FN_ST_DISJOINT  # 2024
    FN_ST_INTERSECTS_BOX = public_builtin_function_pb2.FN_ST_INTERSECTS_BOX  # 2025
    FN_ST_DWITHIN = public_builtin_function_pb2.FN_ST_DWITHIN  # 2026
    FN_ST_WITHIN = public_builtin_function_pb2.FN_ST_WITHIN  # 2027
    FN_ST_COVEREDBY = public_builtin_function_pb2.FN_ST_COVEREDBY  # 2028
    FN_ST_TOUCHES = public_builtin_function_pb2.FN_ST_TOUCHES  # 2029
    FN_ST_IS_EMPTY = public_builtin_function_pb2.FN_ST_IS_EMPTY  # 2030
    FN_ST_IS_COLLECTION = public_builtin_function_pb2.FN_ST_IS_COLLECTION  # 2031
    FN_ST_DIMENSION = public_builtin_function_pb2.FN_ST_DIMENSION  # 2032
    FN_ST_NUM_POINTS = public_builtin_function_pb2.FN_ST_NUM_POINTS  # 2033
    FN_ST_NUM_GEOMETRIES = public_builtin_function_pb2.FN_ST_NUM_GEOMETRIES  # 2034
    FN_ST_GEOMETRY_TYPE = public_builtin_function_pb2.FN_ST_GEOMETRY_TYPE  # 2035
    FN_ST_LENGTH = public_builtin_function_pb2.FN_ST_LENGTH  # 2040
    FN_ST_PERIMETER = public_builtin_function_pb2.FN_ST_PERIMETER  # 2041
    FN_ST_AREA = public_builtin_function_pb2.FN_ST_AREA  # 2042
    FN_ST_DISTANCE = public_builtin_function_pb2.FN_ST_DISTANCE  # 2043
    FN_ST_MAX_DISTANCE = public_builtin_function_pb2.FN_ST_MAX_DISTANCE  # 2044
    FN_ST_GEOG_FROM_TEXT = public_builtin_function_pb2.FN_ST_GEOG_FROM_TEXT  # 2050
    FN_ST_GEOG_FROM_KML = public_builtin_function_pb2.FN_ST_GEOG_FROM_KML  # 2051
    FN_ST_GEOG_FROM_GEO_JSON = public_builtin_function_pb2.FN_ST_GEOG_FROM_GEO_JSON  # 2052
    FN_ST_AS_TEXT = public_builtin_function_pb2.FN_ST_AS_TEXT  # 2053
    FN_ST_AS_KML = public_builtin_function_pb2.FN_ST_AS_KML  # 2054
    FN_ST_AS_GEO_JSON = public_builtin_function_pb2.FN_ST_AS_GEO_JSON  # 2055
    FN_ST_GEOG_FROM_WKB = public_builtin_function_pb2.FN_ST_GEOG_FROM_WKB  # 2056
    FN_ST_AS_BINARY = public_builtin_function_pb2.FN_ST_AS_BINARY  # 2057
    FN_ST_GEOHASH = public_builtin_function_pb2.FN_ST_GEOHASH  # 2058
    FN_ST_GEOG_POINT_FROM_GEOHASH = public_builtin_function_pb2.FN_ST_GEOG_POINT_FROM_GEOHASH  # 2059
    FN_ST_GEOG_FROM_TEXT_EXT = public_builtin_function_pb2.FN_ST_GEOG_FROM_TEXT_EXT  # 2060
    FN_ST_UNION_AGG = public_builtin_function_pb2.FN_ST_UNION_AGG  # 2061
    FN_ST_ACCUM = public_builtin_function_pb2.FN_ST_ACCUM  # 2062
    FN_ST_CENTROID_AGG = public_builtin_function_pb2.FN_ST_CENTROID_AGG  # 2063
    FN_ST_DUMP = public_builtin_function_pb2.FN_ST_DUMP  # 2064
    FN_ST_CONVEXHULL = public_builtin_function_pb2.FN_ST_CONVEXHULL  # 2065
    FN_ST_CLUSTERDBSCAN = public_builtin_function_pb2.FN_ST_CLUSTERDBSCAN  # 2066
    FN_ST_NEAREST_NEIGHBORS = public_builtin_function_pb2.FN_ST_NEAREST_NEIGHBORS  # 2067
    FN_ST_GEOG_FROM_GEO_JSON_EXT = public_builtin_function_pb2.FN_ST_GEOG_FROM_GEO_JSON_EXT  # 2068
    FN_ST_X = public_builtin_function_pb2.FN_ST_X  # 2070
    FN_ST_Y = public_builtin_function_pb2.FN_ST_Y  # 2071
    FN_ST_GEOG_FROM_WKB_HEX = public_builtin_function_pb2.FN_ST_GEOG_FROM_WKB_HEX  # 2072
    FN_ST_GEOG_FROM_STRING = public_builtin_function_pb2.FN_ST_GEOG_FROM_STRING  # 2073
    FN_ST_GEOG_FROM_BYTES = public_builtin_function_pb2.FN_ST_GEOG_FROM_BYTES  # 2074
    FN_ST_POINT_N = public_builtin_function_pb2.FN_ST_POINT_N  # 2075
    FN_ST_START_POINT = public_builtin_function_pb2.FN_ST_START_POINT  # 2076
    FN_ST_END_POINT = public_builtin_function_pb2.FN_ST_END_POINT  # 2077
    FN_ST_EXTERIORRING = public_builtin_function_pb2.FN_ST_EXTERIORRING  # 2078
    FN_ST_INTERIORRINGS = public_builtin_function_pb2.FN_ST_INTERIORRINGS  # 2079
    FN_ST_AZIMUTH = public_builtin_function_pb2.FN_ST_AZIMUTH  # 2080
    FN_ST_ANGLE = public_builtin_function_pb2.FN_ST_ANGLE  # 2081
    FN_S2_COVERINGCELLIDS = public_builtin_function_pb2.FN_S2_COVERINGCELLIDS  # 2082
    FN_ST_EXTENT = public_builtin_function_pb2.FN_ST_EXTENT  # 2083
    FN_ST_BOUNDING_BOX = public_builtin_function_pb2.FN_ST_BOUNDING_BOX  # 2084
    FN_S2_CELLIDFROMPOINT = public_builtin_function_pb2.FN_S2_CELLIDFROMPOINT  # 2085
    FN_ST_IS_CLOSED = public_builtin_function_pb2.FN_ST_IS_CLOSED  # 2086
    FN_ST_IS_RING = public_builtin_function_pb2.FN_ST_IS_RING  # 2087
    FN_ST_DUMP_POINTS = public_builtin_function_pb2.FN_ST_DUMP_POINTS  # 2088
    FN_ST_LINE_LOCATE_POINT = public_builtin_function_pb2.FN_ST_LINE_LOCATE_POINT  # 2089
    FN_ST_HAUSDORFF_DISTANCE = public_builtin_function_pb2.FN_ST_HAUSDORFF_DISTANCE  # 2090
    FN_ST_LINE_SUBSTRING = public_builtin_function_pb2.FN_ST_LINE_SUBSTRING  # 2091
    FN_ST_LINE_INTERPOLATE_POINT = public_builtin_function_pb2.FN_ST_LINE_INTERPOLATE_POINT  # 2092
    FN_ST_GEOG_FROM_WKB_EXT = public_builtin_function_pb2.FN_ST_GEOG_FROM_WKB_EXT  # 2093
    FN_ST_GEOG_FROM_WKB_HEX_EXT = public_builtin_function_pb2.FN_ST_GEOG_FROM_WKB_HEX_EXT  # 2094
    FN_ST_HAUSDORFF_DWITHIN = public_builtin_function_pb2.FN_ST_HAUSDORFF_DWITHIN  # 2095
    FN_ANON_COUNT = public_builtin_function_pb2.FN_ANON_COUNT  # 2200
    FN_ANON_COUNT_STAR = public_builtin_function_pb2.FN_ANON_COUNT_STAR  # 2201
    FN_ANON_SUM_INT64 = public_builtin_function_pb2.FN_ANON_SUM_INT64  # 2202
    FN_ANON_SUM_UINT64 = public_builtin_function_pb2.FN_ANON_SUM_UINT64  # 2203
    FN_ANON_SUM_DOUBLE = public_builtin_function_pb2.FN_ANON_SUM_DOUBLE  # 2204
    FN_ANON_SUM_NUMERIC = public_builtin_function_pb2.FN_ANON_SUM_NUMERIC  # 2205
    FN_ANON_AVG_DOUBLE = public_builtin_function_pb2.FN_ANON_AVG_DOUBLE  # 2206
    FN_ANON_AVG_NUMERIC = public_builtin_function_pb2.FN_ANON_AVG_NUMERIC  # 2207
    FN_ANON_VAR_POP_DOUBLE = public_builtin_function_pb2.FN_ANON_VAR_POP_DOUBLE  # 2208
    FN_ANON_VAR_POP_DOUBLE_ARRAY = public_builtin_function_pb2.FN_ANON_VAR_POP_DOUBLE_ARRAY  # 2209
    FN_ANON_STDDEV_POP_DOUBLE = public_builtin_function_pb2.FN_ANON_STDDEV_POP_DOUBLE  # 2210
    FN_ANON_STDDEV_POP_DOUBLE_ARRAY = public_builtin_function_pb2.FN_ANON_STDDEV_POP_DOUBLE_ARRAY  # 2211
    FN_ANON_PERCENTILE_CONT_DOUBLE = public_builtin_function_pb2.FN_ANON_PERCENTILE_CONT_DOUBLE  # 2212
    FN_ANON_PERCENTILE_CONT_DOUBLE_ARRAY = public_builtin_function_pb2.FN_ANON_PERCENTILE_CONT_DOUBLE_ARRAY  # 2213
    FN_ANON_SUM_WITH_REPORT_JSON_INT64 = public_builtin_function_pb2.FN_ANON_SUM_WITH_REPORT_JSON_INT64  # 2214
    FN_ANON_SUM_WITH_REPORT_JSON_DOUBLE = public_builtin_function_pb2.FN_ANON_SUM_WITH_REPORT_JSON_DOUBLE  # 2215
    FN_ANON_SUM_WITH_REPORT_JSON_UINT64 = public_builtin_function_pb2.FN_ANON_SUM_WITH_REPORT_JSON_UINT64  # 2216
    FN_ANON_SUM_WITH_REPORT_PROTO_INT64 = public_builtin_function_pb2.FN_ANON_SUM_WITH_REPORT_PROTO_INT64  # 2217
    FN_ANON_SUM_WITH_REPORT_PROTO_DOUBLE = public_builtin_function_pb2.FN_ANON_SUM_WITH_REPORT_PROTO_DOUBLE  # 2218
    FN_ANON_SUM_WITH_REPORT_PROTO_UINT64 = public_builtin_function_pb2.FN_ANON_SUM_WITH_REPORT_PROTO_UINT64  # 2219
    FN_ANON_QUANTILES_DOUBLE = public_builtin_function_pb2.FN_ANON_QUANTILES_DOUBLE  # 2220
    FN_ANON_QUANTILES_DOUBLE_ARRAY = public_builtin_function_pb2.FN_ANON_QUANTILES_DOUBLE_ARRAY  # 2221
    FN_ANON_COUNT_WITH_REPORT_JSON = public_builtin_function_pb2.FN_ANON_COUNT_WITH_REPORT_JSON  # 2222
    FN_ANON_COUNT_WITH_REPORT_PROTO = public_builtin_function_pb2.FN_ANON_COUNT_WITH_REPORT_PROTO  # 2223
    FN_ANON_COUNT_STAR_WITH_REPORT_JSON = public_builtin_function_pb2.FN_ANON_COUNT_STAR_WITH_REPORT_JSON  # 2224
    FN_ANON_COUNT_STAR_WITH_REPORT_PROTO = public_builtin_function_pb2.FN_ANON_COUNT_STAR_WITH_REPORT_PROTO  # 2225
    FN_ANON_QUANTILES_DOUBLE_WITH_REPORT_JSON = public_builtin_function_pb2.FN_ANON_QUANTILES_DOUBLE_WITH_REPORT_JSON  # 2226
    FN_ANON_QUANTILES_DOUBLE_WITH_REPORT_PROTO = public_builtin_function_pb2.FN_ANON_QUANTILES_DOUBLE_WITH_REPORT_PROTO  # 2227
    FN_ANON_QUANTILES_DOUBLE_ARRAY_WITH_REPORT_JSON = public_builtin_function_pb2.FN_ANON_QUANTILES_DOUBLE_ARRAY_WITH_REPORT_JSON  # 2228
    FN_ANON_QUANTILES_DOUBLE_ARRAY_WITH_REPORT_PROTO = public_builtin_function_pb2.FN_ANON_QUANTILES_DOUBLE_ARRAY_WITH_REPORT_PROTO  # 2229
    FN_ANON_AVG_DOUBLE_WITH_REPORT_JSON = public_builtin_function_pb2.FN_ANON_AVG_DOUBLE_WITH_REPORT_JSON  # 2230
    FN_ANON_AVG_DOUBLE_WITH_REPORT_PROTO = public_builtin_function_pb2.FN_ANON_AVG_DOUBLE_WITH_REPORT_PROTO  # 2231
    FN_TRUNC_WITH_DIGITS_BIGNUMERIC = public_builtin_function_pb2.FN_TRUNC_WITH_DIGITS_BIGNUMERIC  # 2300
    FN_MOD_BIGNUMERIC = public_builtin_function_pb2.FN_MOD_BIGNUMERIC  # 2301
    FN_DIV_BIGNUMERIC = public_builtin_function_pb2.FN_DIV_BIGNUMERIC  # 2302
    FN_POW_BIGNUMERIC = public_builtin_function_pb2.FN_POW_BIGNUMERIC  # 2303
    FN_EXP_NUMERIC = public_builtin_function_pb2.FN_EXP_NUMERIC  # 2304
    FN_EXP_BIGNUMERIC = public_builtin_function_pb2.FN_EXP_BIGNUMERIC  # 2305
    FN_NATURAL_LOGARITHM_NUMERIC = public_builtin_function_pb2.FN_NATURAL_LOGARITHM_NUMERIC  # 2306
    FN_NATURAL_LOGARITHM_BIGNUMERIC = public_builtin_function_pb2.FN_NATURAL_LOGARITHM_BIGNUMERIC  # 2307
    FN_SQRT_NUMERIC = public_builtin_function_pb2.FN_SQRT_NUMERIC  # 2308
    FN_SQRT_BIGNUMERIC = public_builtin_function_pb2.FN_SQRT_BIGNUMERIC  # 2309
    FN_DECIMAL_LOGARITHM_NUMERIC = public_builtin_function_pb2.FN_DECIMAL_LOGARITHM_NUMERIC  # 2310
    FN_DECIMAL_LOGARITHM_BIGNUMERIC = public_builtin_function_pb2.FN_DECIMAL_LOGARITHM_BIGNUMERIC  # 2311
    FN_LOGARITHM_NUMERIC = public_builtin_function_pb2.FN_LOGARITHM_NUMERIC  # 2312
    FN_LOGARITHM_BIGNUMERIC = public_builtin_function_pb2.FN_LOGARITHM_BIGNUMERIC  # 2313
    FN_PARSE_NUMERIC = public_builtin_function_pb2.FN_PARSE_NUMERIC  # 2314
    FN_PARSE_BIGNUMERIC = public_builtin_function_pb2.FN_PARSE_BIGNUMERIC  # 2315
    FN_CSC_DOUBLE = public_builtin_function_pb2.FN_CSC_DOUBLE  # 2316
    FN_SEC_DOUBLE = public_builtin_function_pb2.FN_SEC_DOUBLE  # 2317
    FN_COT_DOUBLE = public_builtin_function_pb2.FN_COT_DOUBLE  # 2318
    FN_CSCH_DOUBLE = public_builtin_function_pb2.FN_CSCH_DOUBLE  # 2319
    FN_SECH_DOUBLE = public_builtin_function_pb2.FN_SECH_DOUBLE  # 2320
    FN_COTH_DOUBLE = public_builtin_function_pb2.FN_COTH_DOUBLE  # 2321
    FN_CBRT_DOUBLE = public_builtin_function_pb2.FN_CBRT_DOUBLE  # 2322
    FN_CBRT_NUMERIC = public_builtin_function_pb2.FN_CBRT_NUMERIC  # 2323
    FN_CBRT_BIGNUMERIC = public_builtin_function_pb2.FN_CBRT_BIGNUMERIC  # 2324
    FN_PI_DOUBLE = public_builtin_function_pb2.FN_PI_DOUBLE  # 2325
    FN_PI_NUMERIC = public_builtin_function_pb2.FN_PI_NUMERIC  # 2326
    FN_PI_BIGNUMERIC = public_builtin_function_pb2.FN_PI_BIGNUMERIC  # 2327
    FN_NULLIFZERO_INT32 = public_builtin_function_pb2.FN_NULLIFZERO_INT32  # 2329
    FN_NULLIFZERO_UINT32 = public_builtin_function_pb2.FN_NULLIFZERO_UINT32  # 2330
    FN_NULLIFZERO_INT64 = public_builtin_function_pb2.FN_NULLIFZERO_INT64  # 2331
    FN_NULLIFZERO_UINT64 = public_builtin_function_pb2.FN_NULLIFZERO_UINT64  # 2332
    FN_NULLIFZERO_FLOAT = public_builtin_function_pb2.FN_NULLIFZERO_FLOAT  # 2333
    FN_NULLIFZERO_DOUBLE = public_builtin_function_pb2.FN_NULLIFZERO_DOUBLE  # 2334
    FN_NULLIFZERO_NUMERIC = public_builtin_function_pb2.FN_NULLIFZERO_NUMERIC  # 2335
    FN_NULLIFZERO_BIGNUMERIC = public_builtin_function_pb2.FN_NULLIFZERO_BIGNUMERIC  # 2336
    FN_ZEROIFNULL_INT32 = public_builtin_function_pb2.FN_ZEROIFNULL_INT32  # 2337
    FN_ZEROIFNULL_UINT32 = public_builtin_function_pb2.FN_ZEROIFNULL_UINT32  # 2338
    FN_ZEROIFNULL_INT64 = public_builtin_function_pb2.FN_ZEROIFNULL_INT64  # 2339
    FN_ZEROIFNULL_UINT64 = public_builtin_function_pb2.FN_ZEROIFNULL_UINT64  # 2340
    FN_ZEROIFNULL_FLOAT = public_builtin_function_pb2.FN_ZEROIFNULL_FLOAT  # 2341
    FN_ZEROIFNULL_DOUBLE = public_builtin_function_pb2.FN_ZEROIFNULL_DOUBLE  # 2342
    FN_ZEROIFNULL_NUMERIC = public_builtin_function_pb2.FN_ZEROIFNULL_NUMERIC  # 2343
    FN_ZEROIFNULL_BIGNUMERIC = public_builtin_function_pb2.FN_ZEROIFNULL_BIGNUMERIC  # 2344
    FN_COSINE_DISTANCE_DENSE_DOUBLE = public_builtin_function_pb2.FN_COSINE_DISTANCE_DENSE_DOUBLE  # 2345
    FN_COSINE_DISTANCE_SPARSE_INT64 = public_builtin_function_pb2.FN_COSINE_DISTANCE_SPARSE_INT64  # 2346
    FN_COSINE_DISTANCE_SPARSE_STRING = public_builtin_function_pb2.FN_COSINE_DISTANCE_SPARSE_STRING  # 2347
    FN_EUCLIDEAN_DISTANCE_DENSE_DOUBLE = public_builtin_function_pb2.FN_EUCLIDEAN_DISTANCE_DENSE_DOUBLE  # 2348
    FN_EUCLIDEAN_DISTANCE_SPARSE_INT64 = public_builtin_function_pb2.FN_EUCLIDEAN_DISTANCE_SPARSE_INT64  # 2349
    FN_EUCLIDEAN_DISTANCE_SPARSE_STRING = public_builtin_function_pb2.FN_EUCLIDEAN_DISTANCE_SPARSE_STRING  # 2350
    FN_EDIT_DISTANCE = public_builtin_function_pb2.FN_EDIT_DISTANCE  # 2351
    FN_EDIT_DISTANCE_BYTES = public_builtin_function_pb2.FN_EDIT_DISTANCE_BYTES  # 2352
    FN_COSINE_DISTANCE_DENSE_FLOAT = public_builtin_function_pb2.FN_COSINE_DISTANCE_DENSE_FLOAT  # 2353
    FN_EUCLIDEAN_DISTANCE_DENSE_FLOAT = public_builtin_function_pb2.FN_EUCLIDEAN_DISTANCE_DENSE_FLOAT  # 2354
    FN_APPROX_COSINE_DISTANCE_DOUBLE = public_builtin_function_pb2.FN_APPROX_COSINE_DISTANCE_DOUBLE  # 2355
    FN_APPROX_COSINE_DISTANCE_FLOAT = public_builtin_function_pb2.FN_APPROX_COSINE_DISTANCE_FLOAT  # 2356
    FN_APPROX_COSINE_DISTANCE_DOUBLE_WITH_JSON_OPTIONS = public_builtin_function_pb2.FN_APPROX_COSINE_DISTANCE_DOUBLE_WITH_JSON_OPTIONS  # 2357
    FN_APPROX_COSINE_DISTANCE_FLOAT_WITH_JSON_OPTIONS = public_builtin_function_pb2.FN_APPROX_COSINE_DISTANCE_FLOAT_WITH_JSON_OPTIONS  # 2358
    FN_APPROX_EUCLIDEAN_DISTANCE_DOUBLE = public_builtin_function_pb2.FN_APPROX_EUCLIDEAN_DISTANCE_DOUBLE  # 2359
    FN_APPROX_EUCLIDEAN_DISTANCE_FLOAT = public_builtin_function_pb2.FN_APPROX_EUCLIDEAN_DISTANCE_FLOAT  # 2360
    FN_APPROX_EUCLIDEAN_DISTANCE_DOUBLE_WITH_JSON_OPTIONS = public_builtin_function_pb2.FN_APPROX_EUCLIDEAN_DISTANCE_DOUBLE_WITH_JSON_OPTIONS  # 2361
    FN_APPROX_EUCLIDEAN_DISTANCE_FLOAT_WITH_JSON_OPTIONS = public_builtin_function_pb2.FN_APPROX_EUCLIDEAN_DISTANCE_FLOAT_WITH_JSON_OPTIONS  # 2362
    FN_DOT_PRODUCT_INT64 = public_builtin_function_pb2.FN_DOT_PRODUCT_INT64  # 2363
    FN_DOT_PRODUCT_FLOAT = public_builtin_function_pb2.FN_DOT_PRODUCT_FLOAT  # 2364
    FN_DOT_PRODUCT_DOUBLE = public_builtin_function_pb2.FN_DOT_PRODUCT_DOUBLE  # 2365
    FN_APPROX_DOT_PRODUCT_INT64 = public_builtin_function_pb2.FN_APPROX_DOT_PRODUCT_INT64  # 2366
    FN_APPROX_DOT_PRODUCT_FLOAT = public_builtin_function_pb2.FN_APPROX_DOT_PRODUCT_FLOAT  # 2367
    FN_APPROX_DOT_PRODUCT_DOUBLE = public_builtin_function_pb2.FN_APPROX_DOT_PRODUCT_DOUBLE  # 2368
    FN_APPROX_DOT_PRODUCT_INT64_WITH_JSON_OPTIONS = public_builtin_function_pb2.FN_APPROX_DOT_PRODUCT_INT64_WITH_JSON_OPTIONS  # 2369
    FN_APPROX_DOT_PRODUCT_FLOAT_WITH_JSON_OPTIONS = public_builtin_function_pb2.FN_APPROX_DOT_PRODUCT_FLOAT_WITH_JSON_OPTIONS  # 2370
    FN_APPROX_DOT_PRODUCT_DOUBLE_WITH_JSON_OPTIONS = public_builtin_function_pb2.FN_APPROX_DOT_PRODUCT_DOUBLE_WITH_JSON_OPTIONS  # 2371
    FN_MANHATTAN_DISTANCE_INT64 = public_builtin_function_pb2.FN_MANHATTAN_DISTANCE_INT64  # 2372
    FN_MANHATTAN_DISTANCE_FLOAT = public_builtin_function_pb2.FN_MANHATTAN_DISTANCE_FLOAT  # 2373
    FN_MANHATTAN_DISTANCE_DOUBLE = public_builtin_function_pb2.FN_MANHATTAN_DISTANCE_DOUBLE  # 2374
    FN_L1_NORM_INT64 = public_builtin_function_pb2.FN_L1_NORM_INT64  # 2375
    FN_L1_NORM_FLOAT = public_builtin_function_pb2.FN_L1_NORM_FLOAT  # 2376
    FN_L1_NORM_DOUBLE = public_builtin_function_pb2.FN_L1_NORM_DOUBLE  # 2377
    FN_L2_NORM_INT64 = public_builtin_function_pb2.FN_L2_NORM_INT64  # 2378
    FN_L2_NORM_FLOAT = public_builtin_function_pb2.FN_L2_NORM_FLOAT  # 2379
    FN_L2_NORM_DOUBLE = public_builtin_function_pb2.FN_L2_NORM_DOUBLE  # 2380
    FN_APPROX_COSINE_DISTANCE_DOUBLE_WITH_PROTO_OPTIONS = public_builtin_function_pb2.FN_APPROX_COSINE_DISTANCE_DOUBLE_WITH_PROTO_OPTIONS  # 2381
    FN_APPROX_COSINE_DISTANCE_FLOAT_WITH_PROTO_OPTIONS = public_builtin_function_pb2.FN_APPROX_COSINE_DISTANCE_FLOAT_WITH_PROTO_OPTIONS  # 2382
    FN_APPROX_EUCLIDEAN_DISTANCE_DOUBLE_WITH_PROTO_OPTIONS = public_builtin_function_pb2.FN_APPROX_EUCLIDEAN_DISTANCE_DOUBLE_WITH_PROTO_OPTIONS  # 2383
    FN_APPROX_EUCLIDEAN_DISTANCE_FLOAT_WITH_PROTO_OPTIONS = public_builtin_function_pb2.FN_APPROX_EUCLIDEAN_DISTANCE_FLOAT_WITH_PROTO_OPTIONS  # 2384
    FN_APPROX_DOT_PRODUCT_INT64_WITH_PROTO_OPTIONS = public_builtin_function_pb2.FN_APPROX_DOT_PRODUCT_INT64_WITH_PROTO_OPTIONS  # 2385
    FN_APPROX_DOT_PRODUCT_FLOAT_WITH_PROTO_OPTIONS = public_builtin_function_pb2.FN_APPROX_DOT_PRODUCT_FLOAT_WITH_PROTO_OPTIONS  # 2386
    FN_APPROX_DOT_PRODUCT_DOUBLE_WITH_PROTO_OPTIONS = public_builtin_function_pb2.FN_APPROX_DOT_PRODUCT_DOUBLE_WITH_PROTO_OPTIONS  # 2387
    FN_DEGREES_DOUBLE = public_builtin_function_pb2.FN_DEGREES_DOUBLE  # 2388
    FN_DEGREES_NUMERIC = public_builtin_function_pb2.FN_DEGREES_NUMERIC  # 2389
    FN_DEGREES_BIGNUMERIC = public_builtin_function_pb2.FN_DEGREES_BIGNUMERIC  # 2390
    FN_RADIANS_DOUBLE = public_builtin_function_pb2.FN_RADIANS_DOUBLE  # 2391
    FN_RADIANS_NUMERIC = public_builtin_function_pb2.FN_RADIANS_NUMERIC  # 2392
    FN_RADIANS_BIGNUMERIC = public_builtin_function_pb2.FN_RADIANS_BIGNUMERIC  # 2393
    FN_FLATTEN = public_builtin_function_pb2.FN_FLATTEN  # 2500
    FN_ARRAY_IS_DISTINCT = public_builtin_function_pb2.FN_ARRAY_IS_DISTINCT  # 2501
    FN_PROTO_MAP_AT_KEY = public_builtin_function_pb2.FN_PROTO_MAP_AT_KEY  # 2502
    FN_SAFE_PROTO_MAP_AT_KEY = public_builtin_function_pb2.FN_SAFE_PROTO_MAP_AT_KEY  # 2503
    FN_ARRAY_FILTER = public_builtin_function_pb2.FN_ARRAY_FILTER  # 2504
    FN_ARRAY_FILTER_WITH_INDEX = public_builtin_function_pb2.FN_ARRAY_FILTER_WITH_INDEX  # 2505
    FN_ARRAY_TRANSFORM = public_builtin_function_pb2.FN_ARRAY_TRANSFORM  # 2506
    FN_ARRAY_TRANSFORM_WITH_INDEX = public_builtin_function_pb2.FN_ARRAY_TRANSFORM_WITH_INDEX  # 2507
    FN_PROTO_MAP_CONTAINS_KEY = public_builtin_function_pb2.FN_PROTO_MAP_CONTAINS_KEY  # 2508
    FN_PROTO_MODIFY_MAP = public_builtin_function_pb2.FN_PROTO_MODIFY_MAP  # 2510
    FN_ARRAY_INCLUDES = public_builtin_function_pb2.FN_ARRAY_INCLUDES  # 2511
    FN_ARRAY_INCLUDES_LAMBDA = public_builtin_function_pb2.FN_ARRAY_INCLUDES_LAMBDA  # 2512
    FN_ARRAY_INCLUDES_ANY = public_builtin_function_pb2.FN_ARRAY_INCLUDES_ANY  # 2513
    FN_ARRAY_INCLUDES_ALL = public_builtin_function_pb2.FN_ARRAY_INCLUDES_ALL  # 2514
    FN_ARRAY_FIRST = public_builtin_function_pb2.FN_ARRAY_FIRST  # 2515
    FN_ARRAY_LAST = public_builtin_function_pb2.FN_ARRAY_LAST  # 2516
    FN_ARRAY_SLICE = public_builtin_function_pb2.FN_ARRAY_SLICE  # 2517
    FN_ARRAY_SUM_INT32 = public_builtin_function_pb2.FN_ARRAY_SUM_INT32  # 2518
    FN_ARRAY_SUM_INT64 = public_builtin_function_pb2.FN_ARRAY_SUM_INT64  # 2519
    FN_ARRAY_SUM_UINT32 = public_builtin_function_pb2.FN_ARRAY_SUM_UINT32  # 2520
    FN_ARRAY_SUM_UINT64 = public_builtin_function_pb2.FN_ARRAY_SUM_UINT64  # 2521
    FN_ARRAY_SUM_FLOAT = public_builtin_function_pb2.FN_ARRAY_SUM_FLOAT  # 2522
    FN_ARRAY_SUM_DOUBLE = public_builtin_function_pb2.FN_ARRAY_SUM_DOUBLE  # 2523
    FN_ARRAY_SUM_NUMERIC = public_builtin_function_pb2.FN_ARRAY_SUM_NUMERIC  # 2524
    FN_ARRAY_SUM_BIGNUMERIC = public_builtin_function_pb2.FN_ARRAY_SUM_BIGNUMERIC  # 2525
    FN_ARRAY_SUM_INTERVAL = public_builtin_function_pb2.FN_ARRAY_SUM_INTERVAL  # 2526
    FN_ARRAY_AVG_INT32 = public_builtin_function_pb2.FN_ARRAY_AVG_INT32  # 2527
    FN_ARRAY_AVG_INT64 = public_builtin_function_pb2.FN_ARRAY_AVG_INT64  # 2528
    FN_ARRAY_AVG_UINT32 = public_builtin_function_pb2.FN_ARRAY_AVG_UINT32  # 2529
    FN_ARRAY_AVG_UINT64 = public_builtin_function_pb2.FN_ARRAY_AVG_UINT64  # 2530
    FN_ARRAY_AVG_FLOAT = public_builtin_function_pb2.FN_ARRAY_AVG_FLOAT  # 2531
    FN_ARRAY_AVG_DOUBLE = public_builtin_function_pb2.FN_ARRAY_AVG_DOUBLE  # 2532
    FN_ARRAY_AVG_NUMERIC = public_builtin_function_pb2.FN_ARRAY_AVG_NUMERIC  # 2533
    FN_ARRAY_AVG_BIGNUMERIC = public_builtin_function_pb2.FN_ARRAY_AVG_BIGNUMERIC  # 2534
    FN_ARRAY_AVG_INTERVAL = public_builtin_function_pb2.FN_ARRAY_AVG_INTERVAL  # 2535
    FN_ARRAY_OFFSET = public_builtin_function_pb2.FN_ARRAY_OFFSET  # 2536
    FN_ARRAY_OFFSETS = public_builtin_function_pb2.FN_ARRAY_OFFSETS  # 2537
    FN_ARRAY_FIND = public_builtin_function_pb2.FN_ARRAY_FIND  # 2538
    FN_ARRAY_FIND_ALL = public_builtin_function_pb2.FN_ARRAY_FIND_ALL  # 2539
    FN_ARRAY_MIN = public_builtin_function_pb2.FN_ARRAY_MIN  # 2540
    FN_ARRAY_MAX = public_builtin_function_pb2.FN_ARRAY_MAX  # 2541
    FN_ARRAY_MAX_FLOAT = public_builtin_function_pb2.FN_ARRAY_MAX_FLOAT  # 2542
    FN_ARRAY_MAX_DOUBLE = public_builtin_function_pb2.FN_ARRAY_MAX_DOUBLE  # 2543
    FN_ARRAY_FIRST_N = public_builtin_function_pb2.FN_ARRAY_FIRST_N  # 2544
    FN_ARRAY_LAST_N = public_builtin_function_pb2.FN_ARRAY_LAST_N  # 2545
    FN_ARRAY_REMOVE_FIRST_N = public_builtin_function_pb2.FN_ARRAY_REMOVE_FIRST_N  # 2546
    FN_ARRAY_REMOVE_LAST_N = public_builtin_function_pb2.FN_ARRAY_REMOVE_LAST_N  # 2547
    FN_ARRAY_OFFSET_LAMBDA = public_builtin_function_pb2.FN_ARRAY_OFFSET_LAMBDA  # 2548
    FN_ARRAY_OFFSETS_LAMBDA = public_builtin_function_pb2.FN_ARRAY_OFFSETS_LAMBDA  # 2549
    FN_ARRAY_FIND_LAMBDA = public_builtin_function_pb2.FN_ARRAY_FIND_LAMBDA  # 2550
    FN_ARRAY_FIND_ALL_LAMBDA = public_builtin_function_pb2.FN_ARRAY_FIND_ALL_LAMBDA  # 2551
    FN_ARRAY_ZIP_TWO_ARRAY = public_builtin_function_pb2.FN_ARRAY_ZIP_TWO_ARRAY  # 2552
    FN_ARRAY_ZIP_TWO_ARRAY_LAMBDA = public_builtin_function_pb2.FN_ARRAY_ZIP_TWO_ARRAY_LAMBDA  # 2553
    FN_ARRAY_ZIP_THREE_ARRAY = public_builtin_function_pb2.FN_ARRAY_ZIP_THREE_ARRAY  # 2555
    FN_ARRAY_ZIP_THREE_ARRAY_LAMBDA = public_builtin_function_pb2.FN_ARRAY_ZIP_THREE_ARRAY_LAMBDA  # 2556
    FN_ARRAY_ZIP_FOUR_ARRAY = public_builtin_function_pb2.FN_ARRAY_ZIP_FOUR_ARRAY  # 2558
    FN_ARRAY_ZIP_FOUR_ARRAY_LAMBDA = public_builtin_function_pb2.FN_ARRAY_ZIP_FOUR_ARRAY_LAMBDA  # 2559
    FN_JSON_TO_INT64 = public_builtin_function_pb2.FN_JSON_TO_INT64  # 2600
    FN_JSON_TO_BOOL = public_builtin_function_pb2.FN_JSON_TO_BOOL  # 2601
    FN_JSON_TO_STRING = public_builtin_function_pb2.FN_JSON_TO_STRING  # 2602
    FN_JSON_TYPE = public_builtin_function_pb2.FN_JSON_TYPE  # 2603
    FN_JSON_TO_DOUBLE = public_builtin_function_pb2.FN_JSON_TO_DOUBLE  # 2604
    FN_RANGE = public_builtin_function_pb2.FN_RANGE  # 2605
    FN_JSON_LAX_TO_INT64 = public_builtin_function_pb2.FN_JSON_LAX_TO_INT64  # 2606
    FN_JSON_LAX_TO_BOOL = public_builtin_function_pb2.FN_JSON_LAX_TO_BOOL  # 2607
    FN_JSON_LAX_TO_STRING = public_builtin_function_pb2.FN_JSON_LAX_TO_STRING  # 2608
    FN_JSON_LAX_TO_DOUBLE = public_builtin_function_pb2.FN_JSON_LAX_TO_DOUBLE  # 2609
    FN_IS_SOURCE_NODE = public_builtin_function_pb2.FN_IS_SOURCE_NODE  # 2610
    FN_IS_DEST_NODE = public_builtin_function_pb2.FN_IS_DEST_NODE  # 2611
    FN_SAME_GRAPH_ELEMENT = public_builtin_function_pb2.FN_SAME_GRAPH_ELEMENT  # 2612
    FN_PROPERTY_EXISTS = public_builtin_function_pb2.FN_PROPERTY_EXISTS  # 2613
    FN_JSON_ARRAY = public_builtin_function_pb2.FN_JSON_ARRAY  # 2614
    FN_JSON_OBJECT = public_builtin_function_pb2.FN_JSON_OBJECT  # 2615
    FN_JSON_OBJECT_ARRAYS = public_builtin_function_pb2.FN_JSON_OBJECT_ARRAYS  # 2616
    FN_JSON_REMOVE = public_builtin_function_pb2.FN_JSON_REMOVE  # 2617
    FN_JSON_SET = public_builtin_function_pb2.FN_JSON_SET  # 2618
    FN_JSON_STRIP_NULLS = public_builtin_function_pb2.FN_JSON_STRIP_NULLS  # 2619
    FN_JSON_ARRAY_INSERT = public_builtin_function_pb2.FN_JSON_ARRAY_INSERT  # 2620
    FN_JSON_ARRAY_APPEND = public_builtin_function_pb2.FN_JSON_ARRAY_APPEND  # 2621
    FN_ALL_DIFFERENT_GRAPH_ELEMENT = public_builtin_function_pb2.FN_ALL_DIFFERENT_GRAPH_ELEMENT  # 2622
    FN_EQUAL_GRAPH_NODE = public_builtin_function_pb2.FN_EQUAL_GRAPH_NODE  # 2623
    FN_EQUAL_GRAPH_EDGE = public_builtin_function_pb2.FN_EQUAL_GRAPH_EDGE  # 2624
    FN_NOT_EQUAL_GRAPH_NODE = public_builtin_function_pb2.FN_NOT_EQUAL_GRAPH_NODE  # 2625
    FN_NOT_EQUAL_GRAPH_EDGE = public_builtin_function_pb2.FN_NOT_EQUAL_GRAPH_EDGE  # 2626
    FN_JSON_TO_BOOL_ARRAY = public_builtin_function_pb2.FN_JSON_TO_BOOL_ARRAY  # 2627
    FN_JSON_LAX_TO_BOOL_ARRAY = public_builtin_function_pb2.FN_JSON_LAX_TO_BOOL_ARRAY  # 2628
    FN_JSON_TO_FLOAT64_ARRAY = public_builtin_function_pb2.FN_JSON_TO_FLOAT64_ARRAY  # 2629
    FN_JSON_LAX_TO_FLOAT64_ARRAY = public_builtin_function_pb2.FN_JSON_LAX_TO_FLOAT64_ARRAY  # 2630
    FN_JSON_TO_INT64_ARRAY = public_builtin_function_pb2.FN_JSON_TO_INT64_ARRAY  # 2631
    FN_JSON_LAX_TO_INT64_ARRAY = public_builtin_function_pb2.FN_JSON_LAX_TO_INT64_ARRAY  # 2632
    FN_JSON_TO_STRING_ARRAY = public_builtin_function_pb2.FN_JSON_TO_STRING_ARRAY  # 2633
    FN_JSON_LAX_TO_STRING_ARRAY = public_builtin_function_pb2.FN_JSON_LAX_TO_STRING_ARRAY  # 2634
    FN_JSON_TO_FLOAT32 = public_builtin_function_pb2.FN_JSON_TO_FLOAT32  # 2635
    FN_JSON_LAX_TO_FLOAT32 = public_builtin_function_pb2.FN_JSON_LAX_TO_FLOAT32  # 2636
    FN_JSON_TO_FLOAT32_ARRAY = public_builtin_function_pb2.FN_JSON_TO_FLOAT32_ARRAY  # 2637
    FN_JSON_LAX_TO_FLOAT32_ARRAY = public_builtin_function_pb2.FN_JSON_LAX_TO_FLOAT32_ARRAY  # 2638
    FN_JSON_TO_INT32 = public_builtin_function_pb2.FN_JSON_TO_INT32  # 2639
    FN_JSON_LAX_TO_INT32 = public_builtin_function_pb2.FN_JSON_LAX_TO_INT32  # 2640
    FN_JSON_TO_INT32_ARRAY = public_builtin_function_pb2.FN_JSON_TO_INT32_ARRAY  # 2641
    FN_JSON_LAX_TO_INT32_ARRAY = public_builtin_function_pb2.FN_JSON_LAX_TO_INT32_ARRAY  # 2642
    FN_JSON_TO_UINT32 = public_builtin_function_pb2.FN_JSON_TO_UINT32  # 2643
    FN_JSON_LAX_TO_UINT32 = public_builtin_function_pb2.FN_JSON_LAX_TO_UINT32  # 2644
    FN_JSON_TO_UINT32_ARRAY = public_builtin_function_pb2.FN_JSON_TO_UINT32_ARRAY  # 2645
    FN_JSON_LAX_TO_UINT32_ARRAY = public_builtin_function_pb2.FN_JSON_LAX_TO_UINT32_ARRAY  # 2646
    FN_JSON_TO_UINT64 = public_builtin_function_pb2.FN_JSON_TO_UINT64  # 2647
    FN_JSON_LAX_TO_UINT64 = public_builtin_function_pb2.FN_JSON_LAX_TO_UINT64  # 2648
    FN_JSON_TO_UINT64_ARRAY = public_builtin_function_pb2.FN_JSON_TO_UINT64_ARRAY  # 2649
    FN_JSON_LAX_TO_UINT64_ARRAY = public_builtin_function_pb2.FN_JSON_LAX_TO_UINT64_ARRAY  # 2650
    FN_JSON_CONTAINS = public_builtin_function_pb2.FN_JSON_CONTAINS  # 2651
    FN_LABELS_GRAPH_ELEMENT = public_builtin_function_pb2.FN_LABELS_GRAPH_ELEMENT  # 2653
    FN_PROPERTY_NAMES_GRAPH_ELEMENT = public_builtin_function_pb2.FN_PROPERTY_NAMES_GRAPH_ELEMENT  # 2654
    FN_TYPEOF_GRAPH_ELEMENT = public_builtin_function_pb2.FN_TYPEOF_GRAPH_ELEMENT  # 2655
    FN_JSON_KEYS = public_builtin_function_pb2.FN_JSON_KEYS  # 2656
    FN_NEW_UUID = public_builtin_function_pb2.FN_NEW_UUID  # 2657
    FN_ELEMENT_ID_GRAPH_ELEMENT = public_builtin_function_pb2.FN_ELEMENT_ID_GRAPH_ELEMENT  # 2658
    FN_SOURCE_NODE_ID = public_builtin_function_pb2.FN_SOURCE_NODE_ID  # 2659
    FN_DESTINATION_NODE_ID = public_builtin_function_pb2.FN_DESTINATION_NODE_ID  # 2660
    FN_ELEMENT_DEFINITION_NAME = public_builtin_function_pb2.FN_ELEMENT_DEFINITION_NAME  # 2661
    FN_PATH_LENGTH = public_builtin_function_pb2.FN_PATH_LENGTH  # 2662
    FN_PATH_NODES = public_builtin_function_pb2.FN_PATH_NODES  # 2663
    FN_PATH_EDGES = public_builtin_function_pb2.FN_PATH_EDGES  # 2664
    FN_PATH_FIRST = public_builtin_function_pb2.FN_PATH_FIRST  # 2665
    FN_PATH_LAST = public_builtin_function_pb2.FN_PATH_LAST  # 2666
    FN_CONCAT_PATH = public_builtin_function_pb2.FN_CONCAT_PATH  # 2667
    FN_CONCAT_OP_PATH = public_builtin_function_pb2.FN_CONCAT_OP_PATH  # 2668
    FN_PATH_CREATE = public_builtin_function_pb2.FN_PATH_CREATE  # 2669
    FN_UNCHECKED_CONCAT_PATH = public_builtin_function_pb2.FN_UNCHECKED_CONCAT_PATH  # 2670
    FN_UNCHECKED_PATH_CREATE = public_builtin_function_pb2.FN_UNCHECKED_PATH_CREATE  # 2671
    FN_IS_ACYCLIC = public_builtin_function_pb2.FN_IS_ACYCLIC  # 2672
    FN_IS_TRAIL = public_builtin_function_pb2.FN_IS_TRAIL  # 2673
    FN_IS_SIMPLE = public_builtin_function_pb2.FN_IS_SIMPLE  # 2674
    FN_DYNAMIC_PROPERTY_EQUALS = public_builtin_function_pb2.FN_DYNAMIC_PROPERTY_EQUALS  # 2683
    FN_FROM_PROTO_DURATION = public_builtin_function_pb2.FN_FROM_PROTO_DURATION  # 2684
    FN_FROM_PROTO_IDEMPOTENT_INTERVAL = public_builtin_function_pb2.FN_FROM_PROTO_IDEMPOTENT_INTERVAL  # 2685
    FN_APPLY = public_builtin_function_pb2.FN_APPLY  # 2686
    FN_JSON_FLATTEN = public_builtin_function_pb2.FN_JSON_FLATTEN  # 2687
    FN_TO_PROTO_INTERVAL = public_builtin_function_pb2.FN_TO_PROTO_INTERVAL  # 2688
    FN_TO_PROTO_IDEMPOTENT_DURATION = public_builtin_function_pb2.FN_TO_PROTO_IDEMPOTENT_DURATION  # 2689
    FN_ZSTD_COMPRESS_FROM_BYTES = public_builtin_function_pb2.FN_ZSTD_COMPRESS_FROM_BYTES  # 2690
    FN_ZSTD_COMPRESS_FROM_STRING = public_builtin_function_pb2.FN_ZSTD_COMPRESS_FROM_STRING  # 2691
    FN_ZSTD_DECOMPRESS_TO_BYTES = public_builtin_function_pb2.FN_ZSTD_DECOMPRESS_TO_BYTES  # 2692
    FN_ZSTD_DECOMPRESS_TO_STRING = public_builtin_function_pb2.FN_ZSTD_DECOMPRESS_TO_STRING  # 2693
    FN_D3A_COUNT_TO_HLL = public_builtin_function_pb2.FN_D3A_COUNT_TO_HLL  # 2700
    FN_ELEMENTWISE_SUM_INT32 = public_builtin_function_pb2.FN_ELEMENTWISE_SUM_INT32  # 2746
    FN_ELEMENTWISE_SUM_INT64 = public_builtin_function_pb2.FN_ELEMENTWISE_SUM_INT64  # 2747
    FN_ELEMENTWISE_SUM_UINT32 = public_builtin_function_pb2.FN_ELEMENTWISE_SUM_UINT32  # 2748
    FN_ELEMENTWISE_SUM_UINT64 = public_builtin_function_pb2.FN_ELEMENTWISE_SUM_UINT64  # 2749
    FN_ELEMENTWISE_SUM_FLOAT = public_builtin_function_pb2.FN_ELEMENTWISE_SUM_FLOAT  # 2750
    FN_ELEMENTWISE_SUM_DOUBLE = public_builtin_function_pb2.FN_ELEMENTWISE_SUM_DOUBLE  # 2751
    FN_ELEMENTWISE_SUM_NUMERIC = public_builtin_function_pb2.FN_ELEMENTWISE_SUM_NUMERIC  # 2752
    FN_ELEMENTWISE_SUM_BIGNUMERIC = public_builtin_function_pb2.FN_ELEMENTWISE_SUM_BIGNUMERIC  # 2753
    FN_ELEMENTWISE_SUM_INTERVAL = public_builtin_function_pb2.FN_ELEMENTWISE_SUM_INTERVAL  # 2754
    FN_ELEMENTWISE_AVG_INT32 = public_builtin_function_pb2.FN_ELEMENTWISE_AVG_INT32  # 2755
    FN_ELEMENTWISE_AVG_INT64 = public_builtin_function_pb2.FN_ELEMENTWISE_AVG_INT64  # 2756
    FN_ELEMENTWISE_AVG_UINT32 = public_builtin_function_pb2.FN_ELEMENTWISE_AVG_UINT32  # 2757
    FN_ELEMENTWISE_AVG_UINT64 = public_builtin_function_pb2.FN_ELEMENTWISE_AVG_UINT64  # 2758
    FN_ELEMENTWISE_AVG_FLOAT = public_builtin_function_pb2.FN_ELEMENTWISE_AVG_FLOAT  # 2759
    FN_ELEMENTWISE_AVG_DOUBLE = public_builtin_function_pb2.FN_ELEMENTWISE_AVG_DOUBLE  # 2760
    FN_ELEMENTWISE_AVG_NUMERIC = public_builtin_function_pb2.FN_ELEMENTWISE_AVG_NUMERIC  # 2761
    FN_ELEMENTWISE_AVG_BIGNUMERIC = public_builtin_function_pb2.FN_ELEMENTWISE_AVG_BIGNUMERIC  # 2762
    FN_ELEMENTWISE_AVG_INTERVAL = public_builtin_function_pb2.FN_ELEMENTWISE_AVG_INTERVAL  # 2763
    FN_BIT_AND_BYTES = public_builtin_function_pb2.FN_BIT_AND_BYTES  # 2780
    FN_BIT_OR_BYTES = public_builtin_function_pb2.FN_BIT_OR_BYTES  # 2781
    FN_BIT_XOR_BYTES = public_builtin_function_pb2.FN_BIT_XOR_BYTES  # 2782
    FN_KLL_QUANTILES_MERGE_RELATIVE_RANK_INT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_MERGE_RELATIVE_RANK_INT64  # 2797
    FN_KLL_QUANTILES_MERGE_RELATIVE_RANK_UINT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_MERGE_RELATIVE_RANK_UINT64  # 2798
    FN_KLL_QUANTILES_MERGE_RELATIVE_RANK_DOUBLE = public_builtin_function_pb2.FN_KLL_QUANTILES_MERGE_RELATIVE_RANK_DOUBLE  # 2799
    FN_DIFFERENTIAL_PRIVACY_COUNT = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_COUNT  # 2800
    FN_DIFFERENTIAL_PRIVACY_COUNT_STAR = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_COUNT_STAR  # 2801
    FN_DIFFERENTIAL_PRIVACY_SUM_INT64 = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_SUM_INT64  # 2802
    FN_DIFFERENTIAL_PRIVACY_SUM_UINT64 = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_SUM_UINT64  # 2803
    FN_DIFFERENTIAL_PRIVACY_SUM_DOUBLE = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_SUM_DOUBLE  # 2804
    FN_DIFFERENTIAL_PRIVACY_SUM_NUMERIC = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_SUM_NUMERIC  # 2805
    FN_DIFFERENTIAL_PRIVACY_AVG_DOUBLE = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_AVG_DOUBLE  # 2806
    FN_DIFFERENTIAL_PRIVACY_AVG_NUMERIC = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_AVG_NUMERIC  # 2807
    FN_DIFFERENTIAL_PRIVACY_VAR_POP_DOUBLE = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_VAR_POP_DOUBLE  # 2808
    FN_DIFFERENTIAL_PRIVACY_VAR_POP_DOUBLE_ARRAY = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_VAR_POP_DOUBLE_ARRAY  # 2809
    FN_DIFFERENTIAL_PRIVACY_STDDEV_POP_DOUBLE = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_STDDEV_POP_DOUBLE  # 2810
    FN_DIFFERENTIAL_PRIVACY_STDDEV_POP_DOUBLE_ARRAY = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_STDDEV_POP_DOUBLE_ARRAY  # 2811
    FN_DIFFERENTIAL_PRIVACY_PERCENTILE_CONT_DOUBLE = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_PERCENTILE_CONT_DOUBLE  # 2812
    FN_DIFFERENTIAL_PRIVACY_PERCENTILE_CONT_DOUBLE_ARRAY = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_PERCENTILE_CONT_DOUBLE_ARRAY  # 2813
    FN_DIFFERENTIAL_PRIVACY_SUM_REPORT_JSON_INT64 = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_SUM_REPORT_JSON_INT64  # 2814
    FN_DIFFERENTIAL_PRIVACY_SUM_REPORT_JSON_DOUBLE = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_SUM_REPORT_JSON_DOUBLE  # 2815
    FN_DIFFERENTIAL_PRIVACY_SUM_REPORT_JSON_UINT64 = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_SUM_REPORT_JSON_UINT64  # 2816
    FN_DIFFERENTIAL_PRIVACY_SUM_REPORT_PROTO_INT64 = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_SUM_REPORT_PROTO_INT64  # 2817
    FN_DIFFERENTIAL_PRIVACY_SUM_REPORT_PROTO_DOUBLE = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_SUM_REPORT_PROTO_DOUBLE  # 2818
    FN_DIFFERENTIAL_PRIVACY_SUM_REPORT_PROTO_UINT64 = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_SUM_REPORT_PROTO_UINT64  # 2819
    FN_DIFFERENTIAL_PRIVACY_QUANTILES_DOUBLE = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_QUANTILES_DOUBLE  # 2820
    FN_DIFFERENTIAL_PRIVACY_QUANTILES_DOUBLE_ARRAY = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_QUANTILES_DOUBLE_ARRAY  # 2821
    FN_DIFFERENTIAL_PRIVACY_COUNT_REPORT_JSON = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_COUNT_REPORT_JSON  # 2822
    FN_DIFFERENTIAL_PRIVACY_COUNT_REPORT_PROTO = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_COUNT_REPORT_PROTO  # 2823
    FN_DIFFERENTIAL_PRIVACY_COUNT_STAR_REPORT_JSON = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_COUNT_STAR_REPORT_JSON  # 2824
    FN_DIFFERENTIAL_PRIVACY_COUNT_STAR_REPORT_PROTO = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_COUNT_STAR_REPORT_PROTO  # 2825
    FN_DIFFERENTIAL_PRIVACY_QUANTILES_DOUBLE_REPORT_JSON = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_QUANTILES_DOUBLE_REPORT_JSON  # 2826
    FN_DIFFERENTIAL_PRIVACY_QUANTILES_DOUBLE_REPORT_PROTO = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_QUANTILES_DOUBLE_REPORT_PROTO  # 2827
    FN_DIFFERENTIAL_PRIVACY_QUANTILES_DOUBLE_ARRAY_REPORT_JSON = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_QUANTILES_DOUBLE_ARRAY_REPORT_JSON  # 2828
    FN_DIFFERENTIAL_PRIVACY_QUANTILES_DOUBLE_ARRAY_REPORT_PROTO = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_QUANTILES_DOUBLE_ARRAY_REPORT_PROTO  # 2829
    FN_DIFFERENTIAL_PRIVACY_AVG_DOUBLE_REPORT_JSON = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_AVG_DOUBLE_REPORT_JSON  # 2830
    FN_DIFFERENTIAL_PRIVACY_AVG_DOUBLE_REPORT_PROTO = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_AVG_DOUBLE_REPORT_PROTO  # 2831
    FN_DIFFERENTIAL_PRIVACY_APPROX_COUNT_DISTINCT = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_APPROX_COUNT_DISTINCT  # 2832
    FN_DIFFERENTIAL_PRIVACY_APPROX_COUNT_DISTINCT_REPORT_JSON = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_APPROX_COUNT_DISTINCT_REPORT_JSON  # 2833
    FN_DIFFERENTIAL_PRIVACY_APPROX_COUNT_DISTINCT_REPORT_PROTO = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_APPROX_COUNT_DISTINCT_REPORT_PROTO  # 2834
    FN_DIFFERENTIAL_PRIVACY_INIT_FOR_DP_APPROX_COUNT_DISTINCT = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_INIT_FOR_DP_APPROX_COUNT_DISTINCT  # 2835
    FN_DIFFERENTIAL_PRIVACY_MERGE_PARTIAL_FOR_DP_APPROX_COUNT_DISTINCT = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_MERGE_PARTIAL_FOR_DP_APPROX_COUNT_DISTINCT  # 2836
    FN_DIFFERENTIAL_PRIVACY_EXTRACT_FOR_DP_APPROX_COUNT_DISTINCT = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_EXTRACT_FOR_DP_APPROX_COUNT_DISTINCT  # 2837
    FN_DIFFERENTIAL_PRIVACY_EXTRACT_FOR_DP_APPROX_COUNT_DISTINCT_REPORT_JSON = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_EXTRACT_FOR_DP_APPROX_COUNT_DISTINCT_REPORT_JSON  # 2838
    FN_DIFFERENTIAL_PRIVACY_EXTRACT_FOR_DP_APPROX_COUNT_DISTINCT_REPORT_PROTO = public_builtin_function_pb2.FN_DIFFERENTIAL_PRIVACY_EXTRACT_FOR_DP_APPROX_COUNT_DISTINCT_REPORT_PROTO  # 2839
    FN_RANGE_IS_START_UNBOUNDED = public_builtin_function_pb2.FN_RANGE_IS_START_UNBOUNDED  # 2900
    FN_RANGE_IS_END_UNBOUNDED = public_builtin_function_pb2.FN_RANGE_IS_END_UNBOUNDED  # 2902
    FN_RANGE_START = public_builtin_function_pb2.FN_RANGE_START  # 2904
    FN_RANGE_END = public_builtin_function_pb2.FN_RANGE_END  # 2906
    FN_RANGE_OVERLAPS = public_builtin_function_pb2.FN_RANGE_OVERLAPS  # 2908
    FN_RANGE_INTERSECT = public_builtin_function_pb2.FN_RANGE_INTERSECT  # 2912
    FN_GENERATE_DATE_RANGE_ARRAY = public_builtin_function_pb2.FN_GENERATE_DATE_RANGE_ARRAY  # 2916
    FN_GENERATE_DATETIME_RANGE_ARRAY = public_builtin_function_pb2.FN_GENERATE_DATETIME_RANGE_ARRAY  # 2917
    FN_GENERATE_TIMESTAMP_RANGE_ARRAY = public_builtin_function_pb2.FN_GENERATE_TIMESTAMP_RANGE_ARRAY  # 2918
    FN_RANGE_CONTAINS_RANGE = public_builtin_function_pb2.FN_RANGE_CONTAINS_RANGE  # 2919
    FN_RANGE_CONTAINS_ELEMENT = public_builtin_function_pb2.FN_RANGE_CONTAINS_ELEMENT  # 2920
    FN_MAP_FROM_ARRAY = public_builtin_function_pb2.FN_MAP_FROM_ARRAY  # 3000
    FN_MAP_ENTRIES_SORTED = public_builtin_function_pb2.FN_MAP_ENTRIES_SORTED  # 3001
    FN_MAP_ENTRIES_UNSORTED = public_builtin_function_pb2.FN_MAP_ENTRIES_UNSORTED  # 3002
    FN_MAP_GET = public_builtin_function_pb2.FN_MAP_GET  # 3003
    FN_MAP_SUBSCRIPT = public_builtin_function_pb2.FN_MAP_SUBSCRIPT  # 3004
    FN_MAP_SUBSCRIPT_WITH_KEY = public_builtin_function_pb2.FN_MAP_SUBSCRIPT_WITH_KEY  # 3005
    FN_MAP_CONTAINS_KEY = public_builtin_function_pb2.FN_MAP_CONTAINS_KEY  # 3006
    FN_MAP_KEYS_SORTED = public_builtin_function_pb2.FN_MAP_KEYS_SORTED  # 3007
    FN_MAP_KEYS_UNSORTED = public_builtin_function_pb2.FN_MAP_KEYS_UNSORTED  # 3008
    FN_MAP_VALUES_SORTED = public_builtin_function_pb2.FN_MAP_VALUES_SORTED  # 3009
    FN_MAP_VALUES_UNSORTED = public_builtin_function_pb2.FN_MAP_VALUES_UNSORTED  # 3010
    FN_MAP_VALUES_SORTED_BY_KEY = public_builtin_function_pb2.FN_MAP_VALUES_SORTED_BY_KEY  # 3011
    FN_MAP_EMPTY = public_builtin_function_pb2.FN_MAP_EMPTY  # 3012
    FN_MAP_INSERT = public_builtin_function_pb2.FN_MAP_INSERT  # 3013
    FN_MAP_INSERT_OR_REPLACE = public_builtin_function_pb2.FN_MAP_INSERT_OR_REPLACE  # 3014
    FN_MAP_REPLACE_KV_PAIRS = public_builtin_function_pb2.FN_MAP_REPLACE_KV_PAIRS  # 3015
    FN_MAP_REPLACE_K_REPEATED_V_LAMBDA = public_builtin_function_pb2.FN_MAP_REPLACE_K_REPEATED_V_LAMBDA  # 3016
    FN_MAP_CARDINALITY = public_builtin_function_pb2.FN_MAP_CARDINALITY  # 3017
    FN_MAP_DELETE = public_builtin_function_pb2.FN_MAP_DELETE  # 3018
    FN_MAP_FILTER = public_builtin_function_pb2.FN_MAP_FILTER  # 3019
    FN_MAP_SAFE_SUBSCRIPT_WITH_KEY = public_builtin_function_pb2.FN_MAP_SAFE_SUBSCRIPT_WITH_KEY  # 3020
    FN_AGG = public_builtin_function_pb2.FN_AGG  # 3100
    FN_FIRST_AGG = public_builtin_function_pb2.FN_FIRST_AGG  # 3200
    FN_LAST_AGG = public_builtin_function_pb2.FN_LAST_AGG  # 3201
    FN_MATCH_NUMBER = public_builtin_function_pb2.FN_MATCH_NUMBER  # 3202
    FN_MATCH_ROW_NUMBER = public_builtin_function_pb2.FN_MATCH_ROW_NUMBER  # 3203
    FN_CLASSIFIER = public_builtin_function_pb2.FN_CLASSIFIER  # 3204
    FN_NEXT = public_builtin_function_pb2.FN_NEXT  # 3205
    FN_PREV = public_builtin_function_pb2.FN_PREV  # 3206
    FN_KLL_QUANTILES_EXTRACT_RELATIVE_RANK_INT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_EXTRACT_RELATIVE_RANK_INT64  # 3300
    FN_KLL_QUANTILES_EXTRACT_RELATIVE_RANK_UINT64 = public_builtin_function_pb2.FN_KLL_QUANTILES_EXTRACT_RELATIVE_RANK_UINT64  # 3301
    FN_KLL_QUANTILES_EXTRACT_RELATIVE_RANK_DOUBLE = public_builtin_function_pb2.FN_KLL_QUANTILES_EXTRACT_RELATIVE_RANK_DOUBLE  # 3302
    FN_TO_JSON_PATH_AS_OBJECT = public_builtin_function_pb2.FN_TO_JSON_PATH_AS_OBJECT  # 3405
    FN_TO_JSON_UNSUPPORTED_FIELDS_PATH_AS_OBJECT = public_builtin_function_pb2.FN_TO_JSON_UNSUPPORTED_FIELDS_PATH_AS_OBJECT  # 3406
    FN_VECTOR_SEARCH_TVF = public_builtin_function_pb2.FN_VECTOR_SEARCH_TVF  # 4000
    FN_TUMBLE = public_builtin_function_pb2.FN_TUMBLE  # 4001
    FN_HOP = public_builtin_function_pb2.FN_HOP  # 4002
    FN_TUMBLE_NO_TIMESTAMP_COL = public_builtin_function_pb2.FN_TUMBLE_NO_TIMESTAMP_COL  # 4003
    FN_HOP_NO_TIMESTAMP_COL = public_builtin_function_pb2.FN_HOP_NO_TIMESTAMP_COL  # 4004


class KnownErrorMode(IntEnum):
    """
    Auto-generated IntEnum for protobuf KnownErrorMode.
    
    Values are directly compatible with protobuf integer constants.
    """

    NONE = compliance_known_error_pb2.NONE  # 0
    ALLOW_UNIMPLEMENTED = compliance_known_error_pb2.ALLOW_UNIMPLEMENTED  # 10
    ALLOW_ERROR = compliance_known_error_pb2.ALLOW_ERROR  # 20
    ALLOW_ERROR_OR_WRONG_ANSWER = compliance_known_error_pb2.ALLOW_ERROR_OR_WRONG_ANSWER  # 30
    CRASHES_DO_NOT_RUN = compliance_known_error_pb2.CRASHES_DO_NOT_RUN  # 100


class LanguageFeature(IntEnum):
    """
    Auto-generated IntEnum for protobuf LanguageFeature.
    
    Values are directly compatible with protobuf integer constants.
    """

    __LanguageFeature__switch_must_have_a_default__ = public_options_pb2.__LanguageFeature__switch_must_have_a_default__  # -1
    FEATURE_ANALYTIC_FUNCTIONS = public_options_pb2.FEATURE_ANALYTIC_FUNCTIONS  # 1
    FEATURE_TABLESAMPLE = public_options_pb2.FEATURE_TABLESAMPLE  # 2
    FEATURE_DISALLOW_GROUP_BY_FLOAT = public_options_pb2.FEATURE_DISALLOW_GROUP_BY_FLOAT  # 3
    FEATURE_TIMESTAMP_NANOS = public_options_pb2.FEATURE_TIMESTAMP_NANOS  # 5
    FEATURE_DML_UPDATE_WITH_JOIN = public_options_pb2.FEATURE_DML_UPDATE_WITH_JOIN  # 6
    FEATURE_TABLE_VALUED_FUNCTIONS = public_options_pb2.FEATURE_TABLE_VALUED_FUNCTIONS  # 8
    FEATURE_CREATE_AGGREGATE_FUNCTION = public_options_pb2.FEATURE_CREATE_AGGREGATE_FUNCTION  # 9
    FEATURE_CREATE_TABLE_FUNCTION = public_options_pb2.FEATURE_CREATE_TABLE_FUNCTION  # 10
    FEATURE_GROUP_BY_ROLLUP = public_options_pb2.FEATURE_GROUP_BY_ROLLUP  # 12
    FEATURE_TEMPLATE_FUNCTIONS = public_options_pb2.FEATURE_TEMPLATE_FUNCTIONS  # 13
    FEATURE_CREATE_TABLE_PARTITION_BY = public_options_pb2.FEATURE_CREATE_TABLE_PARTITION_BY  # 14
    FEATURE_CREATE_TABLE_CLUSTER_BY = public_options_pb2.FEATURE_CREATE_TABLE_CLUSTER_BY  # 15
    FEATURE_NUMERIC_TYPE = public_options_pb2.FEATURE_NUMERIC_TYPE  # 16
    FEATURE_CREATE_TABLE_NOT_NULL = public_options_pb2.FEATURE_CREATE_TABLE_NOT_NULL  # 17
    FEATURE_CREATE_TABLE_FIELD_ANNOTATIONS = public_options_pb2.FEATURE_CREATE_TABLE_FIELD_ANNOTATIONS  # 18
    FEATURE_CREATE_TABLE_AS_SELECT_COLUMN_LIST = public_options_pb2.FEATURE_CREATE_TABLE_AS_SELECT_COLUMN_LIST  # 19
    FEATURE_DISALLOW_NULL_PRIMARY_KEYS = public_options_pb2.FEATURE_DISALLOW_NULL_PRIMARY_KEYS  # 20
    FEATURE_DISALLOW_PRIMARY_KEY_UPDATES = public_options_pb2.FEATURE_DISALLOW_PRIMARY_KEY_UPDATES  # 21
    FEATURE_TABLESAMPLE_FROM_TABLE_VALUED_FUNCTIONS = public_options_pb2.FEATURE_TABLESAMPLE_FROM_TABLE_VALUED_FUNCTIONS  # 22
    FEATURE_ENCRYPTION = public_options_pb2.FEATURE_ENCRYPTION  # 23
    FEATURE_ANONYMIZATION = public_options_pb2.FEATURE_ANONYMIZATION  # 24
    FEATURE_GEOGRAPHY = public_options_pb2.FEATURE_GEOGRAPHY  # 25
    FEATURE_STRATIFIED_RESERVOIR_TABLESAMPLE = public_options_pb2.FEATURE_STRATIFIED_RESERVOIR_TABLESAMPLE  # 26
    FEATURE_FOREIGN_KEYS = public_options_pb2.FEATURE_FOREIGN_KEYS  # 27
    FEATURE_BETWEEN_UINT64_INT64 = public_options_pb2.FEATURE_BETWEEN_UINT64_INT64  # 28
    FEATURE_CHECK_CONSTRAINT = public_options_pb2.FEATURE_CHECK_CONSTRAINT  # 29
    FEATURE_PARAMETERS_IN_GRANTEE_LIST = public_options_pb2.FEATURE_PARAMETERS_IN_GRANTEE_LIST  # 30
    FEATURE_NAMED_ARGUMENTS = public_options_pb2.FEATURE_NAMED_ARGUMENTS  # 31
    FEATURE_ALLOW_LEGACY_ROW_ACCESS_POLICY_SYNTAX = public_options_pb2.FEATURE_ALLOW_LEGACY_ROW_ACCESS_POLICY_SYNTAX  # 32
    FEATURE_CREATE_MATERIALIZED_VIEW_PARTITION_BY = public_options_pb2.FEATURE_CREATE_MATERIALIZED_VIEW_PARTITION_BY  # 33
    FEATURE_CREATE_MATERIALIZED_VIEW_CLUSTER_BY = public_options_pb2.FEATURE_CREATE_MATERIALIZED_VIEW_CLUSTER_BY  # 34
    FEATURE_CREATE_EXTERNAL_TABLE_WITH_TABLE_ELEMENT_LIST = public_options_pb2.FEATURE_CREATE_EXTERNAL_TABLE_WITH_TABLE_ELEMENT_LIST  # 35
    FEATURE_UNENFORCED_PRIMARY_KEYS = public_options_pb2.FEATURE_UNENFORCED_PRIMARY_KEYS  # 40
    FEATURE_BIGNUMERIC_TYPE = public_options_pb2.FEATURE_BIGNUMERIC_TYPE  # 41
    FEATURE_EXTENDED_TYPES = public_options_pb2.FEATURE_EXTENDED_TYPES  # 42
    FEATURE_JSON_TYPE = public_options_pb2.FEATURE_JSON_TYPE  # 43
    FEATURE_CREATE_EXTERNAL_TABLE_WITH_PARTITION_COLUMNS = public_options_pb2.FEATURE_CREATE_EXTERNAL_TABLE_WITH_PARTITION_COLUMNS  # 47
    FEATURE_INTERVAL_TYPE = public_options_pb2.FEATURE_INTERVAL_TYPE  # 49
    FEATURE_EXTRACT_ONEOF_CASE = public_options_pb2.FEATURE_EXTRACT_ONEOF_CASE  # 50
    FEATURE_TOKENIZED_SEARCH = public_options_pb2.FEATURE_TOKENIZED_SEARCH  # 51
    FEATURE_JSON_STRICT_NUMBER_PARSING = public_options_pb2.FEATURE_JSON_STRICT_NUMBER_PARSING  # 52
    FEATURE_ENABLE_CONSTANT_EXPRESSION_IN_JSON_PATH = public_options_pb2.FEATURE_ENABLE_CONSTANT_EXPRESSION_IN_JSON_PATH  # 53
    FEATURE_PARAMETERIZED_TYPES = public_options_pb2.FEATURE_PARAMETERIZED_TYPES  # 56
    FEATURE_CREATE_TABLE_LIKE = public_options_pb2.FEATURE_CREATE_TABLE_LIKE  # 57
    FEATURE_JSON_ARRAY_FUNCTIONS = public_options_pb2.FEATURE_JSON_ARRAY_FUNCTIONS  # 58
    FEATURE_CREATE_VIEW_WITH_COLUMN_LIST = public_options_pb2.FEATURE_CREATE_VIEW_WITH_COLUMN_LIST  # 59
    FEATURE_CREATE_TABLE_CLONE = public_options_pb2.FEATURE_CREATE_TABLE_CLONE  # 60
    FEATURE_CLONE_DATA = public_options_pb2.FEATURE_CLONE_DATA  # 61
    FEATURE_ALTER_COLUMN_SET_DATA_TYPE = public_options_pb2.FEATURE_ALTER_COLUMN_SET_DATA_TYPE  # 62
    FEATURE_CREATE_SNAPSHOT_TABLE = public_options_pb2.FEATURE_CREATE_SNAPSHOT_TABLE  # 63
    FEATURE_FUNCTION_ARGUMENTS_WITH_DEFAULTS = public_options_pb2.FEATURE_FUNCTION_ARGUMENTS_WITH_DEFAULTS  # 64
    FEATURE_CREATE_EXTERNAL_TABLE_WITH_CONNECTION = public_options_pb2.FEATURE_CREATE_EXTERNAL_TABLE_WITH_CONNECTION  # 65
    FEATURE_CREATE_TABLE_COPY = public_options_pb2.FEATURE_CREATE_TABLE_COPY  # 66
    FEATURE_ALTER_TABLE_RENAME_COLUMN = public_options_pb2.FEATURE_ALTER_TABLE_RENAME_COLUMN  # 67
    FEATURE_JSON_VALUE_EXTRACTION_FUNCTIONS = public_options_pb2.FEATURE_JSON_VALUE_EXTRACTION_FUNCTIONS  # 68
    FEATURE_DISALLOW_LEGACY_UNICODE_COLLATION = public_options_pb2.FEATURE_DISALLOW_LEGACY_UNICODE_COLLATION  # 69
    FEATURE_ALLOW_MISSING_PATH_EXPRESSION_IN_ALTER_DDL = public_options_pb2.FEATURE_ALLOW_MISSING_PATH_EXPRESSION_IN_ALTER_DDL  # 70
    FEATURE_TIME_BUCKET_FUNCTIONS = public_options_pb2.FEATURE_TIME_BUCKET_FUNCTIONS  # 71
    FEATURE_INVERSE_TRIG_FUNCTIONS = public_options_pb2.FEATURE_INVERSE_TRIG_FUNCTIONS  # 72
    FEATURE_RANGE_TYPE = public_options_pb2.FEATURE_RANGE_TYPE  # 73
    FEATURE_NON_SQL_PROCEDURE = public_options_pb2.FEATURE_NON_SQL_PROCEDURE  # 75
    FEATURE_ROUND_WITH_ROUNDING_MODE = public_options_pb2.FEATURE_ROUND_WITH_ROUNDING_MODE  # 76
    FEATURE_CBRT_FUNCTIONS = public_options_pb2.FEATURE_CBRT_FUNCTIONS  # 77
    FEATURE_SPANNER_LEGACY_DDL = public_options_pb2.FEATURE_SPANNER_LEGACY_DDL  # 78
    FEATURE_DISABLE_ARRAY_MIN_AND_MAX = public_options_pb2.FEATURE_DISABLE_ARRAY_MIN_AND_MAX  # 79
    FEATURE_STRICT_FUNCTION_DEFAULT_ARG_TYPE_COERCION = public_options_pb2.FEATURE_STRICT_FUNCTION_DEFAULT_ARG_TYPE_COERCION  # 80
    FEATURE_JSON_LAX_VALUE_EXTRACTION_FUNCTIONS = public_options_pb2.FEATURE_JSON_LAX_VALUE_EXTRACTION_FUNCTIONS  # 81
    FEATURE_PROTO_BASE = public_options_pb2.FEATURE_PROTO_BASE  # 82
    FEATURE_ANONYMIZATION_THRESHOLDING = public_options_pb2.FEATURE_ANONYMIZATION_THRESHOLDING  # 83
    FEATURE_DISABLE_ARRAY_SUM_AND_AVG = public_options_pb2.FEATURE_DISABLE_ARRAY_SUM_AND_AVG  # 84
    FEATURE_ANONYMIZATION_CASE_INSENSITIVE_OPTIONS = public_options_pb2.FEATURE_ANONYMIZATION_CASE_INSENSITIVE_OPTIONS  # 85
    FEATURE_CREATE_VIEWS_WITH_COLUMN_OPTIONS = public_options_pb2.FEATURE_CREATE_VIEWS_WITH_COLUMN_OPTIONS  # 86
    FEATURE_ALTER_VIEWS_ALTER_COLUMN_SET_OPTIONS = public_options_pb2.FEATURE_ALTER_VIEWS_ALTER_COLUMN_SET_OPTIONS  # 87
    FEATURE_DIFFERENTIAL_PRIVACY = public_options_pb2.FEATURE_DIFFERENTIAL_PRIVACY  # 88
    FEATURE_DIFFERENTIAL_PRIVACY_REPORT_FUNCTIONS = public_options_pb2.FEATURE_DIFFERENTIAL_PRIVACY_REPORT_FUNCTIONS  # 89
    FEATURE_DIFFERENTIAL_PRIVACY_THRESHOLDING = public_options_pb2.FEATURE_DIFFERENTIAL_PRIVACY_THRESHOLDING  # 90
    FEATURE_CREATE_TABLE_WITH_CONNECTION = public_options_pb2.FEATURE_CREATE_TABLE_WITH_CONNECTION  # 91
    FEATURE_AGGREGATION_THRESHOLD = public_options_pb2.FEATURE_AGGREGATION_THRESHOLD  # 92
    FEATURE_JSON_CONSTRUCTOR_FUNCTIONS = public_options_pb2.FEATURE_JSON_CONSTRUCTOR_FUNCTIONS  # 93
    FEATURE_DISABLE_OUTER_JOIN_ARRAY = public_options_pb2.FEATURE_DISABLE_OUTER_JOIN_ARRAY  # 94
    FEATURE_DIFFERENTIAL_PRIVACY_MAX_ROWS_CONTRIBUTED = public_options_pb2.FEATURE_DIFFERENTIAL_PRIVACY_MAX_ROWS_CONTRIBUTED  # 95
    FEATURE_EXTERNAL_SECURITY_PROCEDURE = public_options_pb2.FEATURE_EXTERNAL_SECURITY_PROCEDURE  # 96
    FEATURE_CREATE_MATERIALIZED_VIEW_AS_REPLICA_OF = public_options_pb2.FEATURE_CREATE_MATERIALIZED_VIEW_AS_REPLICA_OF  # 97
    FEATURE_JSON_MUTATOR_FUNCTIONS = public_options_pb2.FEATURE_JSON_MUTATOR_FUNCTIONS  # 98
    FEATURE_DIFFERENTIAL_PRIVACY_PUBLIC_GROUPS = public_options_pb2.FEATURE_DIFFERENTIAL_PRIVACY_PUBLIC_GROUPS  # 100
    FEATURE_PIPES = public_options_pb2.FEATURE_PIPES  # 101
    FEATURE_ENABLE_ALTER_ARRAY_OPTIONS = public_options_pb2.FEATURE_ENABLE_ALTER_ARRAY_OPTIONS  # 102
    FEATURE_GENERATED_BY_DEFAULT = public_options_pb2.FEATURE_GENERATED_BY_DEFAULT  # 103
    FEATURE_DIFFERENTIAL_PRIVACY_MIN_PRIVACY_UNITS_PER_GROUP = public_options_pb2.FEATURE_DIFFERENTIAL_PRIVACY_MIN_PRIVACY_UNITS_PER_GROUP  # 104
    FEATURE_ENFORCE_MICROS_MODE_IN_INTERVAL_TYPE = public_options_pb2.FEATURE_ENFORCE_MICROS_MODE_IN_INTERVAL_TYPE  # 105
    FEATURE_ALTER_COLUMN_DROP_GENERATED = public_options_pb2.FEATURE_ALTER_COLUMN_DROP_GENERATED  # 106
    FEATURE_DISABLE_TEXTMAPPER_PARSER = public_options_pb2.FEATURE_DISABLE_TEXTMAPPER_PARSER  # 107
    FEATURE_IDENTITY_COLUMNS = public_options_pb2.FEATURE_IDENTITY_COLUMNS  # 109
    FEATURE_EXTERNAL_SCHEMA_DDL = public_options_pb2.FEATURE_EXTERNAL_SCHEMA_DDL  # 111
    FEATURE_PIPE_STATIC_DESCRIBE = public_options_pb2.FEATURE_PIPE_STATIC_DESCRIBE  # 112
    FEATURE_PIPE_ASSERT = public_options_pb2.FEATURE_PIPE_ASSERT  # 113
    FEATURE_TEMPLATED_SQL_FUNCTION_RESOLVE_WITH_TYPED_ARGS = public_options_pb2.FEATURE_TEMPLATED_SQL_FUNCTION_RESOLVE_WITH_TYPED_ARGS  # 114
    FEATURE_JSON_QUERY_LAX = public_options_pb2.FEATURE_JSON_QUERY_LAX  # 115
    FEATURE_JSON_CONTAINS_FUNCTION = public_options_pb2.FEATURE_JSON_CONTAINS_FUNCTION  # 116
    FEATURE_CREATE_INDEX_PARTITION_BY = public_options_pb2.FEATURE_CREATE_INDEX_PARTITION_BY  # 117
    FEATURE_JSON_KEYS_FUNCTION = public_options_pb2.FEATURE_JSON_KEYS_FUNCTION  # 118
    FEATURE_TO_JSON_UNSUPPORTED_FIELDS = public_options_pb2.FEATURE_TO_JSON_UNSUPPORTED_FIELDS  # 119
    FEATURE_PIPE_LOG = public_options_pb2.FEATURE_PIPE_LOG  # 120
    FEATURE_PROPERTY_GRAPH_ENFORCE_EXPLICIT_PROPERTIES = public_options_pb2.FEATURE_PROPERTY_GRAPH_ENFORCE_EXPLICIT_PROPERTIES  # 121
    FEATURE_DIFFERENTIAL_PRIVACY_PER_AGGREGATION_BUDGET = public_options_pb2.FEATURE_DIFFERENTIAL_PRIVACY_PER_AGGREGATION_BUDGET  # 122
    FEATURE_TIMESTAMP_PICOS = public_options_pb2.FEATURE_TIMESTAMP_PICOS  # 123
    FEATURE_PIPE_IF = public_options_pb2.FEATURE_PIPE_IF  # 125
    FEATURE_TIMESTAMP_FROM_UNIX_FUNCTIONS_WITH_UINT64 = public_options_pb2.FEATURE_TIMESTAMP_FROM_UNIX_FUNCTIONS_WITH_UINT64  # 126
    FEATURE_TABLE_SYNTAX_RESOLVE_ARGUMENT_LAST = public_options_pb2.FEATURE_TABLE_SYNTAX_RESOLVE_ARGUMENT_LAST  # 127
    FEATURE_PIPE_FORK = public_options_pb2.FEATURE_PIPE_FORK  # 128
    FEATURE_PIPE_EXPORT_DATA = public_options_pb2.FEATURE_PIPE_EXPORT_DATA  # 129
    FEATURE_PIPE_CREATE_TABLE = public_options_pb2.FEATURE_PIPE_CREATE_TABLE  # 130
    FEATURE_PIPE_TEE = public_options_pb2.FEATURE_PIPE_TEE  # 131
    FEATURE_PIPE_INSERT = public_options_pb2.FEATURE_PIPE_INSERT  # 133
    FEATURE_DISABLE_VALIDATE_REWRITERS_REFER_TO_BUILTINS = public_options_pb2.FEATURE_DISABLE_VALIDATE_REWRITERS_REFER_TO_BUILTINS  # 134
    FEATURE_PIPE_WITH = public_options_pb2.FEATURE_PIPE_WITH  # 135
    FEATURE_CREATE_LOCALITY_GROUP = public_options_pb2.FEATURE_CREATE_LOCALITY_GROUP  # 136
    FEATURE_JSON_FLATTEN_FUNCTION = public_options_pb2.FEATURE_JSON_FLATTEN_FUNCTION  # 137
    FEATURE_JSON_SUBFIELDS_WITH_SET = public_options_pb2.FEATURE_JSON_SUBFIELDS_WITH_SET  # 138
    FEATURE_JSON_TYPE_COMPARISON = public_options_pb2.FEATURE_JSON_TYPE_COMPARISON  # 139
    FEATURE_ALTER_COLUMN_SET_GENERATED_AS_IDENTITY = public_options_pb2.FEATURE_ALTER_COLUMN_SET_GENERATED_AS_IDENTITY  # 141
    FEATURE_PIPE_AGGREGATE_WITH_DIFFERENTIAL_PRIVACY = public_options_pb2.FEATURE_PIPE_AGGREGATE_WITH_DIFFERENTIAL_PRIVACY  # 142
    FEATURE_MULTILEVEL_AGGREGATION_ON_UDAS = public_options_pb2.FEATURE_MULTILEVEL_AGGREGATION_ON_UDAS  # 143
    FEATURE_DIFFERENTIAL_PRIVACY_NESTED = public_options_pb2.FEATURE_DIFFERENTIAL_PRIVACY_NESTED  # 144
    FEATURE_STATEMENT_WITH_PIPE_OPERATORS = public_options_pb2.FEATURE_STATEMENT_WITH_PIPE_OPERATORS  # 145
    FEATURE_VECTOR_SEARCH_TVF = public_options_pb2.FEATURE_VECTOR_SEARCH_TVF  # 146
    FEATURE_TUMBLE_HOP_TVFS = public_options_pb2.FEATURE_TUMBLE_HOP_TVFS  # 147
    FEATURE_TUMBLE_HOP_TVFS_NO_TIMESTAMP_COL = public_options_pb2.FEATURE_TUMBLE_HOP_TVFS_NO_TIMESTAMP_COL  # 148
    FEATURE_LEGACY_BINARY_CONCAT = public_options_pb2.FEATURE_LEGACY_BINARY_CONCAT  # 149
    FEATURE_PROCEDURES_IN_MODULES = public_options_pb2.FEATURE_PROCEDURES_IN_MODULES  # 150
    FEATURE_ALTER_MATERIALIZED_VIEW_ALTER_COLUMN_SET_OPTIONS = public_options_pb2.FEATURE_ALTER_MATERIALIZED_VIEW_ALTER_COLUMN_SET_OPTIONS  # 151
    FEATURE_TOP_LEVEL_TABLE_STATEMENTS = public_options_pb2.FEATURE_TOP_LEVEL_TABLE_STATEMENTS  # 152
    FEATURE_ORDER_BY_COLLATE = public_options_pb2.FEATURE_ORDER_BY_COLLATE  # 11001
    FEATURE_V_1_1_ORDER_BY_COLLATE = public_options_pb2.FEATURE_V_1_1_ORDER_BY_COLLATE  # 11001
    FEATURE_WITH_ON_SUBQUERY = public_options_pb2.FEATURE_WITH_ON_SUBQUERY  # 11002
    FEATURE_V_1_1_WITH_ON_SUBQUERY = public_options_pb2.FEATURE_V_1_1_WITH_ON_SUBQUERY  # 11002
    FEATURE_SELECT_STAR_EXCEPT_REPLACE = public_options_pb2.FEATURE_SELECT_STAR_EXCEPT_REPLACE  # 11003
    FEATURE_V_1_1_SELECT_STAR_EXCEPT_REPLACE = public_options_pb2.FEATURE_V_1_1_SELECT_STAR_EXCEPT_REPLACE  # 11003
    FEATURE_ORDER_BY_IN_AGGREGATE = public_options_pb2.FEATURE_ORDER_BY_IN_AGGREGATE  # 11004
    FEATURE_V_1_1_ORDER_BY_IN_AGGREGATE = public_options_pb2.FEATURE_V_1_1_ORDER_BY_IN_AGGREGATE  # 11004
    FEATURE_CAST_DIFFERENT_ARRAY_TYPES = public_options_pb2.FEATURE_CAST_DIFFERENT_ARRAY_TYPES  # 11005
    FEATURE_V_1_1_CAST_DIFFERENT_ARRAY_TYPES = public_options_pb2.FEATURE_V_1_1_CAST_DIFFERENT_ARRAY_TYPES  # 11005
    FEATURE_ARRAY_EQUALITY = public_options_pb2.FEATURE_ARRAY_EQUALITY  # 11006
    FEATURE_V_1_1_ARRAY_EQUALITY = public_options_pb2.FEATURE_V_1_1_ARRAY_EQUALITY  # 11006
    FEATURE_LIMIT_IN_AGGREGATE = public_options_pb2.FEATURE_LIMIT_IN_AGGREGATE  # 11007
    FEATURE_V_1_1_LIMIT_IN_AGGREGATE = public_options_pb2.FEATURE_V_1_1_LIMIT_IN_AGGREGATE  # 11007
    FEATURE_HAVING_IN_AGGREGATE = public_options_pb2.FEATURE_HAVING_IN_AGGREGATE  # 11008
    FEATURE_V_1_1_HAVING_IN_AGGREGATE = public_options_pb2.FEATURE_V_1_1_HAVING_IN_AGGREGATE  # 11008
    FEATURE_NULL_HANDLING_MODIFIER_IN_ANALYTIC = public_options_pb2.FEATURE_NULL_HANDLING_MODIFIER_IN_ANALYTIC  # 11009
    FEATURE_V_1_1_NULL_HANDLING_MODIFIER_IN_ANALYTIC = public_options_pb2.FEATURE_V_1_1_NULL_HANDLING_MODIFIER_IN_ANALYTIC  # 11009
    FEATURE_NULL_HANDLING_MODIFIER_IN_AGGREGATE = public_options_pb2.FEATURE_NULL_HANDLING_MODIFIER_IN_AGGREGATE  # 11010
    FEATURE_V_1_1_NULL_HANDLING_MODIFIER_IN_AGGREGATE = public_options_pb2.FEATURE_V_1_1_NULL_HANDLING_MODIFIER_IN_AGGREGATE  # 11010
    FEATURE_FOR_SYSTEM_TIME_AS_OF = public_options_pb2.FEATURE_FOR_SYSTEM_TIME_AS_OF  # 11011
    FEATURE_V_1_1_FOR_SYSTEM_TIME_AS_OF = public_options_pb2.FEATURE_V_1_1_FOR_SYSTEM_TIME_AS_OF  # 11011
    FEATURE_CIVIL_TIME = public_options_pb2.FEATURE_CIVIL_TIME  # 12001
    FEATURE_V_1_2_CIVIL_TIME = public_options_pb2.FEATURE_V_1_2_CIVIL_TIME  # 12001
    FEATURE_SAFE_FUNCTION_CALL = public_options_pb2.FEATURE_SAFE_FUNCTION_CALL  # 12002
    FEATURE_V_1_2_SAFE_FUNCTION_CALL = public_options_pb2.FEATURE_V_1_2_SAFE_FUNCTION_CALL  # 12002
    FEATURE_GROUP_BY_STRUCT = public_options_pb2.FEATURE_GROUP_BY_STRUCT  # 12003
    FEATURE_V_1_2_GROUP_BY_STRUCT = public_options_pb2.FEATURE_V_1_2_GROUP_BY_STRUCT  # 12003
    FEATURE_PROTO_EXTENSIONS_WITH_NEW = public_options_pb2.FEATURE_PROTO_EXTENSIONS_WITH_NEW  # 12004
    FEATURE_V_1_2_PROTO_EXTENSIONS_WITH_NEW = public_options_pb2.FEATURE_V_1_2_PROTO_EXTENSIONS_WITH_NEW  # 12004
    FEATURE_GROUP_BY_ARRAY = public_options_pb2.FEATURE_GROUP_BY_ARRAY  # 12005
    FEATURE_V_1_2_GROUP_BY_ARRAY = public_options_pb2.FEATURE_V_1_2_GROUP_BY_ARRAY  # 12005
    FEATURE_PROTO_EXTENSIONS_WITH_SET = public_options_pb2.FEATURE_PROTO_EXTENSIONS_WITH_SET  # 12006
    FEATURE_V_1_2_PROTO_EXTENSIONS_WITH_SET = public_options_pb2.FEATURE_V_1_2_PROTO_EXTENSIONS_WITH_SET  # 12006
    FEATURE_CORRELATED_REFS_IN_NESTED_DML = public_options_pb2.FEATURE_CORRELATED_REFS_IN_NESTED_DML  # 12007
    FEATURE_V_1_2_CORRELATED_REFS_IN_NESTED_DML = public_options_pb2.FEATURE_V_1_2_CORRELATED_REFS_IN_NESTED_DML  # 12007
    FEATURE_WEEK_WITH_WEEKDAY = public_options_pb2.FEATURE_WEEK_WITH_WEEKDAY  # 12008
    FEATURE_V_1_2_WEEK_WITH_WEEKDAY = public_options_pb2.FEATURE_V_1_2_WEEK_WITH_WEEKDAY  # 12008
    FEATURE_ARRAY_ELEMENTS_WITH_SET = public_options_pb2.FEATURE_ARRAY_ELEMENTS_WITH_SET  # 12009
    FEATURE_V_1_2_ARRAY_ELEMENTS_WITH_SET = public_options_pb2.FEATURE_V_1_2_ARRAY_ELEMENTS_WITH_SET  # 12009
    FEATURE_NESTED_UPDATE_DELETE_WITH_OFFSET = public_options_pb2.FEATURE_NESTED_UPDATE_DELETE_WITH_OFFSET  # 12010
    FEATURE_V_1_2_NESTED_UPDATE_DELETE_WITH_OFFSET = public_options_pb2.FEATURE_V_1_2_NESTED_UPDATE_DELETE_WITH_OFFSET  # 12010
    FEATURE_GENERATED_COLUMNS = public_options_pb2.FEATURE_GENERATED_COLUMNS  # 12011
    FEATURE_V_1_2_GENERATED_COLUMNS = public_options_pb2.FEATURE_V_1_2_GENERATED_COLUMNS  # 12011
    FEATURE_PROTO_DEFAULT_IF_NULL = public_options_pb2.FEATURE_PROTO_DEFAULT_IF_NULL  # 13001
    FEATURE_V_1_3_PROTO_DEFAULT_IF_NULL = public_options_pb2.FEATURE_V_1_3_PROTO_DEFAULT_IF_NULL  # 13001
    FEATURE_EXTRACT_FROM_PROTO = public_options_pb2.FEATURE_EXTRACT_FROM_PROTO  # 13002
    FEATURE_V_1_3_EXTRACT_FROM_PROTO = public_options_pb2.FEATURE_V_1_3_EXTRACT_FROM_PROTO  # 13002
    FEATURE_DEPRECATED_DISALLOW_PROTO3_HAS_SCALAR_FIELD = public_options_pb2.FEATURE_DEPRECATED_DISALLOW_PROTO3_HAS_SCALAR_FIELD  # 13003
    FEATURE_V_1_3_DEPRECATED_DISALLOW_PROTO3_HAS_SCALAR_FIELD = public_options_pb2.FEATURE_V_1_3_DEPRECATED_DISALLOW_PROTO3_HAS_SCALAR_FIELD  # 13003
    FEATURE_ARRAY_ORDERING = public_options_pb2.FEATURE_ARRAY_ORDERING  # 13004
    FEATURE_V_1_3_ARRAY_ORDERING = public_options_pb2.FEATURE_V_1_3_ARRAY_ORDERING  # 13004
    FEATURE_OMIT_INSERT_COLUMN_LIST = public_options_pb2.FEATURE_OMIT_INSERT_COLUMN_LIST  # 13005
    FEATURE_V_1_3_OMIT_INSERT_COLUMN_LIST = public_options_pb2.FEATURE_V_1_3_OMIT_INSERT_COLUMN_LIST  # 13005
    FEATURE_IGNORE_PROTO3_USE_DEFAULTS = public_options_pb2.FEATURE_IGNORE_PROTO3_USE_DEFAULTS  # 13006
    FEATURE_V_1_3_IGNORE_PROTO3_USE_DEFAULTS = public_options_pb2.FEATURE_V_1_3_IGNORE_PROTO3_USE_DEFAULTS  # 13006
    FEATURE_REPLACE_FIELDS = public_options_pb2.FEATURE_REPLACE_FIELDS  # 13007
    FEATURE_V_1_3_REPLACE_FIELDS = public_options_pb2.FEATURE_V_1_3_REPLACE_FIELDS  # 13007
    FEATURE_NULLS_FIRST_LAST_IN_ORDER_BY = public_options_pb2.FEATURE_NULLS_FIRST_LAST_IN_ORDER_BY  # 13008
    FEATURE_V_1_3_NULLS_FIRST_LAST_IN_ORDER_BY = public_options_pb2.FEATURE_V_1_3_NULLS_FIRST_LAST_IN_ORDER_BY  # 13008
    FEATURE_ALLOW_DASHES_IN_TABLE_NAME = public_options_pb2.FEATURE_ALLOW_DASHES_IN_TABLE_NAME  # 13009
    FEATURE_V_1_3_ALLOW_DASHES_IN_TABLE_NAME = public_options_pb2.FEATURE_V_1_3_ALLOW_DASHES_IN_TABLE_NAME  # 13009
    FEATURE_CONCAT_MIXED_TYPES = public_options_pb2.FEATURE_CONCAT_MIXED_TYPES  # 13010
    FEATURE_V_1_3_CONCAT_MIXED_TYPES = public_options_pb2.FEATURE_V_1_3_CONCAT_MIXED_TYPES  # 13010
    FEATURE_WITH_RECURSIVE = public_options_pb2.FEATURE_WITH_RECURSIVE  # 13011
    FEATURE_V_1_3_WITH_RECURSIVE = public_options_pb2.FEATURE_V_1_3_WITH_RECURSIVE  # 13011
    FEATURE_PROTO_MAPS = public_options_pb2.FEATURE_PROTO_MAPS  # 13012
    FEATURE_V_1_3_PROTO_MAPS = public_options_pb2.FEATURE_V_1_3_PROTO_MAPS  # 13012
    FEATURE_ENUM_VALUE_DESCRIPTOR_PROTO = public_options_pb2.FEATURE_ENUM_VALUE_DESCRIPTOR_PROTO  # 13013
    FEATURE_V_1_3_ENUM_VALUE_DESCRIPTOR_PROTO = public_options_pb2.FEATURE_V_1_3_ENUM_VALUE_DESCRIPTOR_PROTO  # 13013
    FEATURE_DECIMAL_ALIAS = public_options_pb2.FEATURE_DECIMAL_ALIAS  # 13014
    FEATURE_V_1_3_DECIMAL_ALIAS = public_options_pb2.FEATURE_V_1_3_DECIMAL_ALIAS  # 13014
    FEATURE_UNNEST_AND_FLATTEN_ARRAYS = public_options_pb2.FEATURE_UNNEST_AND_FLATTEN_ARRAYS  # 13015
    FEATURE_V_1_3_UNNEST_AND_FLATTEN_ARRAYS = public_options_pb2.FEATURE_V_1_3_UNNEST_AND_FLATTEN_ARRAYS  # 13015
    FEATURE_ALLOW_CONSECUTIVE_ON = public_options_pb2.FEATURE_ALLOW_CONSECUTIVE_ON  # 13016
    FEATURE_V_1_3_ALLOW_CONSECUTIVE_ON = public_options_pb2.FEATURE_V_1_3_ALLOW_CONSECUTIVE_ON  # 13016
    FEATURE_ALLOW_REGEXP_EXTRACT_OPTIONALS = public_options_pb2.FEATURE_ALLOW_REGEXP_EXTRACT_OPTIONALS  # 13017
    FEATURE_V_1_3_ALLOW_REGEXP_EXTRACT_OPTIONALS = public_options_pb2.FEATURE_V_1_3_ALLOW_REGEXP_EXTRACT_OPTIONALS  # 13017
    FEATURE_DATE_TIME_CONSTRUCTORS = public_options_pb2.FEATURE_DATE_TIME_CONSTRUCTORS  # 13018
    FEATURE_V_1_3_DATE_TIME_CONSTRUCTORS = public_options_pb2.FEATURE_V_1_3_DATE_TIME_CONSTRUCTORS  # 13018
    FEATURE_DATE_ARITHMETICS = public_options_pb2.FEATURE_DATE_ARITHMETICS  # 13019
    FEATURE_V_1_3_DATE_ARITHMETICS = public_options_pb2.FEATURE_V_1_3_DATE_ARITHMETICS  # 13019
    FEATURE_ADDITIONAL_STRING_FUNCTIONS = public_options_pb2.FEATURE_ADDITIONAL_STRING_FUNCTIONS  # 13020
    FEATURE_V_1_3_ADDITIONAL_STRING_FUNCTIONS = public_options_pb2.FEATURE_V_1_3_ADDITIONAL_STRING_FUNCTIONS  # 13020
    FEATURE_WITH_GROUP_ROWS = public_options_pb2.FEATURE_WITH_GROUP_ROWS  # 13021
    FEATURE_V_1_3_WITH_GROUP_ROWS = public_options_pb2.FEATURE_V_1_3_WITH_GROUP_ROWS  # 13021
    FEATURE_EXTENDED_DATE_TIME_SIGNATURES = public_options_pb2.FEATURE_EXTENDED_DATE_TIME_SIGNATURES  # 13022
    FEATURE_V_1_3_EXTENDED_DATE_TIME_SIGNATURES = public_options_pb2.FEATURE_V_1_3_EXTENDED_DATE_TIME_SIGNATURES  # 13022
    FEATURE_EXTENDED_GEOGRAPHY_PARSERS = public_options_pb2.FEATURE_EXTENDED_GEOGRAPHY_PARSERS  # 13023
    FEATURE_V_1_3_EXTENDED_GEOGRAPHY_PARSERS = public_options_pb2.FEATURE_V_1_3_EXTENDED_GEOGRAPHY_PARSERS  # 13023
    FEATURE_INLINE_LAMBDA_ARGUMENT = public_options_pb2.FEATURE_INLINE_LAMBDA_ARGUMENT  # 13024
    FEATURE_V_1_3_INLINE_LAMBDA_ARGUMENT = public_options_pb2.FEATURE_V_1_3_INLINE_LAMBDA_ARGUMENT  # 13024
    FEATURE_PIVOT = public_options_pb2.FEATURE_PIVOT  # 13025
    FEATURE_V_1_3_PIVOT = public_options_pb2.FEATURE_V_1_3_PIVOT  # 13025
    FEATURE_ANNOTATION_FRAMEWORK = public_options_pb2.FEATURE_ANNOTATION_FRAMEWORK  # 13026
    FEATURE_V_1_3_ANNOTATION_FRAMEWORK = public_options_pb2.FEATURE_V_1_3_ANNOTATION_FRAMEWORK  # 13026
    FEATURE_COLLATION_SUPPORT = public_options_pb2.FEATURE_COLLATION_SUPPORT  # 13027
    FEATURE_V_1_3_COLLATION_SUPPORT = public_options_pb2.FEATURE_V_1_3_COLLATION_SUPPORT  # 13027
    FEATURE_IS_DISTINCT = public_options_pb2.FEATURE_IS_DISTINCT  # 13028
    FEATURE_V_1_3_IS_DISTINCT = public_options_pb2.FEATURE_V_1_3_IS_DISTINCT  # 13028
    FEATURE_FORMAT_IN_CAST = public_options_pb2.FEATURE_FORMAT_IN_CAST  # 13029
    FEATURE_V_1_3_FORMAT_IN_CAST = public_options_pb2.FEATURE_V_1_3_FORMAT_IN_CAST  # 13029
    FEATURE_UNPIVOT = public_options_pb2.FEATURE_UNPIVOT  # 13030
    FEATURE_V_1_3_UNPIVOT = public_options_pb2.FEATURE_V_1_3_UNPIVOT  # 13030
    FEATURE_DML_RETURNING = public_options_pb2.FEATURE_DML_RETURNING  # 13031
    FEATURE_V_1_3_DML_RETURNING = public_options_pb2.FEATURE_V_1_3_DML_RETURNING  # 13031
    FEATURE_FILTER_FIELDS = public_options_pb2.FEATURE_FILTER_FIELDS  # 13032
    FEATURE_V_1_3_FILTER_FIELDS = public_options_pb2.FEATURE_V_1_3_FILTER_FIELDS  # 13032
    FEATURE_QUALIFY = public_options_pb2.FEATURE_QUALIFY  # 13033
    FEATURE_V_1_3_QUALIFY = public_options_pb2.FEATURE_V_1_3_QUALIFY  # 13033
    FEATURE_REPEAT = public_options_pb2.FEATURE_REPEAT  # 13034
    FEATURE_V_1_3_REPEAT = public_options_pb2.FEATURE_V_1_3_REPEAT  # 13034
    FEATURE_COLUMN_DEFAULT_VALUE = public_options_pb2.FEATURE_COLUMN_DEFAULT_VALUE  # 13035
    FEATURE_V_1_3_COLUMN_DEFAULT_VALUE = public_options_pb2.FEATURE_V_1_3_COLUMN_DEFAULT_VALUE  # 13035
    FEATURE_FOR_IN = public_options_pb2.FEATURE_FOR_IN  # 13036
    FEATURE_V_1_3_FOR_IN = public_options_pb2.FEATURE_V_1_3_FOR_IN  # 13036
    FEATURE_KLL_WEIGHTS = public_options_pb2.FEATURE_KLL_WEIGHTS  # 13037
    FEATURE_V_1_3_KLL_WEIGHTS = public_options_pb2.FEATURE_V_1_3_KLL_WEIGHTS  # 13037
    FEATURE_LIKE_ANY_SOME_ALL = public_options_pb2.FEATURE_LIKE_ANY_SOME_ALL  # 13038
    FEATURE_V_1_3_LIKE_ANY_SOME_ALL = public_options_pb2.FEATURE_V_1_3_LIKE_ANY_SOME_ALL  # 13038
    FEATURE_CASE_STMT = public_options_pb2.FEATURE_CASE_STMT  # 13039
    FEATURE_V_1_3_CASE_STMT = public_options_pb2.FEATURE_V_1_3_CASE_STMT  # 13039
    FEATURE_ALLOW_SLASH_PATHS = public_options_pb2.FEATURE_ALLOW_SLASH_PATHS  # 13040
    FEATURE_V_1_3_ALLOW_SLASH_PATHS = public_options_pb2.FEATURE_V_1_3_ALLOW_SLASH_PATHS  # 13040
    FEATURE_TYPEOF_FUNCTION = public_options_pb2.FEATURE_TYPEOF_FUNCTION  # 13041
    FEATURE_V_1_3_TYPEOF_FUNCTION = public_options_pb2.FEATURE_V_1_3_TYPEOF_FUNCTION  # 13041
    FEATURE_SCRIPT_LABEL = public_options_pb2.FEATURE_SCRIPT_LABEL  # 13042
    FEATURE_V_1_3_SCRIPT_LABEL = public_options_pb2.FEATURE_V_1_3_SCRIPT_LABEL  # 13042
    FEATURE_REMOTE_FUNCTION = public_options_pb2.FEATURE_REMOTE_FUNCTION  # 13043
    FEATURE_V_1_3_REMOTE_FUNCTION = public_options_pb2.FEATURE_V_1_3_REMOTE_FUNCTION  # 13043
    FEATURE_ARRAY_GREATEST_LEAST = public_options_pb2.FEATURE_ARRAY_GREATEST_LEAST  # 13044
    FEATURE_V_1_3_ARRAY_GREATEST_LEAST = public_options_pb2.FEATURE_V_1_3_ARRAY_GREATEST_LEAST  # 13044
    FEATURE_BRACED_PROTO_CONSTRUCTORS = public_options_pb2.FEATURE_BRACED_PROTO_CONSTRUCTORS  # 13045
    FEATURE_V_1_3_BRACED_PROTO_CONSTRUCTORS = public_options_pb2.FEATURE_V_1_3_BRACED_PROTO_CONSTRUCTORS  # 13045
    FEATURE_WITH_EXPRESSION = public_options_pb2.FEATURE_WITH_EXPRESSION  # 14000
    FEATURE_V_1_4_WITH_EXPRESSION = public_options_pb2.FEATURE_V_1_4_WITH_EXPRESSION  # 14000
    FEATURE_ORDERED_PRIMARY_KEYS = public_options_pb2.FEATURE_ORDERED_PRIMARY_KEYS  # 14002
    FEATURE_V_1_4_ORDERED_PRIMARY_KEYS = public_options_pb2.FEATURE_V_1_4_ORDERED_PRIMARY_KEYS  # 14002
    FEATURE_TTL = public_options_pb2.FEATURE_TTL  # 14003
    FEATURE_V_1_4_TTL = public_options_pb2.FEATURE_V_1_4_TTL  # 14003
    FEATURE_BARE_ARRAY_ACCESS = public_options_pb2.FEATURE_BARE_ARRAY_ACCESS  # 14004
    FEATURE_V_1_4_BARE_ARRAY_ACCESS = public_options_pb2.FEATURE_V_1_4_BARE_ARRAY_ACCESS  # 14004
    FEATURE_ARRAY_AGGREGATION_FUNCTIONS = public_options_pb2.FEATURE_ARRAY_AGGREGATION_FUNCTIONS  # 14005
    FEATURE_V_1_4_ARRAY_AGGREGATION_FUNCTIONS = public_options_pb2.FEATURE_V_1_4_ARRAY_AGGREGATION_FUNCTIONS  # 14005
    FEATURE_ARRAY_FIND_FUNCTIONS = public_options_pb2.FEATURE_ARRAY_FIND_FUNCTIONS  # 14006
    FEATURE_V_1_4_ARRAY_FIND_FUNCTIONS = public_options_pb2.FEATURE_V_1_4_ARRAY_FIND_FUNCTIONS  # 14006
    FEATURE_SAFE_FUNCTION_CALL_WITH_LAMBDA_ARGS = public_options_pb2.FEATURE_SAFE_FUNCTION_CALL_WITH_LAMBDA_ARGS  # 14007
    FEATURE_V_1_4_SAFE_FUNCTION_CALL_WITH_LAMBDA_ARGS = public_options_pb2.FEATURE_V_1_4_SAFE_FUNCTION_CALL_WITH_LAMBDA_ARGS  # 14007
    FEATURE_SQL_GRAPH = public_options_pb2.FEATURE_SQL_GRAPH  # 14008
    FEATURE_V_1_4_SQL_GRAPH = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH  # 14008
    FEATURE_REMOTE_MODEL = public_options_pb2.FEATURE_REMOTE_MODEL  # 14009
    FEATURE_V_1_4_REMOTE_MODEL = public_options_pb2.FEATURE_V_1_4_REMOTE_MODEL  # 14009
    FEATURE_STRUCT_POSITIONAL_ACCESSOR = public_options_pb2.FEATURE_STRUCT_POSITIONAL_ACCESSOR  # 14010
    FEATURE_V_1_4_STRUCT_POSITIONAL_ACCESSOR = public_options_pb2.FEATURE_V_1_4_STRUCT_POSITIONAL_ACCESSOR  # 14010
    FEATURE_SINGLE_TABLE_NAME_ARRAY_PATH = public_options_pb2.FEATURE_SINGLE_TABLE_NAME_ARRAY_PATH  # 14011
    FEATURE_V_1_4_SINGLE_TABLE_NAME_ARRAY_PATH = public_options_pb2.FEATURE_V_1_4_SINGLE_TABLE_NAME_ARRAY_PATH  # 14011
    FEATURE_COLLATION_IN_WITH_RECURSIVE = public_options_pb2.FEATURE_COLLATION_IN_WITH_RECURSIVE  # 14013
    FEATURE_V_1_4_COLLATION_IN_WITH_RECURSIVE = public_options_pb2.FEATURE_V_1_4_COLLATION_IN_WITH_RECURSIVE  # 14013
    FEATURE_COLLATION_IN_EXPLICIT_CAST = public_options_pb2.FEATURE_COLLATION_IN_EXPLICIT_CAST  # 14014
    FEATURE_V_1_4_COLLATION_IN_EXPLICIT_CAST = public_options_pb2.FEATURE_V_1_4_COLLATION_IN_EXPLICIT_CAST  # 14014
    FEATURE_LOAD_DATA_PARTITIONS = public_options_pb2.FEATURE_LOAD_DATA_PARTITIONS  # 14015
    FEATURE_V_1_4_LOAD_DATA_PARTITIONS = public_options_pb2.FEATURE_V_1_4_LOAD_DATA_PARTITIONS  # 14015
    FEATURE_CREATE_MODEL_WITH_ALIASED_QUERY_LIST = public_options_pb2.FEATURE_CREATE_MODEL_WITH_ALIASED_QUERY_LIST  # 14016
    FEATURE_V_1_4_CREATE_MODEL_WITH_ALIASED_QUERY_LIST = public_options_pb2.FEATURE_V_1_4_CREATE_MODEL_WITH_ALIASED_QUERY_LIST  # 14016
    FEATURE_LOAD_DATA_TEMP_TABLE = public_options_pb2.FEATURE_LOAD_DATA_TEMP_TABLE  # 14017
    FEATURE_V_1_4_LOAD_DATA_TEMP_TABLE = public_options_pb2.FEATURE_V_1_4_LOAD_DATA_TEMP_TABLE  # 14017
    FEATURE_CORRESPONDING = public_options_pb2.FEATURE_CORRESPONDING  # 14018
    FEATURE_V_1_4_CORRESPONDING = public_options_pb2.FEATURE_V_1_4_CORRESPONDING  # 14018
    FEATURE_SEQUENCE_ARG = public_options_pb2.FEATURE_SEQUENCE_ARG  # 14019
    FEATURE_V_1_4_SEQUENCE_ARG = public_options_pb2.FEATURE_V_1_4_SEQUENCE_ARG  # 14019
    FEATURE_GROUPING_BUILTIN = public_options_pb2.FEATURE_GROUPING_BUILTIN  # 14020
    FEATURE_V_1_4_GROUPING_BUILTIN = public_options_pb2.FEATURE_V_1_4_GROUPING_BUILTIN  # 14020
    FEATURE_GROUPING_SETS = public_options_pb2.FEATURE_GROUPING_SETS  # 14021
    FEATURE_V_1_4_GROUPING_SETS = public_options_pb2.FEATURE_V_1_4_GROUPING_SETS  # 14021
    FEATURE_PRESERVE_ANNOTATION_IN_IMPLICIT_CAST_IN_SCAN = public_options_pb2.FEATURE_PRESERVE_ANNOTATION_IN_IMPLICIT_CAST_IN_SCAN  # 14022
    FEATURE_V_1_4_PRESERVE_ANNOTATION_IN_IMPLICIT_CAST_IN_SCAN = public_options_pb2.FEATURE_V_1_4_PRESERVE_ANNOTATION_IN_IMPLICIT_CAST_IN_SCAN  # 14022
    FEATURE_CORRESPONDING_FULL = public_options_pb2.FEATURE_CORRESPONDING_FULL  # 14023
    FEATURE_V_1_4_CORRESPONDING_FULL = public_options_pb2.FEATURE_V_1_4_CORRESPONDING_FULL  # 14023
    FEATURE_LIKE_ANY_SOME_ALL_ARRAY = public_options_pb2.FEATURE_LIKE_ANY_SOME_ALL_ARRAY  # 14025
    FEATURE_V_1_4_LIKE_ANY_SOME_ALL_ARRAY = public_options_pb2.FEATURE_V_1_4_LIKE_ANY_SOME_ALL_ARRAY  # 14025
    FEATURE_LIKE_ANY_SOME_ALL_SUBQUERY = public_options_pb2.FEATURE_LIKE_ANY_SOME_ALL_SUBQUERY  # 14026
    FEATURE_V_1_4_LIKE_ANY_SOME_ALL_SUBQUERY = public_options_pb2.FEATURE_V_1_4_LIKE_ANY_SOME_ALL_SUBQUERY  # 14026
    FEATURE_FIRST_AND_LAST_N = public_options_pb2.FEATURE_FIRST_AND_LAST_N  # 14027
    FEATURE_V_1_4_FIRST_AND_LAST_N = public_options_pb2.FEATURE_V_1_4_FIRST_AND_LAST_N  # 14027
    FEATURE_NULLIFZERO_ZEROIFNULL = public_options_pb2.FEATURE_NULLIFZERO_ZEROIFNULL  # 14028
    FEATURE_V_1_4_NULLIFZERO_ZEROIFNULL = public_options_pb2.FEATURE_V_1_4_NULLIFZERO_ZEROIFNULL  # 14028
    FEATURE_PI_FUNCTIONS = public_options_pb2.FEATURE_PI_FUNCTIONS  # 14029
    FEATURE_V_1_4_PI_FUNCTIONS = public_options_pb2.FEATURE_V_1_4_PI_FUNCTIONS  # 14029
    FEATURE_CREATE_FUNCTION_LANGUAGE_WITH_CONNECTION = public_options_pb2.FEATURE_CREATE_FUNCTION_LANGUAGE_WITH_CONNECTION  # 14030
    FEATURE_V_1_4_CREATE_FUNCTION_LANGUAGE_WITH_CONNECTION = public_options_pb2.FEATURE_V_1_4_CREATE_FUNCTION_LANGUAGE_WITH_CONNECTION  # 14030
    FEATURE_SINGLETON_UNNEST_INFERS_ALIAS = public_options_pb2.FEATURE_SINGLETON_UNNEST_INFERS_ALIAS  # 14031
    FEATURE_V_1_4_SINGLETON_UNNEST_INFERS_ALIAS = public_options_pb2.FEATURE_V_1_4_SINGLETON_UNNEST_INFERS_ALIAS  # 14031
    FEATURE_ARRAY_ZIP = public_options_pb2.FEATURE_ARRAY_ZIP  # 14032
    FEATURE_V_1_4_ARRAY_ZIP = public_options_pb2.FEATURE_V_1_4_ARRAY_ZIP  # 14032
    FEATURE_MULTIWAY_UNNEST = public_options_pb2.FEATURE_MULTIWAY_UNNEST  # 14033
    FEATURE_V_1_4_MULTIWAY_UNNEST = public_options_pb2.FEATURE_V_1_4_MULTIWAY_UNNEST  # 14033
    FEATURE_USE_OPERATION_COLLATION_FOR_NULLIF = public_options_pb2.FEATURE_USE_OPERATION_COLLATION_FOR_NULLIF  # 14034
    FEATURE_V_1_4_USE_OPERATION_COLLATION_FOR_NULLIF = public_options_pb2.FEATURE_V_1_4_USE_OPERATION_COLLATION_FOR_NULLIF  # 14034
    FEATURE_ENABLE_EDIT_DISTANCE_BYTES = public_options_pb2.FEATURE_ENABLE_EDIT_DISTANCE_BYTES  # 14035
    FEATURE_V_1_4_ENABLE_EDIT_DISTANCE_BYTES = public_options_pb2.FEATURE_V_1_4_ENABLE_EDIT_DISTANCE_BYTES  # 14035
    FEATURE_SQL_GRAPH_ADVANCED_QUERY = public_options_pb2.FEATURE_SQL_GRAPH_ADVANCED_QUERY  # 14036
    FEATURE_V_1_4_SQL_GRAPH_ADVANCED_QUERY = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_ADVANCED_QUERY  # 14036
    FEATURE_ENABLE_FLOAT_DISTANCE_FUNCTIONS = public_options_pb2.FEATURE_ENABLE_FLOAT_DISTANCE_FUNCTIONS  # 14037
    FEATURE_V_1_4_ENABLE_FLOAT_DISTANCE_FUNCTIONS = public_options_pb2.FEATURE_V_1_4_ENABLE_FLOAT_DISTANCE_FUNCTIONS  # 14037
    FEATURE_ENABLE_MEASURES = public_options_pb2.FEATURE_ENABLE_MEASURES  # 14038
    FEATURE_V_1_4_ENABLE_MEASURES = public_options_pb2.FEATURE_V_1_4_ENABLE_MEASURES  # 14038
    FEATURE_GROUP_BY_ALL = public_options_pb2.FEATURE_GROUP_BY_ALL  # 14039
    FEATURE_V_1_4_GROUP_BY_ALL = public_options_pb2.FEATURE_V_1_4_GROUP_BY_ALL  # 14039
    FEATURE_SQL_GRAPH_EXPOSE_GRAPH_ELEMENT = public_options_pb2.FEATURE_SQL_GRAPH_EXPOSE_GRAPH_ELEMENT  # 14041
    FEATURE_V_1_4_SQL_GRAPH_EXPOSE_GRAPH_ELEMENT = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_EXPOSE_GRAPH_ELEMENT  # 14041
    FEATURE_LIMIT_OFFSET_EXPRESSIONS = public_options_pb2.FEATURE_LIMIT_OFFSET_EXPRESSIONS  # 14042
    FEATURE_V_1_4_LIMIT_OFFSET_EXPRESSIONS = public_options_pb2.FEATURE_V_1_4_LIMIT_OFFSET_EXPRESSIONS  # 14042
    FEATURE_MAP_TYPE = public_options_pb2.FEATURE_MAP_TYPE  # 14043
    FEATURE_V_1_4_MAP_TYPE = public_options_pb2.FEATURE_V_1_4_MAP_TYPE  # 14043
    FEATURE_DISABLE_FLOAT32 = public_options_pb2.FEATURE_DISABLE_FLOAT32  # 14044
    FEATURE_V_1_4_DISABLE_FLOAT32 = public_options_pb2.FEATURE_V_1_4_DISABLE_FLOAT32  # 14044
    FEATURE_LITERAL_CONCATENATION = public_options_pb2.FEATURE_LITERAL_CONCATENATION  # 14045
    FEATURE_V_1_4_LITERAL_CONCATENATION = public_options_pb2.FEATURE_V_1_4_LITERAL_CONCATENATION  # 14045
    FEATURE_DOT_PRODUCT = public_options_pb2.FEATURE_DOT_PRODUCT  # 14046
    FEATURE_V_1_4_DOT_PRODUCT = public_options_pb2.FEATURE_V_1_4_DOT_PRODUCT  # 14046
    FEATURE_OPT_IN_NEW_BEHAVIOR_NOT_LIKE_ANY_SOME_ALL = public_options_pb2.FEATURE_OPT_IN_NEW_BEHAVIOR_NOT_LIKE_ANY_SOME_ALL  # 14047
    FEATURE_V_1_4_OPT_IN_NEW_BEHAVIOR_NOT_LIKE_ANY_SOME_ALL = public_options_pb2.FEATURE_V_1_4_OPT_IN_NEW_BEHAVIOR_NOT_LIKE_ANY_SOME_ALL  # 14047
    FEATURE_MANHATTAN_DISTANCE = public_options_pb2.FEATURE_MANHATTAN_DISTANCE  # 14048
    FEATURE_V_1_4_MANHATTAN_DISTANCE = public_options_pb2.FEATURE_V_1_4_MANHATTAN_DISTANCE  # 14048
    FEATURE_L1_NORM = public_options_pb2.FEATURE_L1_NORM  # 14049
    FEATURE_V_1_4_L1_NORM = public_options_pb2.FEATURE_V_1_4_L1_NORM  # 14049
    FEATURE_L2_NORM = public_options_pb2.FEATURE_L2_NORM  # 14050
    FEATURE_V_1_4_L2_NORM = public_options_pb2.FEATURE_V_1_4_L2_NORM  # 14050
    FEATURE_STRUCT_BRACED_CONSTRUCTORS = public_options_pb2.FEATURE_STRUCT_BRACED_CONSTRUCTORS  # 14051
    FEATURE_V_1_4_STRUCT_BRACED_CONSTRUCTORS = public_options_pb2.FEATURE_V_1_4_STRUCT_BRACED_CONSTRUCTORS  # 14051
    FEATURE_WITH_RECURSIVE_DEPTH_MODIFIER = public_options_pb2.FEATURE_WITH_RECURSIVE_DEPTH_MODIFIER  # 14052
    FEATURE_V_1_4_WITH_RECURSIVE_DEPTH_MODIFIER = public_options_pb2.FEATURE_V_1_4_WITH_RECURSIVE_DEPTH_MODIFIER  # 14052
    FEATURE_JSON_ARRAY_VALUE_EXTRACTION_FUNCTIONS = public_options_pb2.FEATURE_JSON_ARRAY_VALUE_EXTRACTION_FUNCTIONS  # 14053
    FEATURE_V_1_4_JSON_ARRAY_VALUE_EXTRACTION_FUNCTIONS = public_options_pb2.FEATURE_V_1_4_JSON_ARRAY_VALUE_EXTRACTION_FUNCTIONS  # 14053
    FEATURE_ENFORCE_CONDITIONAL_EVALUATION = public_options_pb2.FEATURE_ENFORCE_CONDITIONAL_EVALUATION  # 14054
    FEATURE_V_1_4_ENFORCE_CONDITIONAL_EVALUATION = public_options_pb2.FEATURE_V_1_4_ENFORCE_CONDITIONAL_EVALUATION  # 14054
    FEATURE_JSON_MORE_VALUE_EXTRACTION_FUNCTIONS = public_options_pb2.FEATURE_JSON_MORE_VALUE_EXTRACTION_FUNCTIONS  # 14055
    FEATURE_V_1_4_JSON_MORE_VALUE_EXTRACTION_FUNCTIONS = public_options_pb2.FEATURE_V_1_4_JSON_MORE_VALUE_EXTRACTION_FUNCTIONS  # 14055
    FEATURE_IMPLICIT_COERCION_STRING_LITERAL_TO_BYTES = public_options_pb2.FEATURE_IMPLICIT_COERCION_STRING_LITERAL_TO_BYTES  # 14056
    FEATURE_V_1_4_IMPLICIT_COERCION_STRING_LITERAL_TO_BYTES = public_options_pb2.FEATURE_V_1_4_IMPLICIT_COERCION_STRING_LITERAL_TO_BYTES  # 14056
    FEATURE_UUID_TYPE = public_options_pb2.FEATURE_UUID_TYPE  # 14057
    FEATURE_V_1_4_UUID_TYPE = public_options_pb2.FEATURE_V_1_4_UUID_TYPE  # 14057
    FEATURE_MULTILEVEL_AGGREGATION = public_options_pb2.FEATURE_MULTILEVEL_AGGREGATION  # 14058
    FEATURE_V_1_4_MULTILEVEL_AGGREGATION = public_options_pb2.FEATURE_V_1_4_MULTILEVEL_AGGREGATION  # 14058
    FEATURE_SQL_GRAPH_BOUNDED_PATH_QUANTIFICATION = public_options_pb2.FEATURE_SQL_GRAPH_BOUNDED_PATH_QUANTIFICATION  # 14059
    FEATURE_V_1_4_SQL_GRAPH_BOUNDED_PATH_QUANTIFICATION = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_BOUNDED_PATH_QUANTIFICATION  # 14059
    FEATURE_REPLACE_FIELDS_ALLOW_MULTI_ONEOF = public_options_pb2.FEATURE_REPLACE_FIELDS_ALLOW_MULTI_ONEOF  # 14060
    FEATURE_V_1_4_REPLACE_FIELDS_ALLOW_MULTI_ONEOF = public_options_pb2.FEATURE_V_1_4_REPLACE_FIELDS_ALLOW_MULTI_ONEOF  # 14060
    FEATURE_SQL_GRAPH_PATH_TYPE = public_options_pb2.FEATURE_SQL_GRAPH_PATH_TYPE  # 14062
    FEATURE_V_1_4_SQL_GRAPH_PATH_TYPE = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_PATH_TYPE  # 14062
    FEATURE_SQL_GRAPH_PATH_MODE = public_options_pb2.FEATURE_SQL_GRAPH_PATH_MODE  # 14063
    FEATURE_V_1_4_SQL_GRAPH_PATH_MODE = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_PATH_MODE  # 14063
    FEATURE_KLL_FLOAT64_PRIMARY_WITH_DOUBLE_ALIAS = public_options_pb2.FEATURE_KLL_FLOAT64_PRIMARY_WITH_DOUBLE_ALIAS  # 14064
    FEATURE_V_1_4_KLL_FLOAT64_PRIMARY_WITH_DOUBLE_ALIAS = public_options_pb2.FEATURE_V_1_4_KLL_FLOAT64_PRIMARY_WITH_DOUBLE_ALIAS  # 14064
    FEATURE_FOR_UPDATE = public_options_pb2.FEATURE_FOR_UPDATE  # 14065
    FEATURE_V_1_4_FOR_UPDATE = public_options_pb2.FEATURE_V_1_4_FOR_UPDATE  # 14065
    FEATURE_DISALLOW_PIVOT_AND_UNPIVOT_ON_ARRAY_SCANS = public_options_pb2.FEATURE_DISALLOW_PIVOT_AND_UNPIVOT_ON_ARRAY_SCANS  # 14066
    FEATURE_V_1_4_DISALLOW_PIVOT_AND_UNPIVOT_ON_ARRAY_SCANS = public_options_pb2.FEATURE_V_1_4_DISALLOW_PIVOT_AND_UNPIVOT_ON_ARRAY_SCANS  # 14066
    FEATURE_GROUP_BY_GRAPH_PATH = public_options_pb2.FEATURE_GROUP_BY_GRAPH_PATH  # 14067
    FEATURE_V_1_4_GROUP_BY_GRAPH_PATH = public_options_pb2.FEATURE_V_1_4_GROUP_BY_GRAPH_PATH  # 14067
    FEATURE_MATCH_RECOGNIZE = public_options_pb2.FEATURE_MATCH_RECOGNIZE  # 14068
    FEATURE_V_1_4_MATCH_RECOGNIZE = public_options_pb2.FEATURE_V_1_4_MATCH_RECOGNIZE  # 14068
    FEATURE_SQL_GRAPH_RETURN_EXTENSIONS = public_options_pb2.FEATURE_SQL_GRAPH_RETURN_EXTENSIONS  # 14069
    FEATURE_V_1_4_SQL_GRAPH_RETURN_EXTENSIONS = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_RETURN_EXTENSIONS  # 14069
    FEATURE_BY_NAME = public_options_pb2.FEATURE_BY_NAME  # 14070
    FEATURE_V_1_4_BY_NAME = public_options_pb2.FEATURE_V_1_4_BY_NAME  # 14070
    FEATURE_INSERT_ON_CONFLICT_CLAUSE = public_options_pb2.FEATURE_INSERT_ON_CONFLICT_CLAUSE  # 14071
    FEATURE_V_1_4_INSERT_ON_CONFLICT_CLAUSE = public_options_pb2.FEATURE_V_1_4_INSERT_ON_CONFLICT_CLAUSE  # 14071
    FEATURE_SQL_GRAPH_DYNAMIC_ELEMENT_TYPE = public_options_pb2.FEATURE_SQL_GRAPH_DYNAMIC_ELEMENT_TYPE  # 14072
    FEATURE_V_1_4_SQL_GRAPH_DYNAMIC_ELEMENT_TYPE = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_DYNAMIC_ELEMENT_TYPE  # 14072
    FEATURE_AGGREGATE_FILTERING = public_options_pb2.FEATURE_AGGREGATE_FILTERING  # 14073
    FEATURE_V_1_4_AGGREGATE_FILTERING = public_options_pb2.FEATURE_V_1_4_AGGREGATE_FILTERING  # 14073
    FEATURE_BITWISE_AGGREGATE_BYTES_SIGNATURES = public_options_pb2.FEATURE_BITWISE_AGGREGATE_BYTES_SIGNATURES  # 14074
    FEATURE_V_1_4_BITWISE_AGGREGATE_BYTES_SIGNATURES = public_options_pb2.FEATURE_V_1_4_BITWISE_AGGREGATE_BYTES_SIGNATURES  # 14074
    FEATURE_PIPE_RECURSIVE_UNION = public_options_pb2.FEATURE_PIPE_RECURSIVE_UNION  # 14075
    FEATURE_V_1_4_PIPE_RECURSIVE_UNION = public_options_pb2.FEATURE_V_1_4_PIPE_RECURSIVE_UNION  # 14075
    FEATURE_SQL_GRAPH_DYNAMIC_LABEL_PROPERTIES_IN_DDL = public_options_pb2.FEATURE_SQL_GRAPH_DYNAMIC_LABEL_PROPERTIES_IN_DDL  # 14078
    FEATURE_V_1_4_SQL_GRAPH_DYNAMIC_LABEL_PROPERTIES_IN_DDL = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_DYNAMIC_LABEL_PROPERTIES_IN_DDL  # 14078
    FEATURE_UPDATE_CONSTRUCTOR = public_options_pb2.FEATURE_UPDATE_CONSTRUCTOR  # 14079
    FEATURE_V_1_4_UPDATE_CONSTRUCTOR = public_options_pb2.FEATURE_V_1_4_UPDATE_CONSTRUCTOR  # 14079
    FEATURE_ALIASES_FOR_STRING_AND_DATE_FUNCTIONS = public_options_pb2.FEATURE_ALIASES_FOR_STRING_AND_DATE_FUNCTIONS  # 14080
    FEATURE_V_1_4_ALIASES_FOR_STRING_AND_DATE_FUNCTIONS = public_options_pb2.FEATURE_V_1_4_ALIASES_FOR_STRING_AND_DATE_FUNCTIONS  # 14080
    FEATURE_VIEWS_IN_MODULES = public_options_pb2.FEATURE_VIEWS_IN_MODULES  # 14081
    FEATURE_V_1_4_VIEWS_IN_MODULES = public_options_pb2.FEATURE_V_1_4_VIEWS_IN_MODULES  # 14081
    FEATURE_FROM_AND_TO_PROTO_INTERVAL = public_options_pb2.FEATURE_FROM_AND_TO_PROTO_INTERVAL  # 14083
    FEATURE_V_1_4_FROM_AND_TO_PROTO_INTERVAL = public_options_pb2.FEATURE_V_1_4_FROM_AND_TO_PROTO_INTERVAL  # 14083
    FEATURE_SIMPLIFY_PIVOT_REWRITE = public_options_pb2.FEATURE_SIMPLIFY_PIVOT_REWRITE  # 14084
    FEATURE_V_1_4_SIMPLIFY_PIVOT_REWRITE = public_options_pb2.FEATURE_V_1_4_SIMPLIFY_PIVOT_REWRITE  # 14084
    FEATURE_PIPE_NAMED_WINDOWS = public_options_pb2.FEATURE_PIPE_NAMED_WINDOWS  # 14086
    FEATURE_V_1_4_PIPE_NAMED_WINDOWS = public_options_pb2.FEATURE_V_1_4_PIPE_NAMED_WINDOWS  # 14086
    FEATURE_SQL_GRAPH_ELEMENT_DEFINITION_NAME_IN_JSON_RESULT = public_options_pb2.FEATURE_SQL_GRAPH_ELEMENT_DEFINITION_NAME_IN_JSON_RESULT  # 14087
    FEATURE_V_1_4_SQL_GRAPH_ELEMENT_DEFINITION_NAME_IN_JSON_RESULT = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_ELEMENT_DEFINITION_NAME_IN_JSON_RESULT  # 14087
    FEATURE_TVF_PSEUDO_COLUMNS = public_options_pb2.FEATURE_TVF_PSEUDO_COLUMNS  # 14088
    FEATURE_V_1_4_TVF_PSEUDO_COLUMNS = public_options_pb2.FEATURE_V_1_4_TVF_PSEUDO_COLUMNS  # 14088
    FEATURE_LATERAL_JOIN = public_options_pb2.FEATURE_LATERAL_JOIN  # 14089
    FEATURE_V_1_4_LATERAL_JOIN = public_options_pb2.FEATURE_V_1_4_LATERAL_JOIN  # 14089
    FEATURE_CHAINED_FUNCTION_CALLS = public_options_pb2.FEATURE_CHAINED_FUNCTION_CALLS  # 14090
    FEATURE_V_1_4_CHAINED_FUNCTION_CALLS = public_options_pb2.FEATURE_V_1_4_CHAINED_FUNCTION_CALLS  # 14090
    FEATURE_SQL_GRAPH_CHEAPEST_PATH = public_options_pb2.FEATURE_SQL_GRAPH_CHEAPEST_PATH  # 14091
    FEATURE_V_1_4_SQL_GRAPH_CHEAPEST_PATH = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_CHEAPEST_PATH  # 14091
    FEATURE_SQL_GRAPH_PATH_SEARCH_PREFIX_PATH_COUNT = public_options_pb2.FEATURE_SQL_GRAPH_PATH_SEARCH_PREFIX_PATH_COUNT  # 14092
    FEATURE_V_1_4_SQL_GRAPH_PATH_SEARCH_PREFIX_PATH_COUNT = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_PATH_SEARCH_PREFIX_PATH_COUNT  # 14092
    FEATURE_TIMESTAMP_PRECISION = public_options_pb2.FEATURE_TIMESTAMP_PRECISION  # 14093
    FEATURE_V_1_4_TIMESTAMP_PRECISION = public_options_pb2.FEATURE_V_1_4_TIMESTAMP_PRECISION  # 14093
    FEATURE_ANALYSIS_CONSTANT_STRUCT_POSITIONAL_ACCESSOR = public_options_pb2.FEATURE_ANALYSIS_CONSTANT_STRUCT_POSITIONAL_ACCESSOR  # 14094
    FEATURE_V_1_4_ANALYSIS_CONSTANT_STRUCT_POSITIONAL_ACCESSOR = public_options_pb2.FEATURE_V_1_4_ANALYSIS_CONSTANT_STRUCT_POSITIONAL_ACCESSOR  # 14094
    FEATURE_SQL_GRAPH_DYNAMIC_LABEL_EXTENSION_IN_DDL = public_options_pb2.FEATURE_SQL_GRAPH_DYNAMIC_LABEL_EXTENSION_IN_DDL  # 14095
    FEATURE_V_1_4_SQL_GRAPH_DYNAMIC_LABEL_EXTENSION_IN_DDL = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_DYNAMIC_LABEL_EXTENSION_IN_DDL  # 14095
    FEATURE_TIMESTAMP_PRECISION_ANNOTATION = public_options_pb2.FEATURE_TIMESTAMP_PRECISION_ANNOTATION  # 14096
    FEATURE_V_1_4_TIMESTAMP_PRECISION_ANNOTATION = public_options_pb2.FEATURE_V_1_4_TIMESTAMP_PRECISION_ANNOTATION  # 14096
    FEATURE_PIPE_DESCRIBE = public_options_pb2.FEATURE_PIPE_DESCRIBE  # 14098
    FEATURE_SQL_GRAPH_DYNAMIC_MULTI_LABEL_NODES = public_options_pb2.FEATURE_SQL_GRAPH_DYNAMIC_MULTI_LABEL_NODES  # 14099
    FEATURE_V_1_4_SQL_GRAPH_DYNAMIC_MULTI_LABEL_NODES = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_DYNAMIC_MULTI_LABEL_NODES  # 14099
    FEATURE_SQL_GRAPH_CALL = public_options_pb2.FEATURE_SQL_GRAPH_CALL  # 14100
    FEATURE_V_1_4_SQL_GRAPH_CALL = public_options_pb2.FEATURE_V_1_4_SQL_GRAPH_CALL  # 14100
    FEATURE_MULTI_GROUPING_SETS = public_options_pb2.FEATURE_MULTI_GROUPING_SETS  # 14101
    FEATURE_ANALYSIS_CONSTANT_PIVOT_COLUMN = public_options_pb2.FEATURE_ANALYSIS_CONSTANT_PIVOT_COLUMN  # 14102
    FEATURE_ANALYSIS_CONSTANT_FUNCTION_ARGUMENT = public_options_pb2.FEATURE_ANALYSIS_CONSTANT_FUNCTION_ARGUMENT  # 14103
    FEATURE_ANALYSIS_CONSTANT_INTERVAL_CONSTRUCTOR = public_options_pb2.FEATURE_ANALYSIS_CONSTANT_INTERVAL_CONSTRUCTOR  # 14104
    FEATURE_PIPE_CALL_INPUT_TABLE = public_options_pb2.FEATURE_PIPE_CALL_INPUT_TABLE  # 14105
    FEATURE_RELAXED_WITH_RECURSIVE = public_options_pb2.FEATURE_RELAXED_WITH_RECURSIVE  # 14106
    FEATURE_SQL_GRAPH_UNBOUNDED_PATH_QUANTIFICATION = public_options_pb2.FEATURE_SQL_GRAPH_UNBOUNDED_PATH_QUANTIFICATION  # 14107
    FEATURE_REPORT_FORMAT_CONSTANT_ARGUMENT = public_options_pb2.FEATURE_REPORT_FORMAT_CONSTANT_ARGUMENT  # 14108
    FEATURE_RADIANS_DEGREES_FUNCTIONS = public_options_pb2.FEATURE_RADIANS_DEGREES_FUNCTIONS  # 14109
    FEATURE_RUN_STATEMENT = public_options_pb2.FEATURE_RUN_STATEMENT  # 14110
    FEATURE_PARSE_TIMESTAMP_WITH_PRECISION_AND_TIMEZONE = public_options_pb2.FEATURE_PARSE_TIMESTAMP_WITH_PRECISION_AND_TIMEZONE  # 14112
    FEATURE_LIMIT_ALL = public_options_pb2.FEATURE_LIMIT_ALL  # 14113
    FEATURE_ADDITIONAL_DATE_TIME_FUNCTIONS = public_options_pb2.FEATURE_ADDITIONAL_DATE_TIME_FUNCTIONS  # 14114
    FEATURE_KLL_QUANTILES_EXTRACT_RELATIVE_RANK = public_options_pb2.FEATURE_KLL_QUANTILES_EXTRACT_RELATIVE_RANK  # 14115
    FEATURE_MATCH_MAKE_STRUCT_IN_GROUP_BY = public_options_pb2.FEATURE_MATCH_MAKE_STRUCT_IN_GROUP_BY  # 14116
    FEATURE_ARRAY_CONSTRUCTOR_EXPLICIT_TYPE_ENFORCE_TARGET_ANNOTATIONS = public_options_pb2.FEATURE_ARRAY_CONSTRUCTOR_EXPLICIT_TYPE_ENFORCE_TARGET_ANNOTATIONS  # 14117
    FEATURE_LATERAL_COLUMN_REFERENCES = public_options_pb2.FEATURE_LATERAL_COLUMN_REFERENCES  # 14118
    FEATURE_ROW_TYPE = public_options_pb2.FEATURE_ROW_TYPE  # 14119
    FEATURE_SQL_GRAPH_SET_OPERATION_PROPAGATION_MODE = public_options_pb2.FEATURE_SQL_GRAPH_SET_OPERATION_PROPAGATION_MODE  # 14120
    FEATURE_SQL_GRAPH_DEFAULT_LABEL_AND_PROPERTY_DEFINITION_OPTIONS = public_options_pb2.FEATURE_SQL_GRAPH_DEFAULT_LABEL_AND_PROPERTY_DEFINITION_OPTIONS  # 14121
    FEATURE_MEASURES_TVF = public_options_pb2.FEATURE_MEASURES_TVF  # 14122
    FEATURE_EXPERIMENTAL_MODULES = public_options_pb2.FEATURE_EXPERIMENTAL_MODULES  # 999002
    FEATURE_TEST_IDEALLY_ENABLED_BUT_IN_DEVELOPMENT = public_options_pb2.FEATURE_TEST_IDEALLY_ENABLED_BUT_IN_DEVELOPMENT  # 999991
    FEATURE_TEST_IDEALLY_DISABLED = public_options_pb2.FEATURE_TEST_IDEALLY_DISABLED  # 999992
    FEATURE_TEST_IDEALLY_DISABLED_AND_IN_DEVELOPMENT = public_options_pb2.FEATURE_TEST_IDEALLY_DISABLED_AND_IN_DEVELOPMENT  # 999993


class LanguageVersion(IntEnum):
    """
    Auto-generated IntEnum for protobuf LanguageVersion.
    
    Values are directly compatible with protobuf integer constants.
    """

    __LanguageVersion__switch_must_have_a_default__ = public_options_pb2.__LanguageVersion__switch_must_have_a_default__  # -1
    LANGUAGE_VERSION_UNSPECIFIED = public_options_pb2.LANGUAGE_VERSION_UNSPECIFIED  # 0
    VERSION_CURRENT = public_options_pb2.VERSION_CURRENT  # 1
    VERSION_1_0 = public_options_pb2.VERSION_1_0  # 10000
    VERSION_1_1 = public_options_pb2.VERSION_1_1  # 11000
    VERSION_1_2 = public_options_pb2.VERSION_1_2  # 12000
    VERSION_1_3 = public_options_pb2.VERSION_1_3  # 13000
    VERSION_1_4 = public_options_pb2.VERSION_1_4  # 14000


class NameResolutionMode(IntEnum):
    """
    Auto-generated IntEnum for protobuf NameResolutionMode.
    
    Values are directly compatible with protobuf integer constants.
    """

    NAME_RESOLUTION_DEFAULT = public_options_pb2.NAME_RESOLUTION_DEFAULT  # 0
    NAME_RESOLUTION_STRICT = public_options_pb2.NAME_RESOLUTION_STRICT  # 1


class NormalizeMode(IntEnum):
    """
    Auto-generated IntEnum for protobuf NormalizeMode.
    
    Values are directly compatible with protobuf integer constants.
    """

    NFC = functions_normalize_mode_pb2.NFC  # 0
    NFKC = functions_normalize_mode_pb2.NFKC  # 1
    NFD = functions_normalize_mode_pb2.NFD  # 2
    NFKD = functions_normalize_mode_pb2.NFKD  # 3


class ParameterMode(IntEnum):
    """
    Auto-generated IntEnum for protobuf ParameterMode.
    
    Values are directly compatible with protobuf integer constants.
    """

    PARAMETER_NAMED = public_options_pb2.PARAMETER_NAMED  # 0
    PARAMETER_POSITIONAL = public_options_pb2.PARAMETER_POSITIONAL  # 1
    PARAMETER_NONE = public_options_pb2.PARAMETER_NONE  # 2


class ParseLocationRecordType(IntEnum):
    """
    Auto-generated IntEnum for protobuf ParseLocationRecordType.
    
    Values are directly compatible with protobuf integer constants.
    """

    PARSE_LOCATION_RECORD_NONE = public_options_pb2.PARSE_LOCATION_RECORD_NONE  # 0
    PARSE_LOCATION_RECORD_FULL_NODE_SCOPE = public_options_pb2.PARSE_LOCATION_RECORD_FULL_NODE_SCOPE  # 1
    PARSE_LOCATION_RECORD_CODE_SEARCH = public_options_pb2.PARSE_LOCATION_RECORD_CODE_SEARCH  # 2


class ProductMode(IntEnum):
    """
    Auto-generated IntEnum for protobuf ProductMode.
    
    Values are directly compatible with protobuf integer constants.
    """

    PRODUCT_INTERNAL = public_options_pb2.PRODUCT_INTERNAL  # 0
    PRODUCT_EXTERNAL = public_options_pb2.PRODUCT_EXTERNAL  # 1


class ResolvedASTRewrite(IntEnum):
    """
    Auto-generated IntEnum for protobuf ResolvedASTRewrite.
    
    Values are directly compatible with protobuf integer constants.
    """

    REWRITE_INVALID_DO_NOT_USE = public_options_pb2.REWRITE_INVALID_DO_NOT_USE  # 0
    REWRITE_FLATTEN = public_options_pb2.REWRITE_FLATTEN  # 1
    REWRITE_ANONYMIZATION = public_options_pb2.REWRITE_ANONYMIZATION  # 2
    REWRITE_PROTO_MAP_FNS = public_options_pb2.REWRITE_PROTO_MAP_FNS  # 3
    REWRITE_ARRAY_FILTER_TRANSFORM = public_options_pb2.REWRITE_ARRAY_FILTER_TRANSFORM  # 4
    REWRITE_UNPIVOT = public_options_pb2.REWRITE_UNPIVOT  # 5
    REWRITE_PIVOT = public_options_pb2.REWRITE_PIVOT  # 6
    REWRITE_ARRAY_INCLUDES = public_options_pb2.REWRITE_ARRAY_INCLUDES  # 7
    REWRITE_TYPEOF_FUNCTION = public_options_pb2.REWRITE_TYPEOF_FUNCTION  # 8
    REWRITE_WITH_EXPR = public_options_pb2.REWRITE_WITH_EXPR  # 9
    REWRITE_INLINE_SQL_FUNCTIONS = public_options_pb2.REWRITE_INLINE_SQL_FUNCTIONS  # 10
    REWRITE_INLINE_SQL_TVFS = public_options_pb2.REWRITE_INLINE_SQL_TVFS  # 11
    REWRITE_NULLIFERROR_FUNCTION = public_options_pb2.REWRITE_NULLIFERROR_FUNCTION  # 12
    REWRITE_LIKE_ANY_ALL = public_options_pb2.REWRITE_LIKE_ANY_ALL  # 14
    REWRITE_BUILTIN_FUNCTION_INLINER = public_options_pb2.REWRITE_BUILTIN_FUNCTION_INLINER  # 16
    REWRITE_INLINE_SQL_VIEWS = public_options_pb2.REWRITE_INLINE_SQL_VIEWS  # 17
    REWRITE_INLINE_SQL_UDAS = public_options_pb2.REWRITE_INLINE_SQL_UDAS  # 22
    REWRITE_GROUPING_SET = public_options_pb2.REWRITE_GROUPING_SET  # 23
    REWRITE_INSERT_DML_VALUES = public_options_pb2.REWRITE_INSERT_DML_VALUES  # 24
    REWRITE_MULTIWAY_UNNEST = public_options_pb2.REWRITE_MULTIWAY_UNNEST  # 25
    REWRITE_AGGREGATION_THRESHOLD = public_options_pb2.REWRITE_AGGREGATION_THRESHOLD  # 26
    REWRITE_PIPE_ASSERT = public_options_pb2.REWRITE_PIPE_ASSERT  # 27
    REWRITE_ORDER_BY_AND_LIMIT_IN_AGGREGATE = public_options_pb2.REWRITE_ORDER_BY_AND_LIMIT_IN_AGGREGATE  # 28
    REWRITE_PIPE_IF = public_options_pb2.REWRITE_PIPE_IF  # 29
    REWRITE_GENERALIZED_QUERY_STMT = public_options_pb2.REWRITE_GENERALIZED_QUERY_STMT  # 31
    REWRITE_IS_FIRST_IS_LAST_FUNCTION = public_options_pb2.REWRITE_IS_FIRST_IS_LAST_FUNCTION  # 32
    REWRITE_MEASURE_TYPE = public_options_pb2.REWRITE_MEASURE_TYPE  # 34
    REWRITE_APPLY_ENABLED_REWRITES_TO_TEMPLATED_FUNCTION_CALLS = public_options_pb2.REWRITE_APPLY_ENABLED_REWRITES_TO_TEMPLATED_FUNCTION_CALLS  # 35
    REWRITE_UPDATE_CONSTRUCTOR = public_options_pb2.REWRITE_UPDATE_CONSTRUCTOR  # 36
    REWRITE_MATCH_RECOGNIZE_FUNCTION = public_options_pb2.REWRITE_MATCH_RECOGNIZE_FUNCTION  # 37
    REWRITE_PIPE_DESCRIBE = public_options_pb2.REWRITE_PIPE_DESCRIBE  # 38
    REWRITE_SUBPIPELINE_STMT = public_options_pb2.REWRITE_SUBPIPELINE_STMT  # 39
    REWRITE_ROW_TYPE = public_options_pb2.REWRITE_ROW_TYPE  # 40
    REWRITE_VARIADIC_FUNCTION_SIGNATURE_EXPANDER = public_options_pb2.REWRITE_VARIADIC_FUNCTION_SIGNATURE_EXPANDER  # 41
    REWRITE_TEST_DEFAULT_DISABLED = public_options_pb2.REWRITE_TEST_DEFAULT_DISABLED  # 999991
    REWRITE_TEST_DEFAULT_ENABLED = public_options_pb2.REWRITE_TEST_DEFAULT_ENABLED  # 999992
    REWRITE_TEST_DEFAULT_DISABLED_AND_IN_DEVELOPMENT = public_options_pb2.REWRITE_TEST_DEFAULT_DISABLED_AND_IN_DEVELOPMENT  # 999993
    REWRITE_TEST_DEFAULT_ENABLED_AND_IN_DEVELOPMENT = public_options_pb2.REWRITE_TEST_DEFAULT_ENABLED_AND_IN_DEVELOPMENT  # 999994


class ResolvedNodeKind(IntEnum):
    """
    Auto-generated IntEnum for protobuf ResolvedNodeKind.
    
    Values are directly compatible with protobuf integer constants.
    """

    __ResolvedNodeKind__switch_must_have_default__ = resolved_ast_resolved_node_kind_pb2.__ResolvedNodeKind__switch_must_have_default__  # -1
    RESOLVED_LITERAL = resolved_ast_resolved_node_kind_pb2.RESOLVED_LITERAL  # 3
    RESOLVED_PARAMETER = resolved_ast_resolved_node_kind_pb2.RESOLVED_PARAMETER  # 4
    RESOLVED_EXPRESSION_COLUMN = resolved_ast_resolved_node_kind_pb2.RESOLVED_EXPRESSION_COLUMN  # 5
    RESOLVED_COLUMN_REF = resolved_ast_resolved_node_kind_pb2.RESOLVED_COLUMN_REF  # 6
    RESOLVED_FUNCTION_CALL = resolved_ast_resolved_node_kind_pb2.RESOLVED_FUNCTION_CALL  # 8
    RESOLVED_AGGREGATE_FUNCTION_CALL = resolved_ast_resolved_node_kind_pb2.RESOLVED_AGGREGATE_FUNCTION_CALL  # 9
    RESOLVED_ANALYTIC_FUNCTION_CALL = resolved_ast_resolved_node_kind_pb2.RESOLVED_ANALYTIC_FUNCTION_CALL  # 10
    RESOLVED_CAST = resolved_ast_resolved_node_kind_pb2.RESOLVED_CAST  # 11
    RESOLVED_MAKE_STRUCT = resolved_ast_resolved_node_kind_pb2.RESOLVED_MAKE_STRUCT  # 12
    RESOLVED_MAKE_PROTO = resolved_ast_resolved_node_kind_pb2.RESOLVED_MAKE_PROTO  # 13
    RESOLVED_MAKE_PROTO_FIELD = resolved_ast_resolved_node_kind_pb2.RESOLVED_MAKE_PROTO_FIELD  # 14
    RESOLVED_GET_STRUCT_FIELD = resolved_ast_resolved_node_kind_pb2.RESOLVED_GET_STRUCT_FIELD  # 15
    RESOLVED_GET_PROTO_FIELD = resolved_ast_resolved_node_kind_pb2.RESOLVED_GET_PROTO_FIELD  # 16
    RESOLVED_SUBQUERY_EXPR = resolved_ast_resolved_node_kind_pb2.RESOLVED_SUBQUERY_EXPR  # 17
    RESOLVED_SINGLE_ROW_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_SINGLE_ROW_SCAN  # 19
    RESOLVED_TABLE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_TABLE_SCAN  # 20
    RESOLVED_JOIN_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_JOIN_SCAN  # 21
    RESOLVED_ARRAY_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_ARRAY_SCAN  # 22
    RESOLVED_COLUMN_HOLDER = resolved_ast_resolved_node_kind_pb2.RESOLVED_COLUMN_HOLDER  # 23
    RESOLVED_FILTER_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_FILTER_SCAN  # 24
    RESOLVED_AGGREGATE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_AGGREGATE_SCAN  # 25
    RESOLVED_SET_OPERATION_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_SET_OPERATION_SCAN  # 26
    RESOLVED_ORDER_BY_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_ORDER_BY_SCAN  # 27
    RESOLVED_LIMIT_OFFSET_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_LIMIT_OFFSET_SCAN  # 28
    RESOLVED_WITH_REF_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_WITH_REF_SCAN  # 29
    RESOLVED_ANALYTIC_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_ANALYTIC_SCAN  # 30
    RESOLVED_SAMPLE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_SAMPLE_SCAN  # 31
    RESOLVED_COMPUTED_COLUMN = resolved_ast_resolved_node_kind_pb2.RESOLVED_COMPUTED_COLUMN  # 32
    RESOLVED_ORDER_BY_ITEM = resolved_ast_resolved_node_kind_pb2.RESOLVED_ORDER_BY_ITEM  # 33
    RESOLVED_OUTPUT_COLUMN = resolved_ast_resolved_node_kind_pb2.RESOLVED_OUTPUT_COLUMN  # 34
    RESOLVED_PROJECT_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_PROJECT_SCAN  # 35
    RESOLVED_EXPLAIN_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_EXPLAIN_STMT  # 37
    RESOLVED_QUERY_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_QUERY_STMT  # 38
    RESOLVED_CREATE_TABLE_AS_SELECT_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_TABLE_AS_SELECT_STMT  # 40
    RESOLVED_CREATE_VIEW_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_VIEW_STMT  # 41
    RESOLVED_CREATE_EXTERNAL_TABLE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_EXTERNAL_TABLE_STMT  # 42
    RESOLVED_EXPORT_DATA_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_EXPORT_DATA_STMT  # 43
    RESOLVED_DEFINE_TABLE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_DEFINE_TABLE_STMT  # 44
    RESOLVED_DESCRIBE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_DESCRIBE_STMT  # 45
    RESOLVED_SHOW_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_SHOW_STMT  # 46
    RESOLVED_BEGIN_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_BEGIN_STMT  # 47
    RESOLVED_COMMIT_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_COMMIT_STMT  # 48
    RESOLVED_ROLLBACK_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ROLLBACK_STMT  # 49
    RESOLVED_DROP_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_DROP_STMT  # 50
    RESOLVED_WITH_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_WITH_SCAN  # 51
    RESOLVED_WITH_ENTRY = resolved_ast_resolved_node_kind_pb2.RESOLVED_WITH_ENTRY  # 52
    RESOLVED_OPTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_OPTION  # 53
    RESOLVED_WINDOW_PARTITIONING = resolved_ast_resolved_node_kind_pb2.RESOLVED_WINDOW_PARTITIONING  # 54
    RESOLVED_WINDOW_ORDERING = resolved_ast_resolved_node_kind_pb2.RESOLVED_WINDOW_ORDERING  # 55
    RESOLVED_WINDOW_FRAME = resolved_ast_resolved_node_kind_pb2.RESOLVED_WINDOW_FRAME  # 56
    RESOLVED_ANALYTIC_FUNCTION_GROUP = resolved_ast_resolved_node_kind_pb2.RESOLVED_ANALYTIC_FUNCTION_GROUP  # 57
    RESOLVED_WINDOW_FRAME_EXPR = resolved_ast_resolved_node_kind_pb2.RESOLVED_WINDOW_FRAME_EXPR  # 58
    RESOLVED_DMLVALUE = resolved_ast_resolved_node_kind_pb2.RESOLVED_DMLVALUE  # 59
    RESOLVED_DMLDEFAULT = resolved_ast_resolved_node_kind_pb2.RESOLVED_DMLDEFAULT  # 60
    RESOLVED_ASSERT_ROWS_MODIFIED = resolved_ast_resolved_node_kind_pb2.RESOLVED_ASSERT_ROWS_MODIFIED  # 61
    RESOLVED_INSERT_ROW = resolved_ast_resolved_node_kind_pb2.RESOLVED_INSERT_ROW  # 62
    RESOLVED_INSERT_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_INSERT_STMT  # 63
    RESOLVED_DELETE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_DELETE_STMT  # 64
    RESOLVED_UPDATE_ITEM = resolved_ast_resolved_node_kind_pb2.RESOLVED_UPDATE_ITEM  # 65
    RESOLVED_UPDATE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_UPDATE_STMT  # 66
    RESOLVED_PRIVILEGE = resolved_ast_resolved_node_kind_pb2.RESOLVED_PRIVILEGE  # 67
    RESOLVED_GRANT_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRANT_STMT  # 69
    RESOLVED_REVOKE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_REVOKE_STMT  # 70
    RESOLVED_ALTER_TABLE_SET_OPTIONS_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_TABLE_SET_OPTIONS_STMT  # 71
    RESOLVED_RENAME_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_RENAME_STMT  # 72
    RESOLVED_CREATE_ROW_ACCESS_POLICY_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_ROW_ACCESS_POLICY_STMT  # 73
    RESOLVED_DROP_ROW_ACCESS_POLICY_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_DROP_ROW_ACCESS_POLICY_STMT  # 74
    RESOLVED_ALTER_ROW_ACCESS_POLICY_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_ROW_ACCESS_POLICY_STMT  # 75
    RESOLVED_CREATE_FUNCTION_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_FUNCTION_STMT  # 76
    RESOLVED_ARGUMENT_DEF = resolved_ast_resolved_node_kind_pb2.RESOLVED_ARGUMENT_DEF  # 77
    RESOLVED_ARGUMENT_REF = resolved_ast_resolved_node_kind_pb2.RESOLVED_ARGUMENT_REF  # 78
    RESOLVED_ARGUMENT_LIST = resolved_ast_resolved_node_kind_pb2.RESOLVED_ARGUMENT_LIST  # 79
    RESOLVED_DROP_FUNCTION_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_DROP_FUNCTION_STMT  # 80
    RESOLVED_TVFSCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_TVFSCAN  # 81
    RESOLVED_FUNCTION_ARGUMENT = resolved_ast_resolved_node_kind_pb2.RESOLVED_FUNCTION_ARGUMENT  # 82
    RESOLVED_CALL_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CALL_STMT  # 83
    RESOLVED_FUNCTION_SIGNATURE_HOLDER = resolved_ast_resolved_node_kind_pb2.RESOLVED_FUNCTION_SIGNATURE_HOLDER  # 84
    RESOLVED_AGGREGATE_HAVING_MODIFIER = resolved_ast_resolved_node_kind_pb2.RESOLVED_AGGREGATE_HAVING_MODIFIER  # 85
    RESOLVED_IMPORT_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_IMPORT_STMT  # 86
    RESOLVED_MODULE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_MODULE_STMT  # 87
    RESOLVED_CREATE_TABLE_FUNCTION_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_TABLE_FUNCTION_STMT  # 88
    RESOLVED_RELATION_ARGUMENT_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_RELATION_ARGUMENT_SCAN  # 89
    RESOLVED_CREATE_TABLE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_TABLE_STMT  # 90
    RESOLVED_COLUMN_DEFINITION = resolved_ast_resolved_node_kind_pb2.RESOLVED_COLUMN_DEFINITION  # 91
    RESOLVED_PRIMARY_KEY = resolved_ast_resolved_node_kind_pb2.RESOLVED_PRIMARY_KEY  # 92
    RESOLVED_GROUPING_SET = resolved_ast_resolved_node_kind_pb2.RESOLVED_GROUPING_SET  # 93
    RESOLVED_SET_OPERATION_ITEM = resolved_ast_resolved_node_kind_pb2.RESOLVED_SET_OPERATION_ITEM  # 94
    RESOLVED_CREATE_DATABASE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_DATABASE_STMT  # 95
    RESOLVED_INDEX_ITEM = resolved_ast_resolved_node_kind_pb2.RESOLVED_INDEX_ITEM  # 96
    RESOLVED_CREATE_INDEX_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_INDEX_STMT  # 97
    RESOLVED_ASSERT_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ASSERT_STMT  # 98
    RESOLVED_CREATE_CONSTANT_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_CONSTANT_STMT  # 99
    RESOLVED_MERGE_WHEN = resolved_ast_resolved_node_kind_pb2.RESOLVED_MERGE_WHEN  # 100
    RESOLVED_MERGE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_MERGE_STMT  # 101
    RESOLVED_UPDATE_ITEM_ELEMENT = resolved_ast_resolved_node_kind_pb2.RESOLVED_UPDATE_ITEM_ELEMENT  # 102
    RESOLVED_CONSTANT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CONSTANT  # 103
    RESOLVED_COLUMN_ANNOTATIONS = resolved_ast_resolved_node_kind_pb2.RESOLVED_COLUMN_ANNOTATIONS  # 104
    RESOLVED_GENERATED_COLUMN_INFO = resolved_ast_resolved_node_kind_pb2.RESOLVED_GENERATED_COLUMN_INFO  # 105
    RESOLVED_CREATE_MODEL_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_MODEL_STMT  # 107
    RESOLVED_MODEL = resolved_ast_resolved_node_kind_pb2.RESOLVED_MODEL  # 109
    RESOLVED_FOREIGN_KEY = resolved_ast_resolved_node_kind_pb2.RESOLVED_FOREIGN_KEY  # 110
    RESOLVED_ANONYMIZED_AGGREGATE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_ANONYMIZED_AGGREGATE_SCAN  # 112
    RESOLVED_CHECK_CONSTRAINT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CHECK_CONSTRAINT  # 113
    RESOLVED_ALTER_TABLE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_TABLE_STMT  # 115
    RESOLVED_SET_OPTIONS_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_SET_OPTIONS_ACTION  # 117
    RESOLVED_ALTER_VIEW_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_VIEW_STMT  # 118
    RESOLVED_CREATE_MATERIALIZED_VIEW_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_MATERIALIZED_VIEW_STMT  # 119
    RESOLVED_SET_TRANSACTION_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_SET_TRANSACTION_STMT  # 120
    RESOLVED_DROP_MATERIALIZED_VIEW_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_DROP_MATERIALIZED_VIEW_STMT  # 121
    RESOLVED_START_BATCH_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_START_BATCH_STMT  # 122
    RESOLVED_RUN_BATCH_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_RUN_BATCH_STMT  # 123
    RESOLVED_ABORT_BATCH_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ABORT_BATCH_STMT  # 124
    RESOLVED_CREATE_PROCEDURE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_PROCEDURE_STMT  # 125
    RESOLVED_UNNEST_ITEM = resolved_ast_resolved_node_kind_pb2.RESOLVED_UNNEST_ITEM  # 126
    RESOLVED_ALTER_MATERIALIZED_VIEW_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_MATERIALIZED_VIEW_STMT  # 127
    RESOLVED_REPLACE_FIELD_ITEM = resolved_ast_resolved_node_kind_pb2.RESOLVED_REPLACE_FIELD_ITEM  # 128
    RESOLVED_REPLACE_FIELD = resolved_ast_resolved_node_kind_pb2.RESOLVED_REPLACE_FIELD  # 129
    RESOLVED_GET_PROTO_ONEOF = resolved_ast_resolved_node_kind_pb2.RESOLVED_GET_PROTO_ONEOF  # 130
    RESOLVED_ADD_COLUMN_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_ADD_COLUMN_ACTION  # 131
    RESOLVED_DROP_COLUMN_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_DROP_COLUMN_ACTION  # 132
    RESOLVED_TRUNCATE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_TRUNCATE_STMT  # 133
    RESOLVED_ALTER_DATABASE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_DATABASE_STMT  # 134
    RESOLVED_GRANT_TO_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRANT_TO_ACTION  # 135
    RESOLVED_FILTER_USING_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_FILTER_USING_ACTION  # 136
    RESOLVED_REVOKE_FROM_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_REVOKE_FROM_ACTION  # 137
    RESOLVED_RENAME_TO_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_RENAME_TO_ACTION  # 138
    RESOLVED_SYSTEM_VARIABLE = resolved_ast_resolved_node_kind_pb2.RESOLVED_SYSTEM_VARIABLE  # 139
    RESOLVED_EXECUTE_IMMEDIATE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_EXECUTE_IMMEDIATE_STMT  # 140
    RESOLVED_CONNECTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_CONNECTION  # 141
    RESOLVED_ASSIGNMENT_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ASSIGNMENT_STMT  # 142
    RESOLVED_EXECUTE_IMMEDIATE_ARGUMENT = resolved_ast_resolved_node_kind_pb2.RESOLVED_EXECUTE_IMMEDIATE_ARGUMENT  # 143
    RESOLVED_DESCRIPTOR = resolved_ast_resolved_node_kind_pb2.RESOLVED_DESCRIPTOR  # 144
    RESOLVED_ALTER_ALL_ROW_ACCESS_POLICIES_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_ALL_ROW_ACCESS_POLICIES_STMT  # 145
    RESOLVED_RECURSIVE_REF_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_RECURSIVE_REF_SCAN  # 147
    RESOLVED_RECURSIVE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_RECURSIVE_SCAN  # 148
    RESOLVED_FLATTEN = resolved_ast_resolved_node_kind_pb2.RESOLVED_FLATTEN  # 149
    RESOLVED_FLATTENED_ARG = resolved_ast_resolved_node_kind_pb2.RESOLVED_FLATTENED_ARG  # 150
    RESOLVED_EXTENDED_CAST_ELEMENT = resolved_ast_resolved_node_kind_pb2.RESOLVED_EXTENDED_CAST_ELEMENT  # 151
    RESOLVED_EXPORT_MODEL_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_EXPORT_MODEL_STMT  # 152
    RESOLVED_WITH_PARTITION_COLUMNS = resolved_ast_resolved_node_kind_pb2.RESOLVED_WITH_PARTITION_COLUMNS  # 153
    RESOLVED_CREATE_ENTITY_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_ENTITY_STMT  # 154
    RESOLVED_ALTER_ENTITY_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_ENTITY_STMT  # 155
    RESOLVED_SET_AS_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_SET_AS_ACTION  # 156
    RESOLVED_CREATE_SCHEMA_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_SCHEMA_STMT  # 157
    RESOLVED_EXTENDED_CAST = resolved_ast_resolved_node_kind_pb2.RESOLVED_EXTENDED_CAST  # 158
    RESOLVED_INLINE_LAMBDA = resolved_ast_resolved_node_kind_pb2.RESOLVED_INLINE_LAMBDA  # 159
    RESOLVED_ALTER_SCHEMA_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_SCHEMA_STMT  # 160
    RESOLVED_PIVOT_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_PIVOT_SCAN  # 161
    RESOLVED_ADD_CONSTRAINT_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_ADD_CONSTRAINT_ACTION  # 163
    RESOLVED_DROP_CONSTRAINT_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_DROP_CONSTRAINT_ACTION  # 164
    RESOLVED_GET_JSON_FIELD = resolved_ast_resolved_node_kind_pb2.RESOLVED_GET_JSON_FIELD  # 165
    RESOLVED_PIVOT_COLUMN = resolved_ast_resolved_node_kind_pb2.RESOLVED_PIVOT_COLUMN  # 166
    RESOLVED_ALTER_COLUMN_OPTIONS_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_COLUMN_OPTIONS_ACTION  # 169
    RESOLVED_RETURNING_CLAUSE = resolved_ast_resolved_node_kind_pb2.RESOLVED_RETURNING_CLAUSE  # 170
    RESOLVED_UNPIVOT_ARG = resolved_ast_resolved_node_kind_pb2.RESOLVED_UNPIVOT_ARG  # 171
    RESOLVED_UNPIVOT_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_UNPIVOT_SCAN  # 172
    RESOLVED_FILTER_FIELD_ARG = resolved_ast_resolved_node_kind_pb2.RESOLVED_FILTER_FIELD_ARG  # 173
    RESOLVED_FILTER_FIELD = resolved_ast_resolved_node_kind_pb2.RESOLVED_FILTER_FIELD  # 174
    RESOLVED_DROP_TABLE_FUNCTION_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_DROP_TABLE_FUNCTION_STMT  # 175
    RESOLVED_GROUP_ROWS_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_GROUP_ROWS_SCAN  # 176
    RESOLVED_CLONE_DATA_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CLONE_DATA_STMT  # 177
    RESOLVED_ALTER_COLUMN_DROP_NOT_NULL_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_COLUMN_DROP_NOT_NULL_ACTION  # 178
    RESOLVED_TABLE_AND_COLUMN_INFO = resolved_ast_resolved_node_kind_pb2.RESOLVED_TABLE_AND_COLUMN_INFO  # 179
    RESOLVED_ANALYZE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ANALYZE_STMT  # 180
    RESOLVED_ALTER_COLUMN_SET_DATA_TYPE_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_COLUMN_SET_DATA_TYPE_ACTION  # 181
    RESOLVED_CREATE_SNAPSHOT_TABLE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_SNAPSHOT_TABLE_STMT  # 182
    RESOLVED_DROP_SNAPSHOT_TABLE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_DROP_SNAPSHOT_TABLE_STMT  # 183
    RESOLVED_DROP_PRIMARY_KEY_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_DROP_PRIMARY_KEY_ACTION  # 184
    RESOLVED_RENAME_COLUMN_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_RENAME_COLUMN_ACTION  # 185
    RESOLVED_AUX_LOAD_DATA_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_AUX_LOAD_DATA_STMT  # 186
    RESOLVED_SET_COLLATE_CLAUSE = resolved_ast_resolved_node_kind_pb2.RESOLVED_SET_COLLATE_CLAUSE  # 187
    RESOLVED_COLUMN_DEFAULT_VALUE = resolved_ast_resolved_node_kind_pb2.RESOLVED_COLUMN_DEFAULT_VALUE  # 188
    RESOLVED_CREATE_PRIVILEGE_RESTRICTION_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_PRIVILEGE_RESTRICTION_STMT  # 191
    RESOLVED_DROP_PRIVILEGE_RESTRICTION_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_DROP_PRIVILEGE_RESTRICTION_STMT  # 192
    RESOLVED_RESTRICT_TO_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_RESTRICT_TO_ACTION  # 193
    RESOLVED_ADD_TO_RESTRICTEE_LIST_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_ADD_TO_RESTRICTEE_LIST_ACTION  # 194
    RESOLVED_REMOVE_FROM_RESTRICTEE_LIST_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_REMOVE_FROM_RESTRICTEE_LIST_ACTION  # 195
    RESOLVED_ALTER_PRIVILEGE_RESTRICTION_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_PRIVILEGE_RESTRICTION_STMT  # 196
    RESOLVED_WITH_EXPR = resolved_ast_resolved_node_kind_pb2.RESOLVED_WITH_EXPR  # 197
    RESOLVED_ALTER_COLUMN_SET_DEFAULT_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_COLUMN_SET_DEFAULT_ACTION  # 198
    RESOLVED_ALTER_COLUMN_DROP_DEFAULT_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_COLUMN_DROP_DEFAULT_ACTION  # 199
    RESOLVED_OBJECT_UNIT = resolved_ast_resolved_node_kind_pb2.RESOLVED_OBJECT_UNIT  # 200
    RESOLVED_ALTER_SUB_ENTITY_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_SUB_ENTITY_ACTION  # 202
    RESOLVED_ADD_SUB_ENTITY_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_ADD_SUB_ENTITY_ACTION  # 203
    RESOLVED_DROP_SUB_ENTITY_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_DROP_SUB_ENTITY_ACTION  # 204
    RESOLVED_ALTER_MODEL_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_MODEL_STMT  # 205
    RESOLVED_CATALOG_COLUMN_REF = resolved_ast_resolved_node_kind_pb2.RESOLVED_CATALOG_COLUMN_REF  # 206
    RESOLVED_EXECUTE_AS_ROLE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_EXECUTE_AS_ROLE_SCAN  # 207
    RESOLVED_GRAPH_TABLE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_TABLE_SCAN  # 208
    RESOLVED_GRAPH_NODE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_NODE_SCAN  # 209
    RESOLVED_GRAPH_GET_ELEMENT_PROPERTY = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_GET_ELEMENT_PROPERTY  # 210
    RESOLVED_GRAPH_LABEL_NARY_EXPR = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_LABEL_NARY_EXPR  # 212
    RESOLVED_GRAPH_LABEL = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_LABEL  # 213
    RESOLVED_GRAPH_WILD_CARD_LABEL = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_WILD_CARD_LABEL  # 214
    RESOLVED_GRAPH_EDGE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_EDGE_SCAN  # 216
    RESOLVED_GRAPH_ELEMENT_IDENTIFIER = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_ELEMENT_IDENTIFIER  # 217
    RESOLVED_GRAPH_ELEMENT_PROPERTY = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_ELEMENT_PROPERTY  # 218
    RESOLVED_GRAPH_MAKE_ELEMENT = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_MAKE_ELEMENT  # 219
    RESOLVED_GRAPH_PATH_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_PATH_SCAN  # 220
    RESOLVED_DIFFERENTIAL_PRIVACY_AGGREGATE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_DIFFERENTIAL_PRIVACY_AGGREGATE_SCAN  # 221
    RESOLVED_AUX_LOAD_DATA_PARTITION_FILTER = resolved_ast_resolved_node_kind_pb2.RESOLVED_AUX_LOAD_DATA_PARTITION_FILTER  # 222
    RESOLVED_CREATE_PROPERTY_GRAPH_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_PROPERTY_GRAPH_STMT  # 223
    RESOLVED_GRAPH_ELEMENT_TABLE = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_ELEMENT_TABLE  # 224
    RESOLVED_GRAPH_NODE_TABLE_REFERENCE = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_NODE_TABLE_REFERENCE  # 225
    RESOLVED_CREATE_MODEL_ALIASED_QUERY = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_MODEL_ALIASED_QUERY  # 226
    RESOLVED_UNDROP_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_UNDROP_STMT  # 227
    RESOLVED_AGGREGATION_THRESHOLD_AGGREGATE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_AGGREGATION_THRESHOLD_AGGREGATE_SCAN  # 228
    RESOLVED_GRAPH_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_SCAN  # 229
    RESOLVED_GRAPH_ELEMENT_LABEL = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_ELEMENT_LABEL  # 230
    RESOLVED_GRAPH_PROPERTY_DECLARATION = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_PROPERTY_DECLARATION  # 231
    RESOLVED_GRAPH_PROPERTY_DEFINITION = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_PROPERTY_DEFINITION  # 232
    RESOLVED_SEQUENCE = resolved_ast_resolved_node_kind_pb2.RESOLVED_SEQUENCE  # 233
    RESOLVED_EXPORT_METADATA_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_EXPORT_METADATA_STMT  # 234
    RESOLVED_CREATE_APPROX_VIEW_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_APPROX_VIEW_STMT  # 235
    RESOLVED_ALTER_APPROX_VIEW_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_APPROX_VIEW_STMT  # 236
    RESOLVED_GROUPING_SET_MULTI_COLUMN = resolved_ast_resolved_node_kind_pb2.RESOLVED_GROUPING_SET_MULTI_COLUMN  # 237
    RESOLVED_ROLLUP = resolved_ast_resolved_node_kind_pb2.RESOLVED_ROLLUP  # 239
    RESOLVED_CUBE = resolved_ast_resolved_node_kind_pb2.RESOLVED_CUBE  # 240
    RESOLVED_GROUPING_CALL = resolved_ast_resolved_node_kind_pb2.RESOLVED_GROUPING_CALL  # 241
    RESOLVED_DROP_INDEX_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_DROP_INDEX_STMT  # 242
    RESOLVED_ALTER_COLUMN_DROP_GENERATED_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_COLUMN_DROP_GENERATED_ACTION  # 243
    RESOLVED_IDENTITY_COLUMN_INFO = resolved_ast_resolved_node_kind_pb2.RESOLVED_IDENTITY_COLUMN_INFO  # 244
    RESOLVED_GRAPH_PATH_PATTERN_QUANTIFIER = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_PATH_PATTERN_QUANTIFIER  # 245
    RESOLVED_GRAPH_REF_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_REF_SCAN  # 246
    RESOLVED_GRAPH_LINEAR_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_LINEAR_SCAN  # 247
    RESOLVED_CREATE_EXTERNAL_SCHEMA_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_EXTERNAL_SCHEMA_STMT  # 249
    RESOLVED_ALTER_EXTERNAL_SCHEMA_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_EXTERNAL_SCHEMA_STMT  # 250
    RESOLVED_STATIC_DESCRIBE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_STATIC_DESCRIBE_SCAN  # 251
    RESOLVED_ASSERT_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_ASSERT_SCAN  # 252
    RESOLVED_DEFERRED_COMPUTED_COLUMN = resolved_ast_resolved_node_kind_pb2.RESOLVED_DEFERRED_COMPUTED_COLUMN  # 255
    RESOLVED_RECURSION_DEPTH_MODIFIER = resolved_ast_resolved_node_kind_pb2.RESOLVED_RECURSION_DEPTH_MODIFIER  # 256
    RESOLVED_ARRAY_AGGREGATE = resolved_ast_resolved_node_kind_pb2.RESOLVED_ARRAY_AGGREGATE  # 257
    RESOLVED_GRAPH_MAKE_ARRAY_VARIABLE = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_MAKE_ARRAY_VARIABLE  # 258
    RESOLVED_GRAPH_PATH_MODE = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_PATH_MODE  # 259
    RESOLVED_GRAPH_PATH_SEARCH_PREFIX = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_PATH_SEARCH_PREFIX  # 260
    RESOLVED_BARRIER_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_BARRIER_SCAN  # 261
    RESOLVED_GRAPH_IS_LABELED_PREDICATE = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_IS_LABELED_PREDICATE  # 262
    RESOLVED_CREATE_CONNECTION_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_CONNECTION_STMT  # 263
    RESOLVED_ALTER_CONNECTION_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_CONNECTION_STMT  # 264
    RESOLVED_MATCH_RECOGNIZE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_MATCH_RECOGNIZE_SCAN  # 265
    RESOLVED_MATCH_RECOGNIZE_VARIABLE_DEFINITION = resolved_ast_resolved_node_kind_pb2.RESOLVED_MATCH_RECOGNIZE_VARIABLE_DEFINITION  # 266
    RESOLVED_MATCH_RECOGNIZE_PATTERN_EMPTY = resolved_ast_resolved_node_kind_pb2.RESOLVED_MATCH_RECOGNIZE_PATTERN_EMPTY  # 268
    RESOLVED_MATCH_RECOGNIZE_PATTERN_VARIABLE_REF = resolved_ast_resolved_node_kind_pb2.RESOLVED_MATCH_RECOGNIZE_PATTERN_VARIABLE_REF  # 269
    RESOLVED_MATCH_RECOGNIZE_PATTERN_OPERATION = resolved_ast_resolved_node_kind_pb2.RESOLVED_MATCH_RECOGNIZE_PATTERN_OPERATION  # 270
    RESOLVED_MATCH_RECOGNIZE_PATTERN_QUANTIFICATION = resolved_ast_resolved_node_kind_pb2.RESOLVED_MATCH_RECOGNIZE_PATTERN_QUANTIFICATION  # 271
    RESOLVED_LOG_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_LOG_SCAN  # 272
    RESOLVED_SUBPIPELINE = resolved_ast_resolved_node_kind_pb2.RESOLVED_SUBPIPELINE  # 273
    RESOLVED_SUBPIPELINE_INPUT_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_SUBPIPELINE_INPUT_SCAN  # 274
    RESOLVED_LOCK_MODE = resolved_ast_resolved_node_kind_pb2.RESOLVED_LOCK_MODE  # 275
    RESOLVED_MATCH_RECOGNIZE_PATTERN_ANCHOR = resolved_ast_resolved_node_kind_pb2.RESOLVED_MATCH_RECOGNIZE_PATTERN_ANCHOR  # 276
    RESOLVED_PIPE_IF_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_PIPE_IF_SCAN  # 277
    RESOLVED_PIPE_IF_CASE = resolved_ast_resolved_node_kind_pb2.RESOLVED_PIPE_IF_CASE  # 278
    RESOLVED_OUTPUT_SCHEMA = resolved_ast_resolved_node_kind_pb2.RESOLVED_OUTPUT_SCHEMA  # 279
    RESOLVED_MEASURE_GROUP = resolved_ast_resolved_node_kind_pb2.RESOLVED_MEASURE_GROUP  # 280
    RESOLVED_ON_CONFLICT_CLAUSE = resolved_ast_resolved_node_kind_pb2.RESOLVED_ON_CONFLICT_CLAUSE  # 281
    RESOLVED_GENERALIZED_QUERY_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_GENERALIZED_QUERY_STMT  # 282
    RESOLVED_PIPE_FORK_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_PIPE_FORK_SCAN  # 283
    RESOLVED_GENERALIZED_QUERY_SUBPIPELINE = resolved_ast_resolved_node_kind_pb2.RESOLVED_GENERALIZED_QUERY_SUBPIPELINE  # 284
    RESOLVED_PIPE_EXPORT_DATA_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_PIPE_EXPORT_DATA_SCAN  # 285
    RESOLVED_PIPE_CREATE_TABLE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_PIPE_CREATE_TABLE_SCAN  # 286
    RESOLVED_MULTI_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_MULTI_STMT  # 287
    RESOLVED_CREATE_WITH_ENTRY_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_WITH_ENTRY_STMT  # 288
    RESOLVED_PIPE_TEE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_PIPE_TEE_SCAN  # 289
    RESOLVED_GRAPH_DYNAMIC_LABEL_SPECIFICATION = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_DYNAMIC_LABEL_SPECIFICATION  # 290
    RESOLVED_GRAPH_DYNAMIC_PROPERTIES_SPECIFICATION = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_DYNAMIC_PROPERTIES_SPECIFICATION  # 291
    RESOLVED_ALTER_INDEX_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_INDEX_STMT  # 292
    RESOLVED_ADD_COLUMN_IDENTIFIER_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_ADD_COLUMN_IDENTIFIER_ACTION  # 293
    RESOLVED_REBUILD_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_REBUILD_ACTION  # 294
    RESOLVED_UPDATE_FIELD_ITEM = resolved_ast_resolved_node_kind_pb2.RESOLVED_UPDATE_FIELD_ITEM  # 295
    RESOLVED_UPDATE_CONSTRUCTOR = resolved_ast_resolved_node_kind_pb2.RESOLVED_UPDATE_CONSTRUCTOR  # 296
    RESOLVED_PIPE_INSERT_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_PIPE_INSERT_SCAN  # 297
    RESOLVED_GRAPH_PATH_COST = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_PATH_COST  # 298
    RESOLVED_GRAPH_CALL_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_GRAPH_CALL_SCAN  # 299
    RESOLVED_DESCRIBE_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_DESCRIBE_SCAN  # 300
    RESOLVED_UNSET_ARGUMENT_SCAN = resolved_ast_resolved_node_kind_pb2.RESOLVED_UNSET_ARGUMENT_SCAN  # 301
    RESOLVED_GROUPING_SET_LIST = resolved_ast_resolved_node_kind_pb2.RESOLVED_GROUPING_SET_LIST  # 302
    RESOLVED_GROUPING_SET_PRODUCT = resolved_ast_resolved_node_kind_pb2.RESOLVED_GROUPING_SET_PRODUCT  # 303
    RESOLVED_ALTER_COLUMN_SET_GENERATED_ACTION = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_COLUMN_SET_GENERATED_ACTION  # 304
    RESOLVED_CREATE_SEQUENCE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_CREATE_SEQUENCE_STMT  # 306
    RESOLVED_ALTER_SEQUENCE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_ALTER_SEQUENCE_STMT  # 307
    RESOLVED_SUBPIPELINE_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_SUBPIPELINE_STMT  # 308
    RESOLVED_STATEMENT_WITH_PIPE_OPERATORS_STMT = resolved_ast_resolved_node_kind_pb2.RESOLVED_STATEMENT_WITH_PIPE_OPERATORS_STMT  # 310
    RESOLVED_GET_ROW_FIELD = resolved_ast_resolved_node_kind_pb2.RESOLVED_GET_ROW_FIELD  # 314


class RoundingMode(IntEnum):
    """
    Auto-generated IntEnum for protobuf RoundingMode.
    
    Values are directly compatible with protobuf integer constants.
    """

    ROUNDING_MODE_UNSPECIFIED = functions_rounding_mode_pb2.ROUNDING_MODE_UNSPECIFIED  # 0
    ROUND_HALF_AWAY_FROM_ZERO = functions_rounding_mode_pb2.ROUND_HALF_AWAY_FROM_ZERO  # 1
    ROUND_HALF_EVEN = functions_rounding_mode_pb2.ROUND_HALF_EVEN  # 2


class SchemaObjectKind(IntEnum):
    """
    Auto-generated IntEnum for protobuf SchemaObjectKind.
    
    Values are directly compatible with protobuf integer constants.
    """

    __SchemaObjectKind__switch_must_have_a_default__ = parser_ast_enums_pb2.__SchemaObjectKind__switch_must_have_a_default__  # -1
    kInvalidSchemaObjectKind = parser_ast_enums_pb2.kInvalidSchemaObjectKind  # 1
    kAggregateFunction = parser_ast_enums_pb2.kAggregateFunction  # 2
    kConstant = parser_ast_enums_pb2.kConstant  # 3
    kDatabase = parser_ast_enums_pb2.kDatabase  # 4
    kExternalTable = parser_ast_enums_pb2.kExternalTable  # 5
    kFunction = parser_ast_enums_pb2.kFunction  # 6
    kIndex = parser_ast_enums_pb2.kIndex  # 7
    kMaterializedView = parser_ast_enums_pb2.kMaterializedView  # 8
    kModel = parser_ast_enums_pb2.kModel  # 9
    kProcedure = parser_ast_enums_pb2.kProcedure  # 10
    kSchema = parser_ast_enums_pb2.kSchema  # 11
    kTable = parser_ast_enums_pb2.kTable  # 12
    kTableFunction = parser_ast_enums_pb2.kTableFunction  # 13
    kView = parser_ast_enums_pb2.kView  # 14
    kSnapshotTable = parser_ast_enums_pb2.kSnapshotTable  # 15
    kPropertyGraph = parser_ast_enums_pb2.kPropertyGraph  # 16
    kApproxView = parser_ast_enums_pb2.kApproxView  # 17
    kExternalSchema = parser_ast_enums_pb2.kExternalSchema  # 18
    kConnection = parser_ast_enums_pb2.kConnection  # 19
    kSequence = parser_ast_enums_pb2.kSequence  # 20


class SignatureArgumentKind(IntEnum):
    """
    Auto-generated IntEnum for protobuf SignatureArgumentKind.
    
    Values are directly compatible with protobuf integer constants.
    """

    __SignatureArgumentKind__switch_must_have_a_default__ = public_function_pb2.__SignatureArgumentKind__switch_must_have_a_default__  # -1
    ARG_TYPE_FIXED = public_function_pb2.ARG_TYPE_FIXED  # 0
    ARG_TYPE_ANY_1 = public_function_pb2.ARG_TYPE_ANY_1  # 1
    ARG_TYPE_ANY_2 = public_function_pb2.ARG_TYPE_ANY_2  # 2
    ARG_ARRAY_TYPE_ANY_1 = public_function_pb2.ARG_ARRAY_TYPE_ANY_1  # 3
    ARG_ARRAY_TYPE_ANY_2 = public_function_pb2.ARG_ARRAY_TYPE_ANY_2  # 4
    ARG_PROTO_ANY = public_function_pb2.ARG_PROTO_ANY  # 5
    ARG_STRUCT_ANY = public_function_pb2.ARG_STRUCT_ANY  # 6
    ARG_ENUM_ANY = public_function_pb2.ARG_ENUM_ANY  # 7
    ARG_TYPE_ARBITRARY = public_function_pb2.ARG_TYPE_ARBITRARY  # 8
    ARG_TYPE_RELATION = public_function_pb2.ARG_TYPE_RELATION  # 9
    ARG_TYPE_VOID = public_function_pb2.ARG_TYPE_VOID  # 10
    ARG_TYPE_MODEL = public_function_pb2.ARG_TYPE_MODEL  # 11
    ARG_TYPE_CONNECTION = public_function_pb2.ARG_TYPE_CONNECTION  # 12
    ARG_TYPE_DESCRIPTOR = public_function_pb2.ARG_TYPE_DESCRIPTOR  # 13
    ARG_PROTO_MAP_ANY = public_function_pb2.ARG_PROTO_MAP_ANY  # 14
    ARG_PROTO_MAP_KEY_ANY = public_function_pb2.ARG_PROTO_MAP_KEY_ANY  # 15
    ARG_PROTO_MAP_VALUE_ANY = public_function_pb2.ARG_PROTO_MAP_VALUE_ANY  # 16
    ARG_TYPE_LAMBDA = public_function_pb2.ARG_TYPE_LAMBDA  # 17
    ARG_RANGE_TYPE_ANY_1 = public_function_pb2.ARG_RANGE_TYPE_ANY_1  # 18
    ARG_TYPE_GRAPH_NODE = public_function_pb2.ARG_TYPE_GRAPH_NODE  # 19
    ARG_TYPE_GRAPH_EDGE = public_function_pb2.ARG_TYPE_GRAPH_EDGE  # 20
    ARG_TYPE_GRAPH_ELEMENT = public_function_pb2.ARG_TYPE_GRAPH_ELEMENT  # 21
    ARG_TYPE_SEQUENCE = public_function_pb2.ARG_TYPE_SEQUENCE  # 22
    ARG_TYPE_ANY_3 = public_function_pb2.ARG_TYPE_ANY_3  # 23
    ARG_ARRAY_TYPE_ANY_3 = public_function_pb2.ARG_ARRAY_TYPE_ANY_3  # 24
    ARG_TYPE_ANY_4 = public_function_pb2.ARG_TYPE_ANY_4  # 25
    ARG_ARRAY_TYPE_ANY_4 = public_function_pb2.ARG_ARRAY_TYPE_ANY_4  # 26
    ARG_TYPE_ANY_5 = public_function_pb2.ARG_TYPE_ANY_5  # 27
    ARG_ARRAY_TYPE_ANY_5 = public_function_pb2.ARG_ARRAY_TYPE_ANY_5  # 28
    ARG_MAP_TYPE_ANY_1_2 = public_function_pb2.ARG_MAP_TYPE_ANY_1_2  # 29
    ARG_TYPE_GRAPH_PATH = public_function_pb2.ARG_TYPE_GRAPH_PATH  # 30
    ARG_MEASURE_TYPE_ANY_1 = public_function_pb2.ARG_MEASURE_TYPE_ANY_1  # 31
    ARG_TYPE_GRAPH = public_function_pb2.ARG_TYPE_GRAPH  # 32


class StatementContext(IntEnum):
    """
    Auto-generated IntEnum for protobuf StatementContext.
    
    Values are directly compatible with protobuf integer constants.
    """

    CONTEXT_DEFAULT = public_options_pb2.CONTEXT_DEFAULT  # 0
    CONTEXT_MODULE = public_options_pb2.CONTEXT_MODULE  # 1


class TableType(IntEnum):
    """
    Auto-generated IntEnum for protobuf TableType.
    
    Values are directly compatible with protobuf integer constants.
    """

    DEFAULT_TABLE_TYPE = proto_wire_format_annotation_pb2.DEFAULT_TABLE_TYPE  # 0
    SQL_TABLE = proto_wire_format_annotation_pb2.SQL_TABLE  # 1
    VALUE_TABLE = proto_wire_format_annotation_pb2.VALUE_TABLE  # 2


class TypeKind(proto_model_mixins.TypeKindMixin, IntEnum):
    """
    Auto-generated IntEnum for protobuf TypeKind.
    
    Values are directly compatible with protobuf integer constants.
    """

    __TypeKind__switch_must_have_a_default__ = public_type_pb2.__TypeKind__switch_must_have_a_default__  # -1
    TYPE_UNKNOWN = public_type_pb2.TYPE_UNKNOWN  # 0
    TYPE_INT32 = public_type_pb2.TYPE_INT32  # 1
    TYPE_INT64 = public_type_pb2.TYPE_INT64  # 2
    TYPE_UINT32 = public_type_pb2.TYPE_UINT32  # 3
    TYPE_UINT64 = public_type_pb2.TYPE_UINT64  # 4
    TYPE_BOOL = public_type_pb2.TYPE_BOOL  # 5
    TYPE_FLOAT = public_type_pb2.TYPE_FLOAT  # 6
    TYPE_DOUBLE = public_type_pb2.TYPE_DOUBLE  # 7
    TYPE_STRING = public_type_pb2.TYPE_STRING  # 8
    TYPE_BYTES = public_type_pb2.TYPE_BYTES  # 9
    TYPE_DATE = public_type_pb2.TYPE_DATE  # 10
    TYPE_ENUM = public_type_pb2.TYPE_ENUM  # 15
    TYPE_ARRAY = public_type_pb2.TYPE_ARRAY  # 16
    TYPE_STRUCT = public_type_pb2.TYPE_STRUCT  # 17
    TYPE_PROTO = public_type_pb2.TYPE_PROTO  # 18
    TYPE_TIMESTAMP = public_type_pb2.TYPE_TIMESTAMP  # 19
    TYPE_TIME = public_type_pb2.TYPE_TIME  # 20
    TYPE_DATETIME = public_type_pb2.TYPE_DATETIME  # 21
    TYPE_GEOGRAPHY = public_type_pb2.TYPE_GEOGRAPHY  # 22
    TYPE_NUMERIC = public_type_pb2.TYPE_NUMERIC  # 23
    TYPE_BIGNUMERIC = public_type_pb2.TYPE_BIGNUMERIC  # 24
    TYPE_EXTENDED = public_type_pb2.TYPE_EXTENDED  # 25
    TYPE_JSON = public_type_pb2.TYPE_JSON  # 26
    TYPE_INTERVAL = public_type_pb2.TYPE_INTERVAL  # 27
    TYPE_TOKENLIST = public_type_pb2.TYPE_TOKENLIST  # 28
    TYPE_RANGE = public_type_pb2.TYPE_RANGE  # 29
    TYPE_GRAPH_ELEMENT = public_type_pb2.TYPE_GRAPH_ELEMENT  # 30
    TYPE_MAP = public_type_pb2.TYPE_MAP  # 31
    TYPE_UUID = public_type_pb2.TYPE_UUID  # 32
    TYPE_GRAPH_PATH = public_type_pb2.TYPE_GRAPH_PATH  # 33
    TYPE_MEASURE = public_type_pb2.TYPE_MEASURE  # 34
    TYPE_ROW = public_type_pb2.TYPE_ROW  # 36



# ============================================================================
# Proto Model Classes
# ============================================================================

@dataclass
class ASTAfterMatchSkipClauseEnums(ProtoModel):
    """Generated model for ASTAfterMatchSkipClauseEnums"""

    # Nested Enums
    class AfterMatchSkipTargetType(IntEnum):
        """
        Auto-generated IntEnum for protobuf AfterMatchSkipTargetType.
        
        Values are directly compatible with protobuf integer constants.
        """

        AFTER_MATCH_SKIP_TARGET_UNSPECIFIED = parser_ast_enums_pb2.ASTAfterMatchSkipClauseEnums.AFTER_MATCH_SKIP_TARGET_UNSPECIFIED  # 0
        PAST_LAST_ROW = parser_ast_enums_pb2.ASTAfterMatchSkipClauseEnums.PAST_LAST_ROW  # 1
        TO_NEXT_ROW = parser_ast_enums_pb2.ASTAfterMatchSkipClauseEnums.TO_NEXT_ROW  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTAfterMatchSkipClauseEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAlterIndexStatementEnums(ProtoModel):
    """Generated model for ASTAlterIndexStatementEnums"""

    # Nested Enums
    class IndexType(IntEnum):
        """
        Auto-generated IntEnum for protobuf IndexType.
        
        Values are directly compatible with protobuf integer constants.
        """

        INDEX_DEFAULT = parser_ast_enums_pb2.ASTAlterIndexStatementEnums.INDEX_DEFAULT  # 0
        INDEX_SEARCH = parser_ast_enums_pb2.ASTAlterIndexStatementEnums.INDEX_SEARCH  # 1
        INDEX_VECTOR = parser_ast_enums_pb2.ASTAlterIndexStatementEnums.INDEX_VECTOR  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTAlterIndexStatementEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAnySomeAllOpEnums(ProtoModel):
    """Generated model for ASTAnySomeAllOpEnums"""

    # Nested Enums
    class Op(IntEnum):
        """
        Auto-generated IntEnum for protobuf Op.
        
        Values are directly compatible with protobuf integer constants.
        """

        kUninitialized = parser_ast_enums_pb2.ASTAnySomeAllOpEnums.kUninitialized  # 1
        kAny = parser_ast_enums_pb2.ASTAnySomeAllOpEnums.kAny  # 2
        kSome = parser_ast_enums_pb2.ASTAnySomeAllOpEnums.kSome  # 3
        kAll = parser_ast_enums_pb2.ASTAnySomeAllOpEnums.kAll  # 4


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTAnySomeAllOpEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAuxLoadDataStatementEnums(ProtoModel):
    """Generated model for ASTAuxLoadDataStatementEnums"""

    # Nested Enums
    class InsertionMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf InsertionMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTAuxLoadDataStatementEnums.NOT_SET  # 0
        APPEND = parser_ast_enums_pb2.ASTAuxLoadDataStatementEnums.APPEND  # 1
        OVERWRITE = parser_ast_enums_pb2.ASTAuxLoadDataStatementEnums.OVERWRITE  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTAuxLoadDataStatementEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTBinaryExpressionEnums(ProtoModel):
    """Generated model for ASTBinaryExpressionEnums"""

    # Nested Enums
    class Op(IntEnum):
        """
        Auto-generated IntEnum for protobuf Op.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTBinaryExpressionEnums.NOT_SET  # 0
        LIKE = parser_ast_enums_pb2.ASTBinaryExpressionEnums.LIKE  # 1
        IS = parser_ast_enums_pb2.ASTBinaryExpressionEnums.IS  # 2
        EQ = parser_ast_enums_pb2.ASTBinaryExpressionEnums.EQ  # 3
        NE = parser_ast_enums_pb2.ASTBinaryExpressionEnums.NE  # 4
        NE2 = parser_ast_enums_pb2.ASTBinaryExpressionEnums.NE2  # 5
        GT = parser_ast_enums_pb2.ASTBinaryExpressionEnums.GT  # 6
        LT = parser_ast_enums_pb2.ASTBinaryExpressionEnums.LT  # 7
        GE = parser_ast_enums_pb2.ASTBinaryExpressionEnums.GE  # 8
        LE = parser_ast_enums_pb2.ASTBinaryExpressionEnums.LE  # 9
        BITWISE_OR = parser_ast_enums_pb2.ASTBinaryExpressionEnums.BITWISE_OR  # 10
        BITWISE_XOR = parser_ast_enums_pb2.ASTBinaryExpressionEnums.BITWISE_XOR  # 11
        BITWISE_AND = parser_ast_enums_pb2.ASTBinaryExpressionEnums.BITWISE_AND  # 12
        PLUS = parser_ast_enums_pb2.ASTBinaryExpressionEnums.PLUS  # 13
        MINUS = parser_ast_enums_pb2.ASTBinaryExpressionEnums.MINUS  # 14
        MULTIPLY = parser_ast_enums_pb2.ASTBinaryExpressionEnums.MULTIPLY  # 15
        DIVIDE = parser_ast_enums_pb2.ASTBinaryExpressionEnums.DIVIDE  # 16
        CONCAT_OP = parser_ast_enums_pb2.ASTBinaryExpressionEnums.CONCAT_OP  # 17
        DISTINCT = parser_ast_enums_pb2.ASTBinaryExpressionEnums.DISTINCT  # 18
        IS_SOURCE_NODE = parser_ast_enums_pb2.ASTBinaryExpressionEnums.IS_SOURCE_NODE  # 19
        IS_DEST_NODE = parser_ast_enums_pb2.ASTBinaryExpressionEnums.IS_DEST_NODE  # 20


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTBinaryExpressionEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTBracedConstructorLhsEnums(ProtoModel):
    """Generated model for ASTBracedConstructorLhsEnums"""

    # Nested Enums
    class Operation(IntEnum):
        """
        Auto-generated IntEnum for protobuf Operation.
        
        Values are directly compatible with protobuf integer constants.
        """

        UPDATE_SINGLE = parser_ast_enums_pb2.ASTBracedConstructorLhsEnums.UPDATE_SINGLE  # 0
        UPDATE_MANY = parser_ast_enums_pb2.ASTBracedConstructorLhsEnums.UPDATE_MANY  # 1
        UPDATE_SINGLE_NO_CREATION = parser_ast_enums_pb2.ASTBracedConstructorLhsEnums.UPDATE_SINGLE_NO_CREATION  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTBracedConstructorLhsEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTBreakContinueStatementEnums(ProtoModel):
    """Generated model for ASTBreakContinueStatementEnums"""

    # Nested Enums
    class BreakContinueKeyword(IntEnum):
        """
        Auto-generated IntEnum for protobuf BreakContinueKeyword.
        
        Values are directly compatible with protobuf integer constants.
        """

        BREAK = parser_ast_enums_pb2.ASTBreakContinueStatementEnums.BREAK  # 1
        LEAVE = parser_ast_enums_pb2.ASTBreakContinueStatementEnums.LEAVE  # 2
        CONTINUE = parser_ast_enums_pb2.ASTBreakContinueStatementEnums.CONTINUE  # 3
        ITERATE = parser_ast_enums_pb2.ASTBreakContinueStatementEnums.ITERATE  # 4


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTBreakContinueStatementEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTColumnPositionEnums(ProtoModel):
    """Generated model for ASTColumnPositionEnums"""

    # Nested Enums
    class RelativePositionType(IntEnum):
        """
        Auto-generated IntEnum for protobuf RelativePositionType.
        
        Values are directly compatible with protobuf integer constants.
        """

        PRECEDING = parser_ast_enums_pb2.ASTColumnPositionEnums.PRECEDING  # 1
        FOLLOWING = parser_ast_enums_pb2.ASTColumnPositionEnums.FOLLOWING  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTColumnPositionEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTCreateFunctionStmtBaseEnums(ProtoModel):
    """Generated model for ASTCreateFunctionStmtBaseEnums"""

    # Nested Enums
    class DeterminismLevel(IntEnum):
        """
        Auto-generated IntEnum for protobuf DeterminismLevel.
        
        Values are directly compatible with protobuf integer constants.
        """

        DETERMINISM_UNSPECIFIED = parser_ast_enums_pb2.ASTCreateFunctionStmtBaseEnums.DETERMINISM_UNSPECIFIED  # 0
        DETERMINISTIC = parser_ast_enums_pb2.ASTCreateFunctionStmtBaseEnums.DETERMINISTIC  # 1
        NOT_DETERMINISTIC = parser_ast_enums_pb2.ASTCreateFunctionStmtBaseEnums.NOT_DETERMINISTIC  # 2
        IMMUTABLE = parser_ast_enums_pb2.ASTCreateFunctionStmtBaseEnums.IMMUTABLE  # 3
        STABLE = parser_ast_enums_pb2.ASTCreateFunctionStmtBaseEnums.STABLE  # 4
        VOLATILE = parser_ast_enums_pb2.ASTCreateFunctionStmtBaseEnums.VOLATILE  # 5


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTCreateFunctionStmtBaseEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTCreateStatementEnums(ProtoModel):
    """Generated model for ASTCreateStatementEnums"""

    # Nested Enums
    class Scope(IntEnum):
        """
        Auto-generated IntEnum for protobuf Scope.
        
        Values are directly compatible with protobuf integer constants.
        """

        DEFAULT_SCOPE = parser_ast_enums_pb2.ASTCreateStatementEnums.DEFAULT_SCOPE  # 0
        PRIVATE = parser_ast_enums_pb2.ASTCreateStatementEnums.PRIVATE  # 1
        PUBLIC = parser_ast_enums_pb2.ASTCreateStatementEnums.PUBLIC  # 2
        TEMPORARY = parser_ast_enums_pb2.ASTCreateStatementEnums.TEMPORARY  # 3

    class SqlSecurity(IntEnum):
        """
        Auto-generated IntEnum for protobuf SqlSecurity.
        
        Values are directly compatible with protobuf integer constants.
        """

        SQL_SECURITY_UNSPECIFIED = parser_ast_enums_pb2.ASTCreateStatementEnums.SQL_SECURITY_UNSPECIFIED  # 0
        SQL_SECURITY_DEFINER = parser_ast_enums_pb2.ASTCreateStatementEnums.SQL_SECURITY_DEFINER  # 1
        SQL_SECURITY_INVOKER = parser_ast_enums_pb2.ASTCreateStatementEnums.SQL_SECURITY_INVOKER  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTCreateStatementEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTDropStatementEnums(ProtoModel):
    """Generated model for ASTDropStatementEnums"""

    # Nested Enums
    class DropMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf DropMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        DROP_MODE_UNSPECIFIED = parser_ast_enums_pb2.ASTDropStatementEnums.DROP_MODE_UNSPECIFIED  # 0
        RESTRICT = parser_ast_enums_pb2.ASTDropStatementEnums.RESTRICT  # 1
        CASCADE = parser_ast_enums_pb2.ASTDropStatementEnums.CASCADE  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTDropStatementEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTExpressionSubqueryEnums(ProtoModel):
    """Generated model for ASTExpressionSubqueryEnums"""

    # Nested Enums
    class Modifier(IntEnum):
        """
        Auto-generated IntEnum for protobuf Modifier.
        
        Values are directly compatible with protobuf integer constants.
        """

        NONE = parser_ast_enums_pb2.ASTExpressionSubqueryEnums.NONE  # 0
        ARRAY = parser_ast_enums_pb2.ASTExpressionSubqueryEnums.ARRAY  # 1
        EXISTS = parser_ast_enums_pb2.ASTExpressionSubqueryEnums.EXISTS  # 2
        VALUE = parser_ast_enums_pb2.ASTExpressionSubqueryEnums.VALUE  # 3


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTExpressionSubqueryEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTFilterFieldsArgEnums(ProtoModel):
    """Generated model for ASTFilterFieldsArgEnums"""

    # Nested Enums
    class FilterType(IntEnum):
        """
        Auto-generated IntEnum for protobuf FilterType.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTFilterFieldsArgEnums.NOT_SET  # 0
        INCLUDE = parser_ast_enums_pb2.ASTFilterFieldsArgEnums.INCLUDE  # 1
        EXCLUDE = parser_ast_enums_pb2.ASTFilterFieldsArgEnums.EXCLUDE  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTFilterFieldsArgEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTForeignKeyActionsEnums(ProtoModel):
    """Generated model for ASTForeignKeyActionsEnums"""

    # Nested Enums
    class Action(IntEnum):
        """
        Auto-generated IntEnum for protobuf Action.
        
        Values are directly compatible with protobuf integer constants.
        """

        NO_ACTION = parser_ast_enums_pb2.ASTForeignKeyActionsEnums.NO_ACTION  # 0
        RESTRICT = parser_ast_enums_pb2.ASTForeignKeyActionsEnums.RESTRICT  # 1
        CASCADE = parser_ast_enums_pb2.ASTForeignKeyActionsEnums.CASCADE  # 2
        SET_NULL = parser_ast_enums_pb2.ASTForeignKeyActionsEnums.SET_NULL  # 3


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTForeignKeyActionsEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTForeignKeyReferenceEnums(ProtoModel):
    """Generated model for ASTForeignKeyReferenceEnums"""

    # Nested Enums
    class Match(IntEnum):
        """
        Auto-generated IntEnum for protobuf Match.
        
        Values are directly compatible with protobuf integer constants.
        """

        SIMPLE = parser_ast_enums_pb2.ASTForeignKeyReferenceEnums.SIMPLE  # 1
        FULL = parser_ast_enums_pb2.ASTForeignKeyReferenceEnums.FULL  # 2
        NOT_DISTINCT = parser_ast_enums_pb2.ASTForeignKeyReferenceEnums.NOT_DISTINCT  # 3


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTForeignKeyReferenceEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTFunctionCallEnums(ProtoModel):
    """Generated model for ASTFunctionCallEnums"""

    # Nested Enums
    class NullHandlingModifier(IntEnum):
        """
        Auto-generated IntEnum for protobuf NullHandlingModifier.
        
        Values are directly compatible with protobuf integer constants.
        """

        DEFAULT_NULL_HANDLING = parser_ast_enums_pb2.ASTFunctionCallEnums.DEFAULT_NULL_HANDLING  # 0
        IGNORE_NULLS = parser_ast_enums_pb2.ASTFunctionCallEnums.IGNORE_NULLS  # 1
        RESPECT_NULLS = parser_ast_enums_pb2.ASTFunctionCallEnums.RESPECT_NULLS  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTFunctionCallEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTFunctionParameterEnums(ProtoModel):
    """Generated model for ASTFunctionParameterEnums"""

    # Nested Enums
    class ProcedureParameterMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf ProcedureParameterMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTFunctionParameterEnums.NOT_SET  # 0
        IN = parser_ast_enums_pb2.ASTFunctionParameterEnums.IN  # 1
        OUT = parser_ast_enums_pb2.ASTFunctionParameterEnums.OUT  # 2
        INOUT = parser_ast_enums_pb2.ASTFunctionParameterEnums.INOUT  # 3


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTFunctionParameterEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTGeneratedColumnInfoEnums(ProtoModel):
    """Generated model for ASTGeneratedColumnInfoEnums"""

    # Nested Enums
    class StoredMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf StoredMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        NON_STORED = parser_ast_enums_pb2.ASTGeneratedColumnInfoEnums.NON_STORED  # 0
        STORED = parser_ast_enums_pb2.ASTGeneratedColumnInfoEnums.STORED  # 1
        STORED_VOLATILE = parser_ast_enums_pb2.ASTGeneratedColumnInfoEnums.STORED_VOLATILE  # 2

    class GeneratedMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf GeneratedMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        ALWAYS = parser_ast_enums_pb2.ASTGeneratedColumnInfoEnums.ALWAYS  # 0
        BY_DEFAULT = parser_ast_enums_pb2.ASTGeneratedColumnInfoEnums.BY_DEFAULT  # 1


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTGeneratedColumnInfoEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTGraphEdgePatternEnums(ProtoModel):
    """Generated model for ASTGraphEdgePatternEnums"""

    # Nested Enums
    class EdgeOrientation(IntEnum):
        """
        Auto-generated IntEnum for protobuf EdgeOrientation.
        
        Values are directly compatible with protobuf integer constants.
        """

        EDGE_ORIENTATION_NOT_SET = parser_ast_enums_pb2.ASTGraphEdgePatternEnums.EDGE_ORIENTATION_NOT_SET  # 0
        ANY = parser_ast_enums_pb2.ASTGraphEdgePatternEnums.ANY  # 1
        LEFT = parser_ast_enums_pb2.ASTGraphEdgePatternEnums.LEFT  # 2
        RIGHT = parser_ast_enums_pb2.ASTGraphEdgePatternEnums.RIGHT  # 3


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTGraphEdgePatternEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTGraphLabelOperationEnums(ProtoModel):
    """Generated model for ASTGraphLabelOperationEnums"""

    # Nested Enums
    class OperationType(IntEnum):
        """
        Auto-generated IntEnum for protobuf OperationType.
        
        Values are directly compatible with protobuf integer constants.
        """

        OPERATION_TYPE_UNSPECIFIED = parser_ast_enums_pb2.ASTGraphLabelOperationEnums.OPERATION_TYPE_UNSPECIFIED  # 0
        NOT = parser_ast_enums_pb2.ASTGraphLabelOperationEnums.NOT  # 1
        AND = parser_ast_enums_pb2.ASTGraphLabelOperationEnums.AND  # 2
        OR = parser_ast_enums_pb2.ASTGraphLabelOperationEnums.OR  # 3


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTGraphLabelOperationEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTGraphNodeTableReferenceEnums(ProtoModel):
    """Generated model for ASTGraphNodeTableReferenceEnums"""

    # Nested Enums
    class NodeReferenceType(IntEnum):
        """
        Auto-generated IntEnum for protobuf NodeReferenceType.
        
        Values are directly compatible with protobuf integer constants.
        """

        NODE_REFERENCE_TYPE_UNSPECIFIED = parser_ast_enums_pb2.ASTGraphNodeTableReferenceEnums.NODE_REFERENCE_TYPE_UNSPECIFIED  # 0
        SOURCE = parser_ast_enums_pb2.ASTGraphNodeTableReferenceEnums.SOURCE  # 1
        DESTINATION = parser_ast_enums_pb2.ASTGraphNodeTableReferenceEnums.DESTINATION  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTGraphNodeTableReferenceEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTGraphPathModeEnums(ProtoModel):
    """Generated model for ASTGraphPathModeEnums"""

    # Nested Enums
    class PathMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf PathMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        PATH_MODE_UNSPECIFIED = parser_ast_enums_pb2.ASTGraphPathModeEnums.PATH_MODE_UNSPECIFIED  # 0
        WALK = parser_ast_enums_pb2.ASTGraphPathModeEnums.WALK  # 1
        TRAIL = parser_ast_enums_pb2.ASTGraphPathModeEnums.TRAIL  # 2
        SIMPLE = parser_ast_enums_pb2.ASTGraphPathModeEnums.SIMPLE  # 3
        ACYCLIC = parser_ast_enums_pb2.ASTGraphPathModeEnums.ACYCLIC  # 4


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTGraphPathModeEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTGraphPathSearchPrefixEnums(ProtoModel):
    """Generated model for ASTGraphPathSearchPrefixEnums"""

    # Nested Enums
    class PathSearchPrefixType(IntEnum):
        """
        Auto-generated IntEnum for protobuf PathSearchPrefixType.
        
        Values are directly compatible with protobuf integer constants.
        """

        PATH_SEARCH_PREFIX_TYPE_UNSPECIFIED = parser_ast_enums_pb2.ASTGraphPathSearchPrefixEnums.PATH_SEARCH_PREFIX_TYPE_UNSPECIFIED  # 0
        ANY = parser_ast_enums_pb2.ASTGraphPathSearchPrefixEnums.ANY  # 1
        SHORTEST = parser_ast_enums_pb2.ASTGraphPathSearchPrefixEnums.SHORTEST  # 2
        ALL = parser_ast_enums_pb2.ASTGraphPathSearchPrefixEnums.ALL  # 3
        ALL_SHORTEST = parser_ast_enums_pb2.ASTGraphPathSearchPrefixEnums.ALL_SHORTEST  # 4
        CHEAPEST = parser_ast_enums_pb2.ASTGraphPathSearchPrefixEnums.CHEAPEST  # 5
        ALL_CHEAPEST = parser_ast_enums_pb2.ASTGraphPathSearchPrefixEnums.ALL_CHEAPEST  # 6


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTGraphPathSearchPrefixEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTHavingModifierEnums(ProtoModel):
    """Generated model for ASTHavingModifierEnums"""

    # Nested Enums
    class ModifierKind(IntEnum):
        """
        Auto-generated IntEnum for protobuf ModifierKind.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTHavingModifierEnums.NOT_SET  # 0
        MIN = parser_ast_enums_pb2.ASTHavingModifierEnums.MIN  # 1
        MAX = parser_ast_enums_pb2.ASTHavingModifierEnums.MAX  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTHavingModifierEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTImportStatementEnums(ProtoModel):
    """Generated model for ASTImportStatementEnums"""

    # Nested Enums
    class ImportKind(IntEnum):
        """
        Auto-generated IntEnum for protobuf ImportKind.
        
        Values are directly compatible with protobuf integer constants.
        """

        MODULE = parser_ast_enums_pb2.ASTImportStatementEnums.MODULE  # 1
        PROTO = parser_ast_enums_pb2.ASTImportStatementEnums.PROTO  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTImportStatementEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTInsertStatementEnums(ProtoModel):
    """Generated model for ASTInsertStatementEnums"""

    # Nested Enums
    class InsertMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf InsertMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        DEFAULT_MODE = parser_ast_enums_pb2.ASTInsertStatementEnums.DEFAULT_MODE  # 0
        REPLACE = parser_ast_enums_pb2.ASTInsertStatementEnums.REPLACE  # 1
        UPDATE = parser_ast_enums_pb2.ASTInsertStatementEnums.UPDATE  # 2
        IGNORE = parser_ast_enums_pb2.ASTInsertStatementEnums.IGNORE  # 3

    class ParseProgress(IntEnum):
        """
        Auto-generated IntEnum for protobuf ParseProgress.
        
        Values are directly compatible with protobuf integer constants.
        """

        kInitial = parser_ast_enums_pb2.ASTInsertStatementEnums.kInitial  # 1
        kSeenOrIgnoreReplaceUpdate = parser_ast_enums_pb2.ASTInsertStatementEnums.kSeenOrIgnoreReplaceUpdate  # 2
        kSeenTargetPath = parser_ast_enums_pb2.ASTInsertStatementEnums.kSeenTargetPath  # 3
        kSeenColumnList = parser_ast_enums_pb2.ASTInsertStatementEnums.kSeenColumnList  # 4
        kSeenValuesList = parser_ast_enums_pb2.ASTInsertStatementEnums.kSeenValuesList  # 5


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTInsertStatementEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTJoinEnums(ProtoModel):
    """Generated model for ASTJoinEnums"""

    # Nested Enums
    class JoinType(IntEnum):
        """
        Auto-generated IntEnum for protobuf JoinType.
        
        Values are directly compatible with protobuf integer constants.
        """

        DEFAULT_JOIN_TYPE = parser_ast_enums_pb2.ASTJoinEnums.DEFAULT_JOIN_TYPE  # 0
        COMMA = parser_ast_enums_pb2.ASTJoinEnums.COMMA  # 1
        CROSS = parser_ast_enums_pb2.ASTJoinEnums.CROSS  # 2
        FULL = parser_ast_enums_pb2.ASTJoinEnums.FULL  # 3
        INNER = parser_ast_enums_pb2.ASTJoinEnums.INNER  # 4
        LEFT = parser_ast_enums_pb2.ASTJoinEnums.LEFT  # 5
        RIGHT = parser_ast_enums_pb2.ASTJoinEnums.RIGHT  # 6

    class JoinHint(IntEnum):
        """
        Auto-generated IntEnum for protobuf JoinHint.
        
        Values are directly compatible with protobuf integer constants.
        """

        NO_JOIN_HINT = parser_ast_enums_pb2.ASTJoinEnums.NO_JOIN_HINT  # 0
        HASH = parser_ast_enums_pb2.ASTJoinEnums.HASH  # 1
        LOOKUP = parser_ast_enums_pb2.ASTJoinEnums.LOOKUP  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTJoinEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTLockModeEnums(ProtoModel):
    """Generated model for ASTLockModeEnums"""

    # Nested Enums
    class LockStrengthSpec(IntEnum):
        """
        Auto-generated IntEnum for protobuf LockStrengthSpec.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTLockModeEnums.NOT_SET  # 0
        UPDATE = parser_ast_enums_pb2.ASTLockModeEnums.UPDATE  # 1


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTLockModeEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTMergeActionEnums(ProtoModel):
    """Generated model for ASTMergeActionEnums"""

    # Nested Enums
    class ActionType(IntEnum):
        """
        Auto-generated IntEnum for protobuf ActionType.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTMergeActionEnums.NOT_SET  # 0
        INSERT = parser_ast_enums_pb2.ASTMergeActionEnums.INSERT  # 1
        UPDATE = parser_ast_enums_pb2.ASTMergeActionEnums.UPDATE  # 2
        DELETE = parser_ast_enums_pb2.ASTMergeActionEnums.DELETE  # 3


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTMergeActionEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTMergeWhenClauseEnums(ProtoModel):
    """Generated model for ASTMergeWhenClauseEnums"""

    # Nested Enums
    class MatchType(IntEnum):
        """
        Auto-generated IntEnum for protobuf MatchType.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTMergeWhenClauseEnums.NOT_SET  # 0
        MATCHED = parser_ast_enums_pb2.ASTMergeWhenClauseEnums.MATCHED  # 1
        NOT_MATCHED_BY_SOURCE = parser_ast_enums_pb2.ASTMergeWhenClauseEnums.NOT_MATCHED_BY_SOURCE  # 2
        NOT_MATCHED_BY_TARGET = parser_ast_enums_pb2.ASTMergeWhenClauseEnums.NOT_MATCHED_BY_TARGET  # 3


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTMergeWhenClauseEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTNode(ProtoModel):
    """Generated model for ASTNodeProto"""

    parse_location_range: Optional['ParseLocationRange'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTNodeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'parse_location_range': {
            'proto_field': 'parse_location_range',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTOnConflictClauseEnums(ProtoModel):
    """Generated model for ASTOnConflictClauseEnums"""

    # Nested Enums
    class ConflictAction(IntEnum):
        """
        Auto-generated IntEnum for protobuf ConflictAction.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTOnConflictClauseEnums.NOT_SET  # 0
        NOTHING = parser_ast_enums_pb2.ASTOnConflictClauseEnums.NOTHING  # 1
        UPDATE = parser_ast_enums_pb2.ASTOnConflictClauseEnums.UPDATE  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTOnConflictClauseEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTOptionsEntryEnums(ProtoModel):
    """Generated model for ASTOptionsEntryEnums"""

    # Nested Enums
    class AssignmentOp(IntEnum):
        """
        Auto-generated IntEnum for protobuf AssignmentOp.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTOptionsEntryEnums.NOT_SET  # 0
        ASSIGN = parser_ast_enums_pb2.ASTOptionsEntryEnums.ASSIGN  # 1
        ADD_ASSIGN = parser_ast_enums_pb2.ASTOptionsEntryEnums.ADD_ASSIGN  # 2
        SUB_ASSIGN = parser_ast_enums_pb2.ASTOptionsEntryEnums.SUB_ASSIGN  # 3


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTOptionsEntryEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTOrderingExpressionEnums(ProtoModel):
    """Generated model for ASTOrderingExpressionEnums"""

    # Nested Enums
    class OrderingSpec(IntEnum):
        """
        Auto-generated IntEnum for protobuf OrderingSpec.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTOrderingExpressionEnums.NOT_SET  # 0
        ASC = parser_ast_enums_pb2.ASTOrderingExpressionEnums.ASC  # 1
        DESC = parser_ast_enums_pb2.ASTOrderingExpressionEnums.DESC  # 2
        UNSPECIFIED = parser_ast_enums_pb2.ASTOrderingExpressionEnums.UNSPECIFIED  # 3


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTOrderingExpressionEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTRowPatternAnchorEnums(ProtoModel):
    """Generated model for ASTRowPatternAnchorEnums"""

    # Nested Enums
    class Anchor(IntEnum):
        """
        Auto-generated IntEnum for protobuf Anchor.
        
        Values are directly compatible with protobuf integer constants.
        """

        ANCHOR_UNSPECIFIED = parser_ast_enums_pb2.ASTRowPatternAnchorEnums.ANCHOR_UNSPECIFIED  # 0
        START = parser_ast_enums_pb2.ASTRowPatternAnchorEnums.START  # 1
        END = parser_ast_enums_pb2.ASTRowPatternAnchorEnums.END  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTRowPatternAnchorEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTRowPatternOperationEnums(ProtoModel):
    """Generated model for ASTRowPatternOperationEnums"""

    # Nested Enums
    class OperationType(IntEnum):
        """
        Auto-generated IntEnum for protobuf OperationType.
        
        Values are directly compatible with protobuf integer constants.
        """

        OPERATION_TYPE_UNSPECIFIED = parser_ast_enums_pb2.ASTRowPatternOperationEnums.OPERATION_TYPE_UNSPECIFIED  # 0
        CONCAT = parser_ast_enums_pb2.ASTRowPatternOperationEnums.CONCAT  # 1
        ALTERNATE = parser_ast_enums_pb2.ASTRowPatternOperationEnums.ALTERNATE  # 2
        PERMUTE = parser_ast_enums_pb2.ASTRowPatternOperationEnums.PERMUTE  # 3
        EXCLUDE = parser_ast_enums_pb2.ASTRowPatternOperationEnums.EXCLUDE  # 4


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTRowPatternOperationEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTSampleSizeEnums(ProtoModel):
    """Generated model for ASTSampleSizeEnums"""

    # Nested Enums
    class Unit(IntEnum):
        """
        Auto-generated IntEnum for protobuf Unit.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTSampleSizeEnums.NOT_SET  # 0
        ROWS = parser_ast_enums_pb2.ASTSampleSizeEnums.ROWS  # 1
        PERCENT = parser_ast_enums_pb2.ASTSampleSizeEnums.PERCENT  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTSampleSizeEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTSelectAsEnums(ProtoModel):
    """Generated model for ASTSelectAsEnums"""

    # Nested Enums
    class AsMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf AsMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTSelectAsEnums.NOT_SET  # 0
        STRUCT = parser_ast_enums_pb2.ASTSelectAsEnums.STRUCT  # 1
        VALUE = parser_ast_enums_pb2.ASTSelectAsEnums.VALUE  # 2
        TYPE_NAME = parser_ast_enums_pb2.ASTSelectAsEnums.TYPE_NAME  # 3


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTSelectAsEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTSetOperationEnums(ProtoModel):
    """Generated model for ASTSetOperationEnums"""

    # Nested Enums
    class OperationType(IntEnum):
        """
        Auto-generated IntEnum for protobuf OperationType.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTSetOperationEnums.NOT_SET  # 0
        UNION = parser_ast_enums_pb2.ASTSetOperationEnums.UNION  # 1
        EXCEPT = parser_ast_enums_pb2.ASTSetOperationEnums.EXCEPT  # 2
        INTERSECT = parser_ast_enums_pb2.ASTSetOperationEnums.INTERSECT  # 4

    class AllOrDistinct(IntEnum):
        """
        Auto-generated IntEnum for protobuf AllOrDistinct.
        
        Values are directly compatible with protobuf integer constants.
        """

        ALL_OR_DISTINCT_NOT_SET = parser_ast_enums_pb2.ASTSetOperationEnums.ALL_OR_DISTINCT_NOT_SET  # 0
        ALL = parser_ast_enums_pb2.ASTSetOperationEnums.ALL  # 1
        DISTINCT = parser_ast_enums_pb2.ASTSetOperationEnums.DISTINCT  # 2

    class ColumnMatchMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf ColumnMatchMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        BY_POSITION = parser_ast_enums_pb2.ASTSetOperationEnums.BY_POSITION  # 1
        CORRESPONDING = parser_ast_enums_pb2.ASTSetOperationEnums.CORRESPONDING  # 2
        CORRESPONDING_BY = parser_ast_enums_pb2.ASTSetOperationEnums.CORRESPONDING_BY  # 3
        BY_NAME = parser_ast_enums_pb2.ASTSetOperationEnums.BY_NAME  # 4
        BY_NAME_ON = parser_ast_enums_pb2.ASTSetOperationEnums.BY_NAME_ON  # 5

    class ColumnPropagationMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf ColumnPropagationMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        STRICT = parser_ast_enums_pb2.ASTSetOperationEnums.STRICT  # 1
        INNER = parser_ast_enums_pb2.ASTSetOperationEnums.INNER  # 2
        LEFT = parser_ast_enums_pb2.ASTSetOperationEnums.LEFT  # 3
        FULL = parser_ast_enums_pb2.ASTSetOperationEnums.FULL  # 4


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTSetOperationEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTSpannerInterleaveClauseEnums(ProtoModel):
    """Generated model for ASTSpannerInterleaveClauseEnums"""

    # Nested Enums
    class Type(IntEnum):
        """
        Auto-generated IntEnum for protobuf Type.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTSpannerInterleaveClauseEnums.NOT_SET  # 0
        IN = parser_ast_enums_pb2.ASTSpannerInterleaveClauseEnums.IN  # 1
        IN_PARENT = parser_ast_enums_pb2.ASTSpannerInterleaveClauseEnums.IN_PARENT  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTSpannerInterleaveClauseEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTSymbolQuantifierEnums(ProtoModel):
    """Generated model for ASTSymbolQuantifierEnums"""

    # Nested Enums
    class Symbol(IntEnum):
        """
        Auto-generated IntEnum for protobuf Symbol.
        
        Values are directly compatible with protobuf integer constants.
        """

        SYMBOL_UNSPECIFIED = parser_ast_enums_pb2.ASTSymbolQuantifierEnums.SYMBOL_UNSPECIFIED  # 0
        QUESTION_MARK = parser_ast_enums_pb2.ASTSymbolQuantifierEnums.QUESTION_MARK  # 1
        PLUS = parser_ast_enums_pb2.ASTSymbolQuantifierEnums.PLUS  # 2
        STAR = parser_ast_enums_pb2.ASTSymbolQuantifierEnums.STAR  # 3


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTSymbolQuantifierEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTTemplatedParameterTypeEnums(ProtoModel):
    """Generated model for ASTTemplatedParameterTypeEnums"""

    # Nested Enums
    class TemplatedTypeKind(IntEnum):
        """
        Auto-generated IntEnum for protobuf TemplatedTypeKind.
        
        Values are directly compatible with protobuf integer constants.
        """

        UNINITIALIZED = parser_ast_enums_pb2.ASTTemplatedParameterTypeEnums.UNINITIALIZED  # 1
        ANY_TYPE = parser_ast_enums_pb2.ASTTemplatedParameterTypeEnums.ANY_TYPE  # 2
        ANY_PROTO = parser_ast_enums_pb2.ASTTemplatedParameterTypeEnums.ANY_PROTO  # 3
        ANY_ENUM = parser_ast_enums_pb2.ASTTemplatedParameterTypeEnums.ANY_ENUM  # 4
        ANY_STRUCT = parser_ast_enums_pb2.ASTTemplatedParameterTypeEnums.ANY_STRUCT  # 5
        ANY_ARRAY = parser_ast_enums_pb2.ASTTemplatedParameterTypeEnums.ANY_ARRAY  # 6
        ANY_TABLE = parser_ast_enums_pb2.ASTTemplatedParameterTypeEnums.ANY_TABLE  # 7


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTTemplatedParameterTypeEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTTransactionReadWriteModeEnums(ProtoModel):
    """Generated model for ASTTransactionReadWriteModeEnums"""

    # Nested Enums
    class Mode(IntEnum):
        """
        Auto-generated IntEnum for protobuf Mode.
        
        Values are directly compatible with protobuf integer constants.
        """

        INVALID = parser_ast_enums_pb2.ASTTransactionReadWriteModeEnums.INVALID  # 0
        READ_ONLY = parser_ast_enums_pb2.ASTTransactionReadWriteModeEnums.READ_ONLY  # 1
        READ_WRITE = parser_ast_enums_pb2.ASTTransactionReadWriteModeEnums.READ_WRITE  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTTransactionReadWriteModeEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTUnaryExpressionEnums(ProtoModel):
    """Generated model for ASTUnaryExpressionEnums"""

    # Nested Enums
    class Op(IntEnum):
        """
        Auto-generated IntEnum for protobuf Op.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = parser_ast_enums_pb2.ASTUnaryExpressionEnums.NOT_SET  # 0
        NOT = parser_ast_enums_pb2.ASTUnaryExpressionEnums.NOT  # 1
        BITWISE_NOT = parser_ast_enums_pb2.ASTUnaryExpressionEnums.BITWISE_NOT  # 2
        MINUS = parser_ast_enums_pb2.ASTUnaryExpressionEnums.MINUS  # 3
        PLUS = parser_ast_enums_pb2.ASTUnaryExpressionEnums.PLUS  # 4
        IS_UNKNOWN = parser_ast_enums_pb2.ASTUnaryExpressionEnums.IS_UNKNOWN  # 5
        IS_NOT_UNKNOWN = parser_ast_enums_pb2.ASTUnaryExpressionEnums.IS_NOT_UNKNOWN  # 6


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTUnaryExpressionEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTUnpivotClauseEnums(ProtoModel):
    """Generated model for ASTUnpivotClauseEnums"""

    # Nested Enums
    class NullFilter(IntEnum):
        """
        Auto-generated IntEnum for protobuf NullFilter.
        
        Values are directly compatible with protobuf integer constants.
        """

        kUnspecified = parser_ast_enums_pb2.ASTUnpivotClauseEnums.kUnspecified  # 1
        kInclude = parser_ast_enums_pb2.ASTUnpivotClauseEnums.kInclude  # 2
        kExclude = parser_ast_enums_pb2.ASTUnpivotClauseEnums.kExclude  # 3


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTUnpivotClauseEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTWindowFrameEnums(ProtoModel):
    """Generated model for ASTWindowFrameEnums"""

    # Nested Enums
    class FrameUnit(IntEnum):
        """
        Auto-generated IntEnum for protobuf FrameUnit.
        
        Values are directly compatible with protobuf integer constants.
        """

        ROWS = parser_ast_enums_pb2.ASTWindowFrameEnums.ROWS  # 1
        RANGE = parser_ast_enums_pb2.ASTWindowFrameEnums.RANGE  # 2


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTWindowFrameEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTWindowFrameExprEnums(ProtoModel):
    """Generated model for ASTWindowFrameExprEnums"""

    # Nested Enums
    class BoundaryType(IntEnum):
        """
        Auto-generated IntEnum for protobuf BoundaryType.
        
        Values are directly compatible with protobuf integer constants.
        """

        UNBOUNDED_PRECEDING = parser_ast_enums_pb2.ASTWindowFrameExprEnums.UNBOUNDED_PRECEDING  # 1
        OFFSET_PRECEDING = parser_ast_enums_pb2.ASTWindowFrameExprEnums.OFFSET_PRECEDING  # 2
        CURRENT_ROW = parser_ast_enums_pb2.ASTWindowFrameExprEnums.CURRENT_ROW  # 3
        OFFSET_FOLLOWING = parser_ast_enums_pb2.ASTWindowFrameExprEnums.OFFSET_FOLLOWING  # 4
        UNBOUNDED_FOLLOWING = parser_ast_enums_pb2.ASTWindowFrameExprEnums.UNBOUNDED_FOLLOWING  # 5


    _PROTO_CLASS: ClassVar[type] = parser_ast_enums_pb2.ASTWindowFrameExprEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class AllowedHintsAndOptions(ProtoModel):
    """Generated model for AllowedHintsAndOptionsProto"""

    disallow_unknown_options: Optional[bool] = None
    disallow_unknown_hints_with_qualifier: List[str] = field(default_factory=list)
    hint: List['AllowedHintsAndOptions.Hint'] = field(default_factory=list)
    option: List['AllowedHintsAndOptions.Option'] = field(default_factory=list)
    anonymization_option: List['AllowedHintsAndOptions.Option'] = field(default_factory=list)
    differential_privacy_option: List['AllowedHintsAndOptions.Option'] = field(default_factory=list)
    disallow_duplicate_option_names: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = proto_options_pb2.AllowedHintsAndOptionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'disallow_unknown_options': {
            'proto_field': 'disallow_unknown_options',
            'is_message': False,
            'is_repeated': False,
        },
        'disallow_unknown_hints_with_qualifier': {
            'proto_field': 'disallow_unknown_hints_with_qualifier',
            'is_message': False,
            'is_repeated': True,
        },
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': True,
        },
        'option': {
            'proto_field': 'option',
            'is_message': True,
            'is_repeated': True,
        },
        'anonymization_option': {
            'proto_field': 'anonymization_option',
            'is_message': True,
            'is_repeated': True,
        },
        'differential_privacy_option': {
            'proto_field': 'differential_privacy_option',
            'is_message': True,
            'is_repeated': True,
        },
        'disallow_duplicate_option_names': {
            'proto_field': 'disallow_duplicate_option_names',
            'is_message': False,
            'is_repeated': False,
        },
    }

    @dataclass
    class Hint(ProtoModel):
        """Generated model for HintProto"""

        qualifier: Optional[str] = None
        name: Optional[str] = None
        type: Optional['Type'] = None
        allow_unqualified: Optional[bool] = None

        _PROTO_CLASS: ClassVar[type] = proto_options_pb2.AllowedHintsAndOptionsProto.HintProto
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'qualifier': {
                'proto_field': 'qualifier',
                'is_message': False,
                'is_repeated': False,
            },
            'name': {
                'proto_field': 'name',
                'is_message': False,
                'is_repeated': False,
            },
            'type': {
                'proto_field': 'type',
                'is_message': True,
                'is_repeated': False,
            },
            'allow_unqualified': {
                'proto_field': 'allow_unqualified',
                'is_message': False,
                'is_repeated': False,
            },
        }

    @dataclass
    class Option(ProtoModel):
        """Generated model for OptionProto"""

        # Nested Enums
        class ResolvingKind(IntEnum):
            """
            Auto-generated IntEnum for protobuf ResolvingKind.
            
            Values are directly compatible with protobuf integer constants.
            """

            CONSTANT_OR_EMPTY_NAME_SCOPE_IDENTIFIER = proto_options_pb2.AllowedHintsAndOptionsProto.OptionProto.CONSTANT_OR_EMPTY_NAME_SCOPE_IDENTIFIER  # 0
            FROM_NAME_SCOPE_IDENTIFIER = proto_options_pb2.AllowedHintsAndOptionsProto.OptionProto.FROM_NAME_SCOPE_IDENTIFIER  # 1


        name: Optional[str] = None
        type: Optional['Type'] = None
        resolving_kind: Optional['Option.ResolvingKind'] = None
        allow_alter_array: Optional[bool] = None

        _PROTO_CLASS: ClassVar[type] = proto_options_pb2.AllowedHintsAndOptionsProto.OptionProto
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'name': {
                'proto_field': 'name',
                'is_message': False,
                'is_repeated': False,
            },
            'type': {
                'proto_field': 'type',
                'is_message': True,
                'is_repeated': False,
            },
            'resolving_kind': {
                'proto_field': 'resolving_kind',
                'is_message': False,
                'is_repeated': False,
                'is_enum': True,
                'enum_type_name': 'ResolvingKind',
                'enum_parent_message': 'OptionProto',
            },
            'allow_alter_array': {
                'proto_field': 'allow_alter_array',
                'is_message': False,
                'is_repeated': False,
            },
        }


@dataclass
class AnalyzeRequest(ProtoModel):
    """Generated model for AnalyzeRequest"""

    options: Optional['AnalyzerOptions'] = None
    simple_catalog: Optional['SimpleCatalog'] = None
    descriptor_pool_list: Optional['DescriptorPoolList'] = None
    registered_catalog_id: Optional[int] = None
    sql_statement: Optional[str] = None
    parse_resume_location: Optional['ParseResumeLocation'] = None
    sql_expression: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.AnalyzeRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
        'simple_catalog': {
            'proto_field': 'simple_catalog',
            'is_message': True,
            'is_repeated': False,
        },
        'descriptor_pool_list': {
            'proto_field': 'descriptor_pool_list',
            'is_message': True,
            'is_repeated': False,
        },
        'registered_catalog_id': {
            'proto_field': 'registered_catalog_id',
            'is_message': False,
            'is_repeated': False,
        },
        'sql_statement': {
            'proto_field': 'sql_statement',
            'is_message': False,
            'is_repeated': False,
        },
        'parse_resume_location': {
            'proto_field': 'parse_resume_location',
            'is_message': True,
            'is_repeated': False,
        },
        'sql_expression': {
            'proto_field': 'sql_expression',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class AnalyzeResponse(ProtoModel):
    """Generated model for AnalyzeResponse"""

    resolved_statement: Optional['ResolvedStatement'] = None
    resolved_expression: Optional['ResolvedExpr'] = None
    resume_byte_position: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.AnalyzeResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_statement': {
            'proto_field': 'resolved_statement',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_expression': {
            'proto_field': 'resolved_expression',
            'is_message': True,
            'is_repeated': False,
        },
        'resume_byte_position': {
            'proto_field': 'resume_byte_position',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class AnalyzerLogEntry(ProtoModel):
    """Generated model for AnalyzerLogEntry"""

    # Nested Enums
    class LoggedOperationCategory(IntEnum):
        """
        Auto-generated IntEnum for protobuf LoggedOperationCategory.
        
        Values are directly compatible with protobuf integer constants.
        """

        UNKNOWN_LOGGED_OPERATION_CATEGORY = proto_logging_pb2.AnalyzerLogEntry.UNKNOWN_LOGGED_OPERATION_CATEGORY  # 0
        PARSER = proto_logging_pb2.AnalyzerLogEntry.PARSER  # 1
        RESOLVER = proto_logging_pb2.AnalyzerLogEntry.RESOLVER  # 2
        REWRITER = proto_logging_pb2.AnalyzerLogEntry.REWRITER  # 3
        CATALOG_RESOLVER = proto_logging_pb2.AnalyzerLogEntry.CATALOG_RESOLVER  # 4
        VALIDATOR = proto_logging_pb2.AnalyzerLogEntry.VALIDATOR  # 5


    num_lexical_tokens: Optional[int] = None
    overall_execution_stats: Optional['ExecutionStats'] = None
    execution_stats_by_op: List['AnalyzerLogEntry.ExecutionStatsByOpEntry'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_logging_pb2.AnalyzerLogEntry
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'num_lexical_tokens': {
            'proto_field': 'num_lexical_tokens',
            'is_message': False,
            'is_repeated': False,
        },
        'overall_execution_stats': {
            'proto_field': 'overall_execution_stats',
            'is_message': True,
            'is_repeated': False,
        },
        'execution_stats_by_op': {
            'proto_field': 'execution_stats_by_op',
            'is_message': True,
            'is_repeated': True,
        },
    }

    @dataclass
    class ExecutionStatsByOpEntry(ProtoModel):
        """Generated model for ExecutionStatsByOpEntry"""

        key: Optional['AnalyzerLogEntry.LoggedOperationCategory'] = None
        value: Optional['ExecutionStats'] = None

        _PROTO_CLASS: ClassVar[type] = proto_logging_pb2.AnalyzerLogEntry.ExecutionStatsByOpEntry
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'key': {
                'proto_field': 'key',
                'is_message': False,
                'is_repeated': False,
                'is_enum': True,
                'enum_type_name': 'LoggedOperationCategory',
                'enum_parent_message': 'AnalyzerLogEntry',
            },
            'value': {
                'proto_field': 'value',
                'is_message': True,
                'is_repeated': False,
            },
        }


@dataclass
class AnalyzerOptions(ProtoModel):
    """Generated model for AnalyzerOptionsProto"""

    language_options: Optional['LanguageOptions'] = None
    query_parameters: List['AnalyzerOptions.QueryParameter'] = field(default_factory=list)
    positional_query_parameters: List['Type'] = field(default_factory=list)
    expression_columns: List['AnalyzerOptions.QueryParameter'] = field(default_factory=list)
    in_scope_expression_column: Optional['AnalyzerOptions.QueryParameter'] = None
    ddl_pseudo_columns: List['AnalyzerOptions.QueryParameter'] = field(default_factory=list)
    error_message_mode: Optional['ErrorMessageMode'] = None
    default_timezone: Optional[str] = None
    create_new_column_for_each_projected_output: Optional[bool] = None
    prune_unused_columns: Optional[bool] = None
    allow_undeclared_parameters: Optional[bool] = None
    parameter_mode: Optional['ParameterMode'] = None
    allowed_hints_and_options: Optional['AllowedHintsAndOptions'] = None
    statement_context: Optional['StatementContext'] = None
    preserve_column_aliases: Optional[bool] = None
    system_variables: List['AnalyzerOptions.SystemVariable'] = field(default_factory=list)
    target_column_types: List['Type'] = field(default_factory=list)
    enabled_rewrites: List['ResolvedASTRewrite'] = field(default_factory=list)
    parse_location_record_type: Optional['ParseLocationRecordType'] = None
    preserve_unnecessary_cast: Optional[bool] = None
    default_anon_function_report_format: Optional[str] = None
    default_anon_kappa_value: Optional[int] = None
    rewrite_options: Optional['RewriteOptions'] = None
    replace_table_not_found_error_with_tvf_error_if_applicable: Optional[bool] = None
    log_impact_of_lateral_column_references: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = proto_options_pb2.AnalyzerOptionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'language_options': {
            'proto_field': 'language_options',
            'is_message': True,
            'is_repeated': False,
        },
        'query_parameters': {
            'proto_field': 'query_parameters',
            'is_message': True,
            'is_repeated': True,
        },
        'positional_query_parameters': {
            'proto_field': 'positional_query_parameters',
            'is_message': True,
            'is_repeated': True,
        },
        'expression_columns': {
            'proto_field': 'expression_columns',
            'is_message': True,
            'is_repeated': True,
        },
        'in_scope_expression_column': {
            'proto_field': 'in_scope_expression_column',
            'is_message': True,
            'is_repeated': False,
        },
        'ddl_pseudo_columns': {
            'proto_field': 'ddl_pseudo_columns',
            'is_message': True,
            'is_repeated': True,
        },
        'error_message_mode': {
            'proto_field': 'error_message_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ErrorMessageMode',
        },
        'default_timezone': {
            'proto_field': 'default_timezone',
            'is_message': False,
            'is_repeated': False,
        },
        'create_new_column_for_each_projected_output': {
            'proto_field': 'create_new_column_for_each_projected_output',
            'is_message': False,
            'is_repeated': False,
        },
        'prune_unused_columns': {
            'proto_field': 'prune_unused_columns',
            'is_message': False,
            'is_repeated': False,
        },
        'allow_undeclared_parameters': {
            'proto_field': 'allow_undeclared_parameters',
            'is_message': False,
            'is_repeated': False,
        },
        'parameter_mode': {
            'proto_field': 'parameter_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ParameterMode',
        },
        'allowed_hints_and_options': {
            'proto_field': 'allowed_hints_and_options',
            'is_message': True,
            'is_repeated': False,
        },
        'statement_context': {
            'proto_field': 'statement_context',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'StatementContext',
        },
        'preserve_column_aliases': {
            'proto_field': 'preserve_column_aliases',
            'is_message': False,
            'is_repeated': False,
        },
        'system_variables': {
            'proto_field': 'system_variables',
            'is_message': True,
            'is_repeated': True,
        },
        'target_column_types': {
            'proto_field': 'target_column_types',
            'is_message': True,
            'is_repeated': True,
        },
        'enabled_rewrites': {
            'proto_field': 'enabled_rewrites',
            'is_message': False,
            'is_repeated': True,
            'is_enum': True,
            'enum_type_name': 'ResolvedASTRewrite',
        },
        'parse_location_record_type': {
            'proto_field': 'parse_location_record_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ParseLocationRecordType',
        },
        'preserve_unnecessary_cast': {
            'proto_field': 'preserve_unnecessary_cast',
            'is_message': False,
            'is_repeated': False,
        },
        'default_anon_function_report_format': {
            'proto_field': 'default_anon_function_report_format',
            'is_message': False,
            'is_repeated': False,
        },
        'default_anon_kappa_value': {
            'proto_field': 'default_anon_kappa_value',
            'is_message': False,
            'is_repeated': False,
        },
        'rewrite_options': {
            'proto_field': 'rewrite_options',
            'is_message': True,
            'is_repeated': False,
        },
        'replace_table_not_found_error_with_tvf_error_if_applicable': {
            'proto_field': 'replace_table_not_found_error_with_tvf_error_if_applicable',
            'is_message': False,
            'is_repeated': False,
        },
        'log_impact_of_lateral_column_references': {
            'proto_field': 'log_impact_of_lateral_column_references',
            'is_message': False,
            'is_repeated': False,
        },
    }

    @dataclass
    class QueryParameter(ProtoModel):
        """Generated model for QueryParameterProto"""

        name: Optional[str] = None
        type: Optional['Type'] = None

        _PROTO_CLASS: ClassVar[type] = proto_options_pb2.AnalyzerOptionsProto.QueryParameterProto
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'name': {
                'proto_field': 'name',
                'is_message': False,
                'is_repeated': False,
            },
            'type': {
                'proto_field': 'type',
                'is_message': True,
                'is_repeated': False,
            },
        }

    @dataclass
    class SystemVariable(ProtoModel):
        """Generated model for SystemVariableProto"""

        name_path: List[str] = field(default_factory=list)
        type: Optional['Type'] = None

        _PROTO_CLASS: ClassVar[type] = proto_options_pb2.AnalyzerOptionsProto.SystemVariableProto
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'name_path': {
                'proto_field': 'name_path',
                'is_message': False,
                'is_repeated': True,
            },
            'type': {
                'proto_field': 'type',
                'is_message': True,
                'is_repeated': False,
            },
        }


@dataclass
class AnalyzerOptionsRequest(ProtoModel):
    """Generated model for AnalyzerOptionsRequest"""

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.AnalyzerOptionsRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class Annotation(ProtoModel):
    """Generated model for AnnotationProto"""

    id: Optional[int] = None
    value: Optional['SimpleValue'] = None

    _PROTO_CLASS: ClassVar[type] = public_annotation_pb2.AnnotationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'id': {
            'proto_field': 'id',
            'is_message': False,
            'is_repeated': False,
        },
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnnotationMap(ProtoModel):
    """Generated model for AnnotationMapProto"""

    is_null: Optional[bool] = None
    annotations: List['Annotation'] = field(default_factory=list)
    array_element: Optional['AnnotationMap'] = None
    struct_fields: List['AnnotationMap'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_annotation_pb2.AnnotationMapProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_null': {
            'proto_field': 'is_null',
            'is_message': False,
            'is_repeated': False,
        },
        'annotations': {
            'proto_field': 'annotations',
            'is_message': True,
            'is_repeated': True,
        },
        'array_element': {
            'proto_field': 'array_element',
            'is_message': True,
            'is_repeated': False,
        },
        'struct_fields': {
            'proto_field': 'struct_fields',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class AnonOutputValue(ProtoModel):
    """Generated model for AnonOutputValue"""

    int_value: Optional[int] = None
    float_value: Optional[float] = None
    string_value: Optional[str] = None
    noise_confidence_interval: Optional['NoiseConfidenceInterval'] = None

    _PROTO_CLASS: ClassVar[type] = proto_anon_output_with_report_pb2.AnonOutputValue
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'int_value': {
            'proto_field': 'int_value',
            'is_message': False,
            'is_repeated': False,
        },
        'float_value': {
            'proto_field': 'float_value',
            'is_message': False,
            'is_repeated': False,
        },
        'string_value': {
            'proto_field': 'string_value',
            'is_message': False,
            'is_repeated': False,
        },
        'noise_confidence_interval': {
            'proto_field': 'noise_confidence_interval',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnonOutputValues(ProtoModel):
    """Generated model for AnonOutputValues"""

    values: List['AnonOutputValue'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_anon_output_with_report_pb2.AnonOutputValues
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'values': {
            'proto_field': 'values',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class AnonOutputWithReport(ProtoModel):
    """Generated model for AnonOutputWithReport"""

    value: Optional['AnonOutputValue'] = None
    values: Optional['AnonOutputValues'] = None
    bounding_report: Optional['BoundingReport'] = None

    _PROTO_CLASS: ClassVar[type] = proto_anon_output_with_report_pb2.AnonOutputWithReport
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
        'values': {
            'proto_field': 'values',
            'is_message': True,
            'is_repeated': False,
        },
        'bounding_report': {
            'proto_field': 'bounding_report',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTAlterAction(ProtoModel):
    """Generated model for AnyASTAlterActionProto"""

    ast_set_options_action_node: Optional['ASTSetOptionsAction'] = None
    ast_set_as_action_node: Optional['ASTSetAsAction'] = None
    ast_add_constraint_action_node: Optional['ASTAddConstraintAction'] = None
    ast_drop_primary_key_action_node: Optional['ASTDropPrimaryKeyAction'] = None
    ast_drop_constraint_action_node: Optional['ASTDropConstraintAction'] = None
    ast_alter_constraint_enforcement_action_node: Optional['ASTAlterConstraintEnforcementAction'] = None
    ast_alter_constraint_set_options_action_node: Optional['ASTAlterConstraintSetOptionsAction'] = None
    ast_add_column_action_node: Optional['ASTAddColumnAction'] = None
    ast_drop_column_action_node: Optional['ASTDropColumnAction'] = None
    ast_rename_column_action_node: Optional['ASTRenameColumnAction'] = None
    ast_alter_column_type_action_node: Optional['ASTAlterColumnTypeAction'] = None
    ast_alter_column_options_action_node: Optional['ASTAlterColumnOptionsAction'] = None
    ast_alter_column_drop_not_null_action_node: Optional['ASTAlterColumnDropNotNullAction'] = None
    ast_grant_to_clause_node: Optional['ASTGrantToClause'] = None
    ast_filter_using_clause_node: Optional['ASTFilterUsingClause'] = None
    ast_revoke_from_clause_node: Optional['ASTRevokeFromClause'] = None
    ast_rename_to_clause_node: Optional['ASTRenameToClause'] = None
    ast_set_collate_clause_node: Optional['ASTSetCollateClause'] = None
    ast_alter_column_set_default_action_node: Optional['ASTAlterColumnSetDefaultAction'] = None
    ast_alter_column_drop_default_action_node: Optional['ASTAlterColumnDropDefaultAction'] = None
    ast_restrict_to_clause_node: Optional['ASTRestrictToClause'] = None
    ast_add_to_restrictee_list_clause_node: Optional['ASTAddToRestricteeListClause'] = None
    ast_remove_from_restrictee_list_clause_node: Optional['ASTRemoveFromRestricteeListClause'] = None
    ast_alter_sub_entity_action_node: Optional['ASTAlterSubEntityAction'] = None
    ast_add_sub_entity_action_node: Optional['ASTAddSubEntityAction'] = None
    ast_drop_sub_entity_action_node: Optional['ASTDropSubEntityAction'] = None
    ast_add_ttl_action_node: Optional['ASTAddTtlAction'] = None
    ast_replace_ttl_action_node: Optional['ASTReplaceTtlAction'] = None
    ast_drop_ttl_action_node: Optional['ASTDropTtlAction'] = None
    ast_spanner_alter_column_action_node: Optional['ASTSpannerAlterColumnAction'] = None
    ast_spanner_set_on_delete_action_node: Optional['ASTSpannerSetOnDeleteAction'] = None
    ast_alter_column_drop_generated_action_node: Optional['ASTAlterColumnDropGeneratedAction'] = None
    ast_add_column_identifier_action_node: Optional['ASTAddColumnIdentifierAction'] = None
    ast_rebuild_action_node: Optional['ASTRebuildAction'] = None
    ast_alter_column_set_generated_action_node: Optional['ASTAlterColumnSetGeneratedAction'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTAlterActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_set_options_action_node': {
            'proto_field': 'ast_set_options_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_set_as_action_node': {
            'proto_field': 'ast_set_as_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_add_constraint_action_node': {
            'proto_field': 'ast_add_constraint_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_primary_key_action_node': {
            'proto_field': 'ast_drop_primary_key_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_constraint_action_node': {
            'proto_field': 'ast_drop_constraint_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_constraint_enforcement_action_node': {
            'proto_field': 'ast_alter_constraint_enforcement_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_constraint_set_options_action_node': {
            'proto_field': 'ast_alter_constraint_set_options_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_add_column_action_node': {
            'proto_field': 'ast_add_column_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_column_action_node': {
            'proto_field': 'ast_drop_column_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_rename_column_action_node': {
            'proto_field': 'ast_rename_column_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_column_type_action_node': {
            'proto_field': 'ast_alter_column_type_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_column_options_action_node': {
            'proto_field': 'ast_alter_column_options_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_column_drop_not_null_action_node': {
            'proto_field': 'ast_alter_column_drop_not_null_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_grant_to_clause_node': {
            'proto_field': 'ast_grant_to_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_filter_using_clause_node': {
            'proto_field': 'ast_filter_using_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_revoke_from_clause_node': {
            'proto_field': 'ast_revoke_from_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_rename_to_clause_node': {
            'proto_field': 'ast_rename_to_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_set_collate_clause_node': {
            'proto_field': 'ast_set_collate_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_column_set_default_action_node': {
            'proto_field': 'ast_alter_column_set_default_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_column_drop_default_action_node': {
            'proto_field': 'ast_alter_column_drop_default_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_restrict_to_clause_node': {
            'proto_field': 'ast_restrict_to_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_add_to_restrictee_list_clause_node': {
            'proto_field': 'ast_add_to_restrictee_list_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_remove_from_restrictee_list_clause_node': {
            'proto_field': 'ast_remove_from_restrictee_list_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_sub_entity_action_node': {
            'proto_field': 'ast_alter_sub_entity_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_add_sub_entity_action_node': {
            'proto_field': 'ast_add_sub_entity_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_sub_entity_action_node': {
            'proto_field': 'ast_drop_sub_entity_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_add_ttl_action_node': {
            'proto_field': 'ast_add_ttl_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_replace_ttl_action_node': {
            'proto_field': 'ast_replace_ttl_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_ttl_action_node': {
            'proto_field': 'ast_drop_ttl_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_spanner_alter_column_action_node': {
            'proto_field': 'ast_spanner_alter_column_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_spanner_set_on_delete_action_node': {
            'proto_field': 'ast_spanner_set_on_delete_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_column_drop_generated_action_node': {
            'proto_field': 'ast_alter_column_drop_generated_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_add_column_identifier_action_node': {
            'proto_field': 'ast_add_column_identifier_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_rebuild_action_node': {
            'proto_field': 'ast_rebuild_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_column_set_generated_action_node': {
            'proto_field': 'ast_alter_column_set_generated_action_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTAlterStatementBase(ProtoModel):
    """Generated model for AnyASTAlterStatementBaseProto"""

    ast_alter_database_statement_node: Optional['ASTAlterDatabaseStatement'] = None
    ast_alter_schema_statement_node: Optional['ASTAlterSchemaStatement'] = None
    ast_alter_table_statement_node: Optional['ASTAlterTableStatement'] = None
    ast_alter_view_statement_node: Optional['ASTAlterViewStatement'] = None
    ast_alter_materialized_view_statement_node: Optional['ASTAlterMaterializedViewStatement'] = None
    ast_alter_row_access_policy_statement_node: Optional['ASTAlterRowAccessPolicyStatement'] = None
    ast_alter_entity_statement_node: Optional['ASTAlterEntityStatement'] = None
    ast_alter_privilege_restriction_statement_node: Optional['ASTAlterPrivilegeRestrictionStatement'] = None
    ast_alter_model_statement_node: Optional['ASTAlterModelStatement'] = None
    ast_alter_approx_view_statement_node: Optional['ASTAlterApproxViewStatement'] = None
    ast_alter_external_schema_statement_node: Optional['ASTAlterExternalSchemaStatement'] = None
    ast_alter_connection_statement_node: Optional['ASTAlterConnectionStatement'] = None
    ast_alter_index_statement_node: Optional['ASTAlterIndexStatement'] = None
    ast_alter_sequence_statement_node: Optional['ASTAlterSequenceStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTAlterStatementBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_alter_database_statement_node': {
            'proto_field': 'ast_alter_database_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_schema_statement_node': {
            'proto_field': 'ast_alter_schema_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_table_statement_node': {
            'proto_field': 'ast_alter_table_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_view_statement_node': {
            'proto_field': 'ast_alter_view_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_materialized_view_statement_node': {
            'proto_field': 'ast_alter_materialized_view_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_row_access_policy_statement_node': {
            'proto_field': 'ast_alter_row_access_policy_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_entity_statement_node': {
            'proto_field': 'ast_alter_entity_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_privilege_restriction_statement_node': {
            'proto_field': 'ast_alter_privilege_restriction_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_model_statement_node': {
            'proto_field': 'ast_alter_model_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_approx_view_statement_node': {
            'proto_field': 'ast_alter_approx_view_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_external_schema_statement_node': {
            'proto_field': 'ast_alter_external_schema_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_connection_statement_node': {
            'proto_field': 'ast_alter_connection_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_index_statement_node': {
            'proto_field': 'ast_alter_index_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_sequence_statement_node': {
            'proto_field': 'ast_alter_sequence_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTBreakContinueStatement(ProtoModel):
    """Generated model for AnyASTBreakContinueStatementProto"""

    ast_break_statement_node: Optional['ASTBreakStatement'] = None
    ast_continue_statement_node: Optional['ASTContinueStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTBreakContinueStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_break_statement_node': {
            'proto_field': 'ast_break_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_continue_statement_node': {
            'proto_field': 'ast_continue_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTColumnAttribute(ProtoModel):
    """Generated model for AnyASTColumnAttributeProto"""

    ast_not_null_column_attribute_node: Optional['ASTNotNullColumnAttribute'] = None
    ast_hidden_column_attribute_node: Optional['ASTHiddenColumnAttribute'] = None
    ast_primary_key_column_attribute_node: Optional['ASTPrimaryKeyColumnAttribute'] = None
    ast_foreign_key_column_attribute_node: Optional['ASTForeignKeyColumnAttribute'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTColumnAttributeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_not_null_column_attribute_node': {
            'proto_field': 'ast_not_null_column_attribute_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_hidden_column_attribute_node': {
            'proto_field': 'ast_hidden_column_attribute_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_primary_key_column_attribute_node': {
            'proto_field': 'ast_primary_key_column_attribute_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_foreign_key_column_attribute_node': {
            'proto_field': 'ast_foreign_key_column_attribute_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTColumnSchema(ProtoModel):
    """Generated model for AnyASTColumnSchemaProto"""

    ast_simple_column_schema_node: Optional['ASTSimpleColumnSchema'] = None
    ast_struct_column_schema_node: Optional['ASTStructColumnSchema'] = None
    ast_inferred_type_column_schema_node: Optional['ASTInferredTypeColumnSchema'] = None
    ast_element_type_column_schema_node: Optional['ASTElementTypeColumnSchema'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTColumnSchemaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_simple_column_schema_node': {
            'proto_field': 'ast_simple_column_schema_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_struct_column_schema_node': {
            'proto_field': 'ast_struct_column_schema_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_inferred_type_column_schema_node': {
            'proto_field': 'ast_inferred_type_column_schema_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_element_type_column_schema_node': {
            'proto_field': 'ast_element_type_column_schema_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTCreateFunctionStmtBase(ProtoModel):
    """Generated model for AnyASTCreateFunctionStmtBaseProto"""

    ast_create_function_statement_node: Optional['ASTCreateFunctionStatement'] = None
    ast_create_table_function_statement_node: Optional['ASTCreateTableFunctionStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTCreateFunctionStmtBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_create_function_statement_node': {
            'proto_field': 'ast_create_function_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_table_function_statement_node': {
            'proto_field': 'ast_create_table_function_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTCreateSchemaStmtBase(ProtoModel):
    """Generated model for AnyASTCreateSchemaStmtBaseProto"""

    ast_create_schema_statement_node: Optional['ASTCreateSchemaStatement'] = None
    ast_create_external_schema_statement_node: Optional['ASTCreateExternalSchemaStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTCreateSchemaStmtBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_create_schema_statement_node': {
            'proto_field': 'ast_create_schema_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_external_schema_statement_node': {
            'proto_field': 'ast_create_external_schema_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTCreateStatement(ProtoModel):
    """Generated model for AnyASTCreateStatementProto"""

    ast_create_constant_statement_node: Optional['ASTCreateConstantStatement'] = None
    ast_create_procedure_statement_node: Optional['ASTCreateProcedureStatement'] = None
    ast_create_model_statement_node: Optional['ASTCreateModelStatement'] = None
    ast_create_index_statement_node: Optional['ASTCreateIndexStatement'] = None
    ast_create_snapshot_table_statement_node: Optional['ASTCreateSnapshotTableStatement'] = None
    ast_create_entity_statement_node: Optional['ASTCreateEntityStatement'] = None
    ast_create_row_access_policy_statement_node: Optional['ASTCreateRowAccessPolicyStatement'] = None
    ast_create_table_stmt_base_node: Optional['ASTCreateTableStmtBase'] = None
    ast_create_view_statement_base_node: Optional['ASTCreateViewStatementBase'] = None
    ast_create_function_stmt_base_node: Optional['ASTCreateFunctionStmtBase'] = None
    ast_create_privilege_restriction_statement_node: Optional['ASTCreatePrivilegeRestrictionStatement'] = None
    ast_create_property_graph_statement_node: Optional['ASTCreatePropertyGraphStatement'] = None
    ast_create_snapshot_statement_node: Optional['ASTCreateSnapshotStatement'] = None
    ast_create_schema_stmt_base_node: Optional['ASTCreateSchemaStmtBase'] = None
    ast_create_connection_statement_node: Optional['ASTCreateConnectionStatement'] = None
    ast_create_sequence_statement_node: Optional['ASTCreateSequenceStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTCreateStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_create_constant_statement_node': {
            'proto_field': 'ast_create_constant_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_procedure_statement_node': {
            'proto_field': 'ast_create_procedure_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_model_statement_node': {
            'proto_field': 'ast_create_model_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_index_statement_node': {
            'proto_field': 'ast_create_index_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_snapshot_table_statement_node': {
            'proto_field': 'ast_create_snapshot_table_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_entity_statement_node': {
            'proto_field': 'ast_create_entity_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_row_access_policy_statement_node': {
            'proto_field': 'ast_create_row_access_policy_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_table_stmt_base_node': {
            'proto_field': 'ast_create_table_stmt_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_view_statement_base_node': {
            'proto_field': 'ast_create_view_statement_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_function_stmt_base_node': {
            'proto_field': 'ast_create_function_stmt_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_privilege_restriction_statement_node': {
            'proto_field': 'ast_create_privilege_restriction_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_property_graph_statement_node': {
            'proto_field': 'ast_create_property_graph_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_snapshot_statement_node': {
            'proto_field': 'ast_create_snapshot_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_schema_stmt_base_node': {
            'proto_field': 'ast_create_schema_stmt_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_connection_statement_node': {
            'proto_field': 'ast_create_connection_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_sequence_statement_node': {
            'proto_field': 'ast_create_sequence_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTCreateTableStmtBase(ProtoModel):
    """Generated model for AnyASTCreateTableStmtBaseProto"""

    ast_create_table_statement_node: Optional['ASTCreateTableStatement'] = None
    ast_create_external_table_statement_node: Optional['ASTCreateExternalTableStatement'] = None
    ast_aux_load_data_statement_node: Optional['ASTAuxLoadDataStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTCreateTableStmtBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_create_table_statement_node': {
            'proto_field': 'ast_create_table_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_external_table_statement_node': {
            'proto_field': 'ast_create_external_table_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_aux_load_data_statement_node': {
            'proto_field': 'ast_aux_load_data_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTCreateViewStatementBase(ProtoModel):
    """Generated model for AnyASTCreateViewStatementBaseProto"""

    ast_create_view_statement_node: Optional['ASTCreateViewStatement'] = None
    ast_create_materialized_view_statement_node: Optional['ASTCreateMaterializedViewStatement'] = None
    ast_create_approx_view_statement_node: Optional['ASTCreateApproxViewStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTCreateViewStatementBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_create_view_statement_node': {
            'proto_field': 'ast_create_view_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_materialized_view_statement_node': {
            'proto_field': 'ast_create_materialized_view_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_approx_view_statement_node': {
            'proto_field': 'ast_create_approx_view_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTDdlStatement(ProtoModel):
    """Generated model for AnyASTDdlStatementProto"""

    ast_drop_entity_statement_node: Optional['ASTDropEntityStatement'] = None
    ast_drop_function_statement_node: Optional['ASTDropFunctionStatement'] = None
    ast_drop_table_function_statement_node: Optional['ASTDropTableFunctionStatement'] = None
    ast_drop_materialized_view_statement_node: Optional['ASTDropMaterializedViewStatement'] = None
    ast_drop_snapshot_table_statement_node: Optional['ASTDropSnapshotTableStatement'] = None
    ast_create_statement_node: Optional['ASTCreateStatement'] = None
    ast_drop_row_access_policy_statement_node: Optional['ASTDropRowAccessPolicyStatement'] = None
    ast_drop_statement_node: Optional['ASTDropStatement'] = None
    ast_alter_statement_base_node: Optional['ASTAlterStatementBase'] = None
    ast_drop_privilege_restriction_statement_node: Optional['ASTDropPrivilegeRestrictionStatement'] = None
    ast_undrop_statement_node: Optional['ASTUndropStatement'] = None
    ast_drop_index_statement_node: Optional['ASTDropIndexStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTDdlStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_drop_entity_statement_node': {
            'proto_field': 'ast_drop_entity_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_function_statement_node': {
            'proto_field': 'ast_drop_function_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_table_function_statement_node': {
            'proto_field': 'ast_drop_table_function_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_materialized_view_statement_node': {
            'proto_field': 'ast_drop_materialized_view_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_snapshot_table_statement_node': {
            'proto_field': 'ast_drop_snapshot_table_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_statement_node': {
            'proto_field': 'ast_create_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_row_access_policy_statement_node': {
            'proto_field': 'ast_drop_row_access_policy_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_statement_node': {
            'proto_field': 'ast_drop_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_statement_base_node': {
            'proto_field': 'ast_alter_statement_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_privilege_restriction_statement_node': {
            'proto_field': 'ast_drop_privilege_restriction_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_undrop_statement_node': {
            'proto_field': 'ast_undrop_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_index_statement_node': {
            'proto_field': 'ast_drop_index_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTDropIndexStatement(ProtoModel):
    """Generated model for AnyASTDropIndexStatementProto"""

    ast_drop_search_index_statement_node: Optional['ASTDropSearchIndexStatement'] = None
    ast_drop_vector_index_statement_node: Optional['ASTDropVectorIndexStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTDropIndexStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_drop_search_index_statement_node': {
            'proto_field': 'ast_drop_search_index_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_vector_index_statement_node': {
            'proto_field': 'ast_drop_vector_index_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTElementTypeColumnSchema(ProtoModel):
    """Generated model for AnyASTElementTypeColumnSchemaProto"""

    ast_array_column_schema_node: Optional['ASTArrayColumnSchema'] = None
    ast_range_column_schema_node: Optional['ASTRangeColumnSchema'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTElementTypeColumnSchemaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_array_column_schema_node': {
            'proto_field': 'ast_array_column_schema_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_range_column_schema_node': {
            'proto_field': 'ast_range_column_schema_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTExpression(ProtoModel):
    """Generated model for AnyASTExpressionProto"""

    ast_leaf_node: Optional['ASTLeaf'] = None
    ast_identifier_node: Optional['ASTIdentifier'] = None
    ast_generalized_path_expression_node: Optional['ASTGeneralizedPathExpression'] = None
    ast_and_expr_node: Optional['ASTAndExpr'] = None
    ast_binary_expression_node: Optional['ASTBinaryExpression'] = None
    ast_or_expr_node: Optional['ASTOrExpr'] = None
    ast_cast_expression_node: Optional['ASTCastExpression'] = None
    ast_function_call_node: Optional['ASTFunctionCall'] = None
    ast_array_constructor_node: Optional['ASTArrayConstructor'] = None
    ast_struct_constructor_with_parens_node: Optional['ASTStructConstructorWithParens'] = None
    ast_struct_constructor_with_keyword_node: Optional['ASTStructConstructorWithKeyword'] = None
    ast_in_expression_node: Optional['ASTInExpression'] = None
    ast_between_expression_node: Optional['ASTBetweenExpression'] = None
    ast_date_or_time_literal_node: Optional['ASTDateOrTimeLiteral'] = None
    ast_case_value_expression_node: Optional['ASTCaseValueExpression'] = None
    ast_case_no_value_expression_node: Optional['ASTCaseNoValueExpression'] = None
    ast_bitwise_shift_expression_node: Optional['ASTBitwiseShiftExpression'] = None
    ast_dot_star_node: Optional['ASTDotStar'] = None
    ast_dot_star_with_modifiers_node: Optional['ASTDotStarWithModifiers'] = None
    ast_expression_subquery_node: Optional['ASTExpressionSubquery'] = None
    ast_extract_expression_node: Optional['ASTExtractExpression'] = None
    ast_interval_expr_node: Optional['ASTIntervalExpr'] = None
    ast_named_argument_node: Optional['ASTNamedArgument'] = None
    ast_star_with_modifiers_node: Optional['ASTStarWithModifiers'] = None
    ast_unary_expression_node: Optional['ASTUnaryExpression'] = None
    ast_like_expression_node: Optional['ASTLikeExpression'] = None
    ast_parameter_expr_base_node: Optional['ASTParameterExprBase'] = None
    ast_lambda_node: Optional['ASTLambda'] = None
    ast_analytic_function_call_node: Optional['ASTAnalyticFunctionCall'] = None
    ast_new_constructor_node: Optional['ASTNewConstructor'] = None
    ast_default_literal_node: Optional['ASTDefaultLiteral'] = None
    ast_replace_fields_expression_node: Optional['ASTReplaceFieldsExpression'] = None
    ast_braced_constructor_node: Optional['ASTBracedConstructor'] = None
    ast_braced_new_constructor_node: Optional['ASTBracedNewConstructor'] = None
    ast_with_expression_node: Optional['ASTWithExpression'] = None
    ast_range_literal_node: Optional['ASTRangeLiteral'] = None
    ast_sequence_arg_node: Optional['ASTSequenceArg'] = None
    ast_expression_with_alias_node: Optional['ASTExpressionWithAlias'] = None
    ast_struct_braced_constructor_node: Optional['ASTStructBracedConstructor'] = None
    ast_int_or_unbounded_node: Optional['ASTIntOrUnbounded'] = None
    ast_graph_is_labeled_predicate_node: Optional['ASTGraphIsLabeledPredicate'] = None
    ast_braced_constructor_lhs_node: Optional['ASTBracedConstructorLhs'] = None
    ast_update_constructor_node: Optional['ASTUpdateConstructor'] = None
    ast_input_table_argument_node: Optional['ASTInputTableArgument'] = None
    ast_concat_expr_node: Optional['ASTConcatExpr'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_leaf_node': {
            'proto_field': 'ast_leaf_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_identifier_node': {
            'proto_field': 'ast_identifier_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_generalized_path_expression_node': {
            'proto_field': 'ast_generalized_path_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_and_expr_node': {
            'proto_field': 'ast_and_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_binary_expression_node': {
            'proto_field': 'ast_binary_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_or_expr_node': {
            'proto_field': 'ast_or_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_cast_expression_node': {
            'proto_field': 'ast_cast_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_function_call_node': {
            'proto_field': 'ast_function_call_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_array_constructor_node': {
            'proto_field': 'ast_array_constructor_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_struct_constructor_with_parens_node': {
            'proto_field': 'ast_struct_constructor_with_parens_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_struct_constructor_with_keyword_node': {
            'proto_field': 'ast_struct_constructor_with_keyword_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_in_expression_node': {
            'proto_field': 'ast_in_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_between_expression_node': {
            'proto_field': 'ast_between_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_date_or_time_literal_node': {
            'proto_field': 'ast_date_or_time_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_case_value_expression_node': {
            'proto_field': 'ast_case_value_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_case_no_value_expression_node': {
            'proto_field': 'ast_case_no_value_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_bitwise_shift_expression_node': {
            'proto_field': 'ast_bitwise_shift_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_dot_star_node': {
            'proto_field': 'ast_dot_star_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_dot_star_with_modifiers_node': {
            'proto_field': 'ast_dot_star_with_modifiers_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_expression_subquery_node': {
            'proto_field': 'ast_expression_subquery_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_extract_expression_node': {
            'proto_field': 'ast_extract_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_interval_expr_node': {
            'proto_field': 'ast_interval_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_named_argument_node': {
            'proto_field': 'ast_named_argument_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_star_with_modifiers_node': {
            'proto_field': 'ast_star_with_modifiers_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_unary_expression_node': {
            'proto_field': 'ast_unary_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_like_expression_node': {
            'proto_field': 'ast_like_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_parameter_expr_base_node': {
            'proto_field': 'ast_parameter_expr_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_lambda_node': {
            'proto_field': 'ast_lambda_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_analytic_function_call_node': {
            'proto_field': 'ast_analytic_function_call_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_new_constructor_node': {
            'proto_field': 'ast_new_constructor_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_default_literal_node': {
            'proto_field': 'ast_default_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_replace_fields_expression_node': {
            'proto_field': 'ast_replace_fields_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_braced_constructor_node': {
            'proto_field': 'ast_braced_constructor_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_braced_new_constructor_node': {
            'proto_field': 'ast_braced_new_constructor_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_with_expression_node': {
            'proto_field': 'ast_with_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_range_literal_node': {
            'proto_field': 'ast_range_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_sequence_arg_node': {
            'proto_field': 'ast_sequence_arg_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_expression_with_alias_node': {
            'proto_field': 'ast_expression_with_alias_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_struct_braced_constructor_node': {
            'proto_field': 'ast_struct_braced_constructor_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_int_or_unbounded_node': {
            'proto_field': 'ast_int_or_unbounded_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_is_labeled_predicate_node': {
            'proto_field': 'ast_graph_is_labeled_predicate_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_braced_constructor_lhs_node': {
            'proto_field': 'ast_braced_constructor_lhs_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_update_constructor_node': {
            'proto_field': 'ast_update_constructor_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_input_table_argument_node': {
            'proto_field': 'ast_input_table_argument_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_concat_expr_node': {
            'proto_field': 'ast_concat_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTGeneralizedPathExpression(ProtoModel):
    """Generated model for AnyASTGeneralizedPathExpressionProto"""

    ast_path_expression_node: Optional['ASTPathExpression'] = None
    ast_array_element_node: Optional['ASTArrayElement'] = None
    ast_dot_generalized_field_node: Optional['ASTDotGeneralizedField'] = None
    ast_dot_identifier_node: Optional['ASTDotIdentifier'] = None
    ast_extended_path_expression_node: Optional['ASTExtendedPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTGeneralizedPathExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_path_expression_node': {
            'proto_field': 'ast_path_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_array_element_node': {
            'proto_field': 'ast_array_element_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_dot_generalized_field_node': {
            'proto_field': 'ast_dot_generalized_field_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_dot_identifier_node': {
            'proto_field': 'ast_dot_identifier_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_extended_path_expression_node': {
            'proto_field': 'ast_extended_path_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTGqlCallBase(ProtoModel):
    """Generated model for AnyASTGqlCallBaseProto"""

    ast_gql_named_call_node: Optional['ASTGqlNamedCall'] = None
    ast_gql_inline_subquery_call_node: Optional['ASTGqlInlineSubqueryCall'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTGqlCallBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_gql_named_call_node': {
            'proto_field': 'ast_gql_named_call_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_inline_subquery_call_node': {
            'proto_field': 'ast_gql_inline_subquery_call_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTGqlOperator(ProtoModel):
    """Generated model for AnyASTGqlOperatorProto"""

    ast_gql_match_node: Optional['ASTGqlMatch'] = None
    ast_gql_return_node: Optional['ASTGqlReturn'] = None
    ast_gql_operator_list_node: Optional['ASTGqlOperatorList'] = None
    ast_gql_let_node: Optional['ASTGqlLet'] = None
    ast_gql_filter_node: Optional['ASTGqlFilter'] = None
    ast_gql_order_by_and_page_node: Optional['ASTGqlOrderByAndPage'] = None
    ast_gql_set_operation_node: Optional['ASTGqlSetOperation'] = None
    ast_gql_with_node: Optional['ASTGqlWith'] = None
    ast_gql_for_node: Optional['ASTGqlFor'] = None
    ast_gql_sample_node: Optional['ASTGqlSample'] = None
    ast_gql_call_base_node: Optional['ASTGqlCallBase'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTGqlOperatorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_gql_match_node': {
            'proto_field': 'ast_gql_match_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_return_node': {
            'proto_field': 'ast_gql_return_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_operator_list_node': {
            'proto_field': 'ast_gql_operator_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_let_node': {
            'proto_field': 'ast_gql_let_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_filter_node': {
            'proto_field': 'ast_gql_filter_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_order_by_and_page_node': {
            'proto_field': 'ast_gql_order_by_and_page_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_set_operation_node': {
            'proto_field': 'ast_gql_set_operation_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_with_node': {
            'proto_field': 'ast_gql_with_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_for_node': {
            'proto_field': 'ast_gql_for_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_sample_node': {
            'proto_field': 'ast_gql_sample_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_call_base_node': {
            'proto_field': 'ast_gql_call_base_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTGraphElementPattern(ProtoModel):
    """Generated model for AnyASTGraphElementPatternProto"""

    ast_graph_node_pattern_node: Optional['ASTGraphNodePattern'] = None
    ast_graph_edge_pattern_node: Optional['ASTGraphEdgePattern'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTGraphElementPatternProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_graph_node_pattern_node': {
            'proto_field': 'ast_graph_node_pattern_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_edge_pattern_node': {
            'proto_field': 'ast_graph_edge_pattern_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTGraphLabelExpression(ProtoModel):
    """Generated model for AnyASTGraphLabelExpressionProto"""

    ast_graph_element_label_node: Optional['ASTGraphElementLabel'] = None
    ast_graph_wildcard_label_node: Optional['ASTGraphWildcardLabel'] = None
    ast_graph_label_operation_node: Optional['ASTGraphLabelOperation'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTGraphLabelExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_graph_element_label_node': {
            'proto_field': 'ast_graph_element_label_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_wildcard_label_node': {
            'proto_field': 'ast_graph_wildcard_label_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_label_operation_node': {
            'proto_field': 'ast_graph_label_operation_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTGraphPathBase(ProtoModel):
    """Generated model for AnyASTGraphPathBaseProto"""

    ast_graph_element_pattern_node: Optional['ASTGraphElementPattern'] = None
    ast_graph_path_pattern_node: Optional['ASTGraphPathPattern'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTGraphPathBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_graph_element_pattern_node': {
            'proto_field': 'ast_graph_element_pattern_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_path_pattern_node': {
            'proto_field': 'ast_graph_path_pattern_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTLeaf(ProtoModel):
    """Generated model for AnyASTLeafProto"""

    ast_string_literal_node: Optional['ASTStringLiteral'] = None
    ast_numeric_literal_node: Optional['ASTNumericLiteral'] = None
    ast_bignumeric_literal_node: Optional['ASTBigNumericLiteral'] = None
    ast_bytes_literal_node: Optional['ASTBytesLiteral'] = None
    ast_json_literal_node: Optional['ASTJSONLiteral'] = None
    ast_printable_leaf_node: Optional['ASTPrintableLeaf'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTLeafProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_string_literal_node': {
            'proto_field': 'ast_string_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_numeric_literal_node': {
            'proto_field': 'ast_numeric_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_bignumeric_literal_node': {
            'proto_field': 'ast_bignumeric_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_bytes_literal_node': {
            'proto_field': 'ast_bytes_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_json_literal_node': {
            'proto_field': 'ast_json_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_printable_leaf_node': {
            'proto_field': 'ast_printable_leaf_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTLoopStatement(ProtoModel):
    """Generated model for AnyASTLoopStatementProto"""

    ast_while_statement_node: Optional['ASTWhileStatement'] = None
    ast_repeat_statement_node: Optional['ASTRepeatStatement'] = None
    ast_for_in_statement_node: Optional['ASTForInStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTLoopStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_while_statement_node': {
            'proto_field': 'ast_while_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_repeat_statement_node': {
            'proto_field': 'ast_repeat_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_for_in_statement_node': {
            'proto_field': 'ast_for_in_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTNode(ProtoModel):
    """Generated model for AnyASTNodeProto"""

    ast_statement_node: Optional['ASTStatement'] = None
    ast_query_expression_node: Optional['ASTQueryExpression'] = None
    ast_select_list_node: Optional['ASTSelectList'] = None
    ast_select_column_node: Optional['ASTSelectColumn'] = None
    ast_expression_node: Optional['ASTExpression'] = None
    ast_alias_node: Optional['ASTAlias'] = None
    ast_table_expression_node: Optional['ASTTableExpression'] = None
    ast_from_clause_node: Optional['ASTFromClause'] = None
    ast_where_clause_node: Optional['ASTWhereClause'] = None
    ast_grouping_item_node: Optional['ASTGroupingItem'] = None
    ast_group_by_node: Optional['ASTGroupBy'] = None
    ast_ordering_expression_node: Optional['ASTOrderingExpression'] = None
    ast_order_by_node: Optional['ASTOrderBy'] = None
    ast_limit_offset_node: Optional['ASTLimitOffset'] = None
    ast_on_clause_node: Optional['ASTOnClause'] = None
    ast_aliased_query_node: Optional['ASTAliasedQuery'] = None
    ast_with_clause_node: Optional['ASTWithClause'] = None
    ast_having_node: Optional['ASTHaving'] = None
    ast_type_node: Optional['ASTType'] = None
    ast_struct_field_node: Optional['ASTStructField'] = None
    ast_select_as_node: Optional['ASTSelectAs'] = None
    ast_rollup_node: Optional['ASTRollup'] = None
    ast_struct_constructor_arg_node: Optional['ASTStructConstructorArg'] = None
    ast_in_list_node: Optional['ASTInList'] = None
    ast_collate_node: Optional['ASTCollate'] = None
    ast_having_modifier_node: Optional['ASTHavingModifier'] = None
    ast_null_order_node: Optional['ASTNullOrder'] = None
    ast_on_or_using_clause_list_node: Optional['ASTOnOrUsingClauseList'] = None
    ast_partition_by_node: Optional['ASTPartitionBy'] = None
    ast_star_except_list_node: Optional['ASTStarExceptList'] = None
    ast_star_modifiers_node: Optional['ASTStarModifiers'] = None
    ast_star_replace_item_node: Optional['ASTStarReplaceItem'] = None
    ast_unnest_expression_node: Optional['ASTUnnestExpression'] = None
    ast_window_clause_node: Optional['ASTWindowClause'] = None
    ast_window_definition_node: Optional['ASTWindowDefinition'] = None
    ast_window_frame_node: Optional['ASTWindowFrame'] = None
    ast_window_frame_expr_node: Optional['ASTWindowFrameExpr'] = None
    ast_window_specification_node: Optional['ASTWindowSpecification'] = None
    ast_with_offset_node: Optional['ASTWithOffset'] = None
    ast_any_some_all_op_node: Optional['ASTAnySomeAllOp'] = None
    ast_statement_list_node: Optional['ASTStatementList'] = None
    ast_transaction_mode_node: Optional['ASTTransactionMode'] = None
    ast_transaction_mode_list_node: Optional['ASTTransactionModeList'] = None
    ast_with_connection_clause_node: Optional['ASTWithConnectionClause'] = None
    ast_into_alias_node: Optional['ASTIntoAlias'] = None
    ast_unnest_expression_with_opt_alias_and_offset_node: Optional['ASTUnnestExpressionWithOptAliasAndOffset'] = None
    ast_pivot_expression_node: Optional['ASTPivotExpression'] = None
    ast_pivot_value_node: Optional['ASTPivotValue'] = None
    ast_pivot_expression_list_node: Optional['ASTPivotExpressionList'] = None
    ast_pivot_value_list_node: Optional['ASTPivotValueList'] = None
    ast_unpivot_in_item_node: Optional['ASTUnpivotInItem'] = None
    ast_unpivot_in_item_list_node: Optional['ASTUnpivotInItemList'] = None
    ast_using_clause_node: Optional['ASTUsingClause'] = None
    ast_for_system_time_node: Optional['ASTForSystemTime'] = None
    ast_qualify_node: Optional['ASTQualify'] = None
    ast_clamped_between_modifier_node: Optional['ASTClampedBetweenModifier'] = None
    ast_format_clause_node: Optional['ASTFormatClause'] = None
    ast_path_expression_list_node: Optional['ASTPathExpressionList'] = None
    ast_cluster_by_node: Optional['ASTClusterBy'] = None
    ast_new_constructor_arg_node: Optional['ASTNewConstructorArg'] = None
    ast_options_list_node: Optional['ASTOptionsList'] = None
    ast_options_entry_node: Optional['ASTOptionsEntry'] = None
    ast_function_parameter_node: Optional['ASTFunctionParameter'] = None
    ast_function_parameters_node: Optional['ASTFunctionParameters'] = None
    ast_function_declaration_node: Optional['ASTFunctionDeclaration'] = None
    ast_sql_function_body_node: Optional['ASTSqlFunctionBody'] = None
    ast_tvf_argument_node: Optional['ASTTVFArgument'] = None
    ast_model_clause_node: Optional['ASTModelClause'] = None
    ast_connection_clause_node: Optional['ASTConnectionClause'] = None
    ast_clone_data_source_list_node: Optional['ASTCloneDataSourceList'] = None
    ast_transform_clause_node: Optional['ASTTransformClause'] = None
    ast_index_item_list_node: Optional['ASTIndexItemList'] = None
    ast_index_storing_expression_list_node: Optional['ASTIndexStoringExpressionList'] = None
    ast_index_unnest_expression_list_node: Optional['ASTIndexUnnestExpressionList'] = None
    ast_with_partition_columns_clause_node: Optional['ASTWithPartitionColumnsClause'] = None
    ast_type_parameter_list_node: Optional['ASTTypeParameterList'] = None
    ast_tvf_schema_node: Optional['ASTTVFSchema'] = None
    ast_tvf_schema_column_node: Optional['ASTTVFSchemaColumn'] = None
    ast_table_and_column_info_node: Optional['ASTTableAndColumnInfo'] = None
    ast_table_and_column_info_list_node: Optional['ASTTableAndColumnInfoList'] = None
    ast_templated_parameter_type_node: Optional['ASTTemplatedParameterType'] = None
    ast_assert_rows_modified_node: Optional['ASTAssertRowsModified'] = None
    ast_returning_clause_node: Optional['ASTReturningClause'] = None
    ast_column_attribute_node: Optional['ASTColumnAttribute'] = None
    ast_column_attribute_list_node: Optional['ASTColumnAttributeList'] = None
    ast_struct_column_field_node: Optional['ASTStructColumnField'] = None
    ast_generated_column_info_node: Optional['ASTGeneratedColumnInfo'] = None
    ast_table_element_node: Optional['ASTTableElement'] = None
    ast_table_element_list_node: Optional['ASTTableElementList'] = None
    ast_column_list_node: Optional['ASTColumnList'] = None
    ast_column_position_node: Optional['ASTColumnPosition'] = None
    ast_insert_values_row_node: Optional['ASTInsertValuesRow'] = None
    ast_insert_values_row_list_node: Optional['ASTInsertValuesRowList'] = None
    ast_update_set_value_node: Optional['ASTUpdateSetValue'] = None
    ast_update_item_node: Optional['ASTUpdateItem'] = None
    ast_update_item_list_node: Optional['ASTUpdateItemList'] = None
    ast_merge_action_node: Optional['ASTMergeAction'] = None
    ast_merge_when_clause_node: Optional['ASTMergeWhenClause'] = None
    ast_merge_when_clause_list_node: Optional['ASTMergeWhenClauseList'] = None
    ast_privilege_node: Optional['ASTPrivilege'] = None
    ast_privileges_node: Optional['ASTPrivileges'] = None
    ast_grantee_list_node: Optional['ASTGranteeList'] = None
    ast_repeatable_clause_node: Optional['ASTRepeatableClause'] = None
    ast_filter_fields_arg_node: Optional['ASTFilterFieldsArg'] = None
    ast_replace_fields_arg_node: Optional['ASTReplaceFieldsArg'] = None
    ast_sample_size_node: Optional['ASTSampleSize'] = None
    ast_with_weight_node: Optional['ASTWithWeight'] = None
    ast_sample_suffix_node: Optional['ASTSampleSuffix'] = None
    ast_alter_action_node: Optional['ASTAlterAction'] = None
    ast_alter_action_list_node: Optional['ASTAlterActionList'] = None
    ast_foreign_key_actions_node: Optional['ASTForeignKeyActions'] = None
    ast_foreign_key_reference_node: Optional['ASTForeignKeyReference'] = None
    ast_script_node: Optional['ASTScript'] = None
    ast_elseif_clause_node: Optional['ASTElseifClause'] = None
    ast_elseif_clause_list_node: Optional['ASTElseifClauseList'] = None
    ast_when_then_clause_node: Optional['ASTWhenThenClause'] = None
    ast_when_then_clause_list_node: Optional['ASTWhenThenClauseList'] = None
    ast_hint_node: Optional['ASTHint'] = None
    ast_hint_entry_node: Optional['ASTHintEntry'] = None
    ast_unpivot_in_item_label_node: Optional['ASTUnpivotInItemLabel'] = None
    ast_descriptor_node: Optional['ASTDescriptor'] = None
    ast_column_schema_node: Optional['ASTColumnSchema'] = None
    ast_descriptor_column_node: Optional['ASTDescriptorColumn'] = None
    ast_descriptor_column_list_node: Optional['ASTDescriptorColumnList'] = None
    ast_exception_handler_node: Optional['ASTExceptionHandler'] = None
    ast_exception_handler_list_node: Optional['ASTExceptionHandlerList'] = None
    ast_identifier_list_node: Optional['ASTIdentifierList'] = None
    ast_until_clause_node: Optional['ASTUntilClause'] = None
    ast_execute_into_clause_node: Optional['ASTExecuteIntoClause'] = None
    ast_execute_using_argument_node: Optional['ASTExecuteUsingArgument'] = None
    ast_execute_using_clause_node: Optional['ASTExecuteUsingClause'] = None
    ast_braced_constructor_field_value_node: Optional['ASTBracedConstructorFieldValue'] = None
    ast_braced_constructor_field_node: Optional['ASTBracedConstructorField'] = None
    ast_with_report_modifier_node: Optional['ASTWithReportModifier'] = None
    ast_location_node: Optional['ASTLocation'] = None
    ast_aux_load_data_from_files_options_list_node: Optional['ASTAuxLoadDataFromFilesOptionsList'] = None
    ast_label_node: Optional['ASTLabel'] = None
    ast_primary_key_element_node: Optional['ASTPrimaryKeyElement'] = None
    ast_primary_key_element_list_node: Optional['ASTPrimaryKeyElementList'] = None
    ast_spanner_table_options_node: Optional['ASTSpannerTableOptions'] = None
    ast_spanner_interleave_clause_node: Optional['ASTSpannerInterleaveClause'] = None
    ast_ttl_clause_node: Optional['ASTTtlClause'] = None
    ast_input_output_clause_node: Optional['ASTInputOutputClause'] = None
    ast_graph_label_expression_node: Optional['ASTGraphLabelExpression'] = None
    ast_graph_label_filter_node: Optional['ASTGraphLabelFilter'] = None
    ast_select_with_node: Optional['ASTSelectWith'] = None
    ast_aliased_query_list_node: Optional['ASTAliasedQueryList'] = None
    ast_column_with_options_node: Optional['ASTColumnWithOptions'] = None
    ast_column_with_options_list_node: Optional['ASTColumnWithOptionsList'] = None
    ast_graph_element_pattern_filler_node: Optional['ASTGraphElementPatternFiller'] = None
    ast_graph_element_table_list_node: Optional['ASTGraphElementTableList'] = None
    ast_graph_element_table_node: Optional['ASTGraphElementTable'] = None
    ast_graph_node_table_reference_node: Optional['ASTGraphNodeTableReference'] = None
    ast_aux_load_data_partitions_clause_node: Optional['ASTAuxLoadDataPartitionsClause'] = None
    ast_graph_element_label_and_properties_list_node: Optional['ASTGraphElementLabelAndPropertiesList'] = None
    ast_graph_element_label_and_properties_node: Optional['ASTGraphElementLabelAndProperties'] = None
    ast_graph_properties_node: Optional['ASTGraphProperties'] = None
    ast_set_operation_metadata_list_node: Optional['ASTSetOperationMetadataList'] = None
    ast_set_operation_all_or_distinct_node: Optional['ASTSetOperationAllOrDistinct'] = None
    ast_set_operation_type_node: Optional['ASTSetOperationType'] = None
    ast_set_operation_metadata_node: Optional['ASTSetOperationMetadata'] = None
    ast_set_operation_column_match_mode_node: Optional['ASTSetOperationColumnMatchMode'] = None
    ast_set_operation_column_propagation_mode_node: Optional['ASTSetOperationColumnPropagationMode'] = None
    ast_graph_pattern_node: Optional['ASTGraphPattern'] = None
    ast_cube_node: Optional['ASTCube'] = None
    ast_grouping_set_node: Optional['ASTGroupingSet'] = None
    ast_grouping_set_list_node: Optional['ASTGroupingSetList'] = None
    ast_expression_with_opt_alias_node: Optional['ASTExpressionWithOptAlias'] = None
    ast_group_by_all_node: Optional['ASTGroupByAll'] = None
    ast_function_type_arg_list_node: Optional['ASTFunctionTypeArgList'] = None
    ast_pipe_operator_node: Optional['ASTPipeOperator'] = None
    ast_graph_lhs_hint_node: Optional['ASTGraphLhsHint'] = None
    ast_graph_rhs_hint_node: Optional['ASTGraphRhsHint'] = None
    ast_identity_column_info_node: Optional['ASTIdentityColumnInfo'] = None
    ast_identity_column_start_with_node: Optional['ASTIdentityColumnStartWith'] = None
    ast_identity_column_increment_by_node: Optional['ASTIdentityColumnIncrementBy'] = None
    ast_identity_column_max_value_node: Optional['ASTIdentityColumnMaxValue'] = None
    ast_identity_column_min_value_node: Optional['ASTIdentityColumnMinValue'] = None
    ast_graph_path_base_node: Optional['ASTGraphPathBase'] = None
    ast_gql_operator_node: Optional['ASTGqlOperator'] = None
    ast_gql_let_variable_definition_list_node: Optional['ASTGqlLetVariableDefinitionList'] = None
    ast_gql_let_variable_definition_node: Optional['ASTGqlLetVariableDefinition'] = None
    ast_pipe_set_item_node: Optional['ASTPipeSetItem'] = None
    ast_graph_property_specification_node: Optional['ASTGraphPropertySpecification'] = None
    ast_graph_property_name_and_value_node: Optional['ASTGraphPropertyNameAndValue'] = None
    ast_gql_page_limit_node: Optional['ASTGqlPageLimit'] = None
    ast_gql_page_offset_node: Optional['ASTGqlPageOffset'] = None
    ast_gql_page_node: Optional['ASTGqlPage'] = None
    ast_aliased_query_modifiers_node: Optional['ASTAliasedQueryModifiers'] = None
    ast_recursion_depth_modifier_node: Optional['ASTRecursionDepthModifier'] = None
    ast_grouping_item_order_node: Optional['ASTGroupingItemOrder'] = None
    ast_graph_path_mode_node: Optional['ASTGraphPathMode'] = None
    ast_graph_path_search_prefix_node: Optional['ASTGraphPathSearchPrefix'] = None
    ast_lock_mode_node: Optional['ASTLockMode'] = None
    ast_row_pattern_expression_node: Optional['ASTRowPatternExpression'] = None
    ast_postfix_table_operator_node: Optional['ASTPostfixTableOperator'] = None
    ast_quantifier_node: Optional['ASTQuantifier'] = None
    ast_quantifier_bound_node: Optional['ASTQuantifierBound'] = None
    ast_subpipeline_node: Optional['ASTSubpipeline'] = None
    ast_after_match_skip_clause_node: Optional['ASTAfterMatchSkipClause'] = None
    ast_on_conflict_clause_node: Optional['ASTOnConflictClause'] = None
    ast_graph_dynamic_label_node: Optional['ASTGraphDynamicLabel'] = None
    ast_graph_dynamic_properties_node: Optional['ASTGraphDynamicProperties'] = None
    ast_graph_path_search_prefix_count_node: Optional['ASTGraphPathSearchPrefixCount'] = None
    ast_chained_base_expr_node: Optional['ASTChainedBaseExpr'] = None
    ast_yield_item_list_node: Optional['ASTYieldItemList'] = None
    ast_limit_all_node: Optional['ASTLimitAll'] = None
    ast_limit_node: Optional['ASTLimit'] = None
    ast_graph_derived_property_node: Optional['ASTGraphDerivedProperty'] = None
    ast_graph_derived_property_list_node: Optional['ASTGraphDerivedPropertyList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTNodeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_statement_node': {
            'proto_field': 'ast_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_query_expression_node': {
            'proto_field': 'ast_query_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_select_list_node': {
            'proto_field': 'ast_select_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_select_column_node': {
            'proto_field': 'ast_select_column_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_expression_node': {
            'proto_field': 'ast_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alias_node': {
            'proto_field': 'ast_alias_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_table_expression_node': {
            'proto_field': 'ast_table_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_from_clause_node': {
            'proto_field': 'ast_from_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_where_clause_node': {
            'proto_field': 'ast_where_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_grouping_item_node': {
            'proto_field': 'ast_grouping_item_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_group_by_node': {
            'proto_field': 'ast_group_by_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_ordering_expression_node': {
            'proto_field': 'ast_ordering_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_order_by_node': {
            'proto_field': 'ast_order_by_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_limit_offset_node': {
            'proto_field': 'ast_limit_offset_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_on_clause_node': {
            'proto_field': 'ast_on_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_aliased_query_node': {
            'proto_field': 'ast_aliased_query_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_with_clause_node': {
            'proto_field': 'ast_with_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_having_node': {
            'proto_field': 'ast_having_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_type_node': {
            'proto_field': 'ast_type_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_struct_field_node': {
            'proto_field': 'ast_struct_field_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_select_as_node': {
            'proto_field': 'ast_select_as_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_rollup_node': {
            'proto_field': 'ast_rollup_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_struct_constructor_arg_node': {
            'proto_field': 'ast_struct_constructor_arg_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_in_list_node': {
            'proto_field': 'ast_in_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_collate_node': {
            'proto_field': 'ast_collate_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_having_modifier_node': {
            'proto_field': 'ast_having_modifier_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_null_order_node': {
            'proto_field': 'ast_null_order_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_on_or_using_clause_list_node': {
            'proto_field': 'ast_on_or_using_clause_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_partition_by_node': {
            'proto_field': 'ast_partition_by_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_star_except_list_node': {
            'proto_field': 'ast_star_except_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_star_modifiers_node': {
            'proto_field': 'ast_star_modifiers_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_star_replace_item_node': {
            'proto_field': 'ast_star_replace_item_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_unnest_expression_node': {
            'proto_field': 'ast_unnest_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_window_clause_node': {
            'proto_field': 'ast_window_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_window_definition_node': {
            'proto_field': 'ast_window_definition_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_window_frame_node': {
            'proto_field': 'ast_window_frame_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_window_frame_expr_node': {
            'proto_field': 'ast_window_frame_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_window_specification_node': {
            'proto_field': 'ast_window_specification_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_with_offset_node': {
            'proto_field': 'ast_with_offset_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_any_some_all_op_node': {
            'proto_field': 'ast_any_some_all_op_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_statement_list_node': {
            'proto_field': 'ast_statement_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_transaction_mode_node': {
            'proto_field': 'ast_transaction_mode_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_transaction_mode_list_node': {
            'proto_field': 'ast_transaction_mode_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_with_connection_clause_node': {
            'proto_field': 'ast_with_connection_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_into_alias_node': {
            'proto_field': 'ast_into_alias_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_unnest_expression_with_opt_alias_and_offset_node': {
            'proto_field': 'ast_unnest_expression_with_opt_alias_and_offset_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pivot_expression_node': {
            'proto_field': 'ast_pivot_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pivot_value_node': {
            'proto_field': 'ast_pivot_value_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pivot_expression_list_node': {
            'proto_field': 'ast_pivot_expression_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pivot_value_list_node': {
            'proto_field': 'ast_pivot_value_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_unpivot_in_item_node': {
            'proto_field': 'ast_unpivot_in_item_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_unpivot_in_item_list_node': {
            'proto_field': 'ast_unpivot_in_item_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_using_clause_node': {
            'proto_field': 'ast_using_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_for_system_time_node': {
            'proto_field': 'ast_for_system_time_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_qualify_node': {
            'proto_field': 'ast_qualify_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_clamped_between_modifier_node': {
            'proto_field': 'ast_clamped_between_modifier_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_format_clause_node': {
            'proto_field': 'ast_format_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_path_expression_list_node': {
            'proto_field': 'ast_path_expression_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_cluster_by_node': {
            'proto_field': 'ast_cluster_by_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_new_constructor_arg_node': {
            'proto_field': 'ast_new_constructor_arg_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_options_list_node': {
            'proto_field': 'ast_options_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_options_entry_node': {
            'proto_field': 'ast_options_entry_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_function_parameter_node': {
            'proto_field': 'ast_function_parameter_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_function_parameters_node': {
            'proto_field': 'ast_function_parameters_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_function_declaration_node': {
            'proto_field': 'ast_function_declaration_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_sql_function_body_node': {
            'proto_field': 'ast_sql_function_body_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_tvf_argument_node': {
            'proto_field': 'ast_tvf_argument_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_model_clause_node': {
            'proto_field': 'ast_model_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_connection_clause_node': {
            'proto_field': 'ast_connection_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_clone_data_source_list_node': {
            'proto_field': 'ast_clone_data_source_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_transform_clause_node': {
            'proto_field': 'ast_transform_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_index_item_list_node': {
            'proto_field': 'ast_index_item_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_index_storing_expression_list_node': {
            'proto_field': 'ast_index_storing_expression_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_index_unnest_expression_list_node': {
            'proto_field': 'ast_index_unnest_expression_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_with_partition_columns_clause_node': {
            'proto_field': 'ast_with_partition_columns_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_type_parameter_list_node': {
            'proto_field': 'ast_type_parameter_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_tvf_schema_node': {
            'proto_field': 'ast_tvf_schema_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_tvf_schema_column_node': {
            'proto_field': 'ast_tvf_schema_column_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_table_and_column_info_node': {
            'proto_field': 'ast_table_and_column_info_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_table_and_column_info_list_node': {
            'proto_field': 'ast_table_and_column_info_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_templated_parameter_type_node': {
            'proto_field': 'ast_templated_parameter_type_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_assert_rows_modified_node': {
            'proto_field': 'ast_assert_rows_modified_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_returning_clause_node': {
            'proto_field': 'ast_returning_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_column_attribute_node': {
            'proto_field': 'ast_column_attribute_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_column_attribute_list_node': {
            'proto_field': 'ast_column_attribute_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_struct_column_field_node': {
            'proto_field': 'ast_struct_column_field_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_generated_column_info_node': {
            'proto_field': 'ast_generated_column_info_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_table_element_node': {
            'proto_field': 'ast_table_element_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_table_element_list_node': {
            'proto_field': 'ast_table_element_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_column_list_node': {
            'proto_field': 'ast_column_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_column_position_node': {
            'proto_field': 'ast_column_position_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_insert_values_row_node': {
            'proto_field': 'ast_insert_values_row_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_insert_values_row_list_node': {
            'proto_field': 'ast_insert_values_row_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_update_set_value_node': {
            'proto_field': 'ast_update_set_value_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_update_item_node': {
            'proto_field': 'ast_update_item_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_update_item_list_node': {
            'proto_field': 'ast_update_item_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_merge_action_node': {
            'proto_field': 'ast_merge_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_merge_when_clause_node': {
            'proto_field': 'ast_merge_when_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_merge_when_clause_list_node': {
            'proto_field': 'ast_merge_when_clause_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_privilege_node': {
            'proto_field': 'ast_privilege_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_privileges_node': {
            'proto_field': 'ast_privileges_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_grantee_list_node': {
            'proto_field': 'ast_grantee_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_repeatable_clause_node': {
            'proto_field': 'ast_repeatable_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_filter_fields_arg_node': {
            'proto_field': 'ast_filter_fields_arg_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_replace_fields_arg_node': {
            'proto_field': 'ast_replace_fields_arg_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_sample_size_node': {
            'proto_field': 'ast_sample_size_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_with_weight_node': {
            'proto_field': 'ast_with_weight_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_sample_suffix_node': {
            'proto_field': 'ast_sample_suffix_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_action_node': {
            'proto_field': 'ast_alter_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_action_list_node': {
            'proto_field': 'ast_alter_action_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_foreign_key_actions_node': {
            'proto_field': 'ast_foreign_key_actions_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_foreign_key_reference_node': {
            'proto_field': 'ast_foreign_key_reference_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_script_node': {
            'proto_field': 'ast_script_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_elseif_clause_node': {
            'proto_field': 'ast_elseif_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_elseif_clause_list_node': {
            'proto_field': 'ast_elseif_clause_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_when_then_clause_node': {
            'proto_field': 'ast_when_then_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_when_then_clause_list_node': {
            'proto_field': 'ast_when_then_clause_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_hint_node': {
            'proto_field': 'ast_hint_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_hint_entry_node': {
            'proto_field': 'ast_hint_entry_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_unpivot_in_item_label_node': {
            'proto_field': 'ast_unpivot_in_item_label_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_descriptor_node': {
            'proto_field': 'ast_descriptor_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_column_schema_node': {
            'proto_field': 'ast_column_schema_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_descriptor_column_node': {
            'proto_field': 'ast_descriptor_column_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_descriptor_column_list_node': {
            'proto_field': 'ast_descriptor_column_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_exception_handler_node': {
            'proto_field': 'ast_exception_handler_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_exception_handler_list_node': {
            'proto_field': 'ast_exception_handler_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_identifier_list_node': {
            'proto_field': 'ast_identifier_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_until_clause_node': {
            'proto_field': 'ast_until_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_execute_into_clause_node': {
            'proto_field': 'ast_execute_into_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_execute_using_argument_node': {
            'proto_field': 'ast_execute_using_argument_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_execute_using_clause_node': {
            'proto_field': 'ast_execute_using_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_braced_constructor_field_value_node': {
            'proto_field': 'ast_braced_constructor_field_value_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_braced_constructor_field_node': {
            'proto_field': 'ast_braced_constructor_field_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_with_report_modifier_node': {
            'proto_field': 'ast_with_report_modifier_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_location_node': {
            'proto_field': 'ast_location_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_aux_load_data_from_files_options_list_node': {
            'proto_field': 'ast_aux_load_data_from_files_options_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_label_node': {
            'proto_field': 'ast_label_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_primary_key_element_node': {
            'proto_field': 'ast_primary_key_element_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_primary_key_element_list_node': {
            'proto_field': 'ast_primary_key_element_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_spanner_table_options_node': {
            'proto_field': 'ast_spanner_table_options_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_spanner_interleave_clause_node': {
            'proto_field': 'ast_spanner_interleave_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_ttl_clause_node': {
            'proto_field': 'ast_ttl_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_input_output_clause_node': {
            'proto_field': 'ast_input_output_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_label_expression_node': {
            'proto_field': 'ast_graph_label_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_label_filter_node': {
            'proto_field': 'ast_graph_label_filter_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_select_with_node': {
            'proto_field': 'ast_select_with_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_aliased_query_list_node': {
            'proto_field': 'ast_aliased_query_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_column_with_options_node': {
            'proto_field': 'ast_column_with_options_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_column_with_options_list_node': {
            'proto_field': 'ast_column_with_options_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_element_pattern_filler_node': {
            'proto_field': 'ast_graph_element_pattern_filler_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_element_table_list_node': {
            'proto_field': 'ast_graph_element_table_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_element_table_node': {
            'proto_field': 'ast_graph_element_table_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_node_table_reference_node': {
            'proto_field': 'ast_graph_node_table_reference_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_aux_load_data_partitions_clause_node': {
            'proto_field': 'ast_aux_load_data_partitions_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_element_label_and_properties_list_node': {
            'proto_field': 'ast_graph_element_label_and_properties_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_element_label_and_properties_node': {
            'proto_field': 'ast_graph_element_label_and_properties_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_properties_node': {
            'proto_field': 'ast_graph_properties_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_set_operation_metadata_list_node': {
            'proto_field': 'ast_set_operation_metadata_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_set_operation_all_or_distinct_node': {
            'proto_field': 'ast_set_operation_all_or_distinct_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_set_operation_type_node': {
            'proto_field': 'ast_set_operation_type_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_set_operation_metadata_node': {
            'proto_field': 'ast_set_operation_metadata_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_set_operation_column_match_mode_node': {
            'proto_field': 'ast_set_operation_column_match_mode_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_set_operation_column_propagation_mode_node': {
            'proto_field': 'ast_set_operation_column_propagation_mode_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_pattern_node': {
            'proto_field': 'ast_graph_pattern_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_cube_node': {
            'proto_field': 'ast_cube_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_grouping_set_node': {
            'proto_field': 'ast_grouping_set_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_grouping_set_list_node': {
            'proto_field': 'ast_grouping_set_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_expression_with_opt_alias_node': {
            'proto_field': 'ast_expression_with_opt_alias_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_group_by_all_node': {
            'proto_field': 'ast_group_by_all_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_function_type_arg_list_node': {
            'proto_field': 'ast_function_type_arg_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_operator_node': {
            'proto_field': 'ast_pipe_operator_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_lhs_hint_node': {
            'proto_field': 'ast_graph_lhs_hint_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_rhs_hint_node': {
            'proto_field': 'ast_graph_rhs_hint_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_identity_column_info_node': {
            'proto_field': 'ast_identity_column_info_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_identity_column_start_with_node': {
            'proto_field': 'ast_identity_column_start_with_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_identity_column_increment_by_node': {
            'proto_field': 'ast_identity_column_increment_by_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_identity_column_max_value_node': {
            'proto_field': 'ast_identity_column_max_value_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_identity_column_min_value_node': {
            'proto_field': 'ast_identity_column_min_value_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_path_base_node': {
            'proto_field': 'ast_graph_path_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_operator_node': {
            'proto_field': 'ast_gql_operator_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_let_variable_definition_list_node': {
            'proto_field': 'ast_gql_let_variable_definition_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_let_variable_definition_node': {
            'proto_field': 'ast_gql_let_variable_definition_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_set_item_node': {
            'proto_field': 'ast_pipe_set_item_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_property_specification_node': {
            'proto_field': 'ast_graph_property_specification_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_property_name_and_value_node': {
            'proto_field': 'ast_graph_property_name_and_value_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_page_limit_node': {
            'proto_field': 'ast_gql_page_limit_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_page_offset_node': {
            'proto_field': 'ast_gql_page_offset_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_page_node': {
            'proto_field': 'ast_gql_page_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_aliased_query_modifiers_node': {
            'proto_field': 'ast_aliased_query_modifiers_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_recursion_depth_modifier_node': {
            'proto_field': 'ast_recursion_depth_modifier_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_grouping_item_order_node': {
            'proto_field': 'ast_grouping_item_order_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_path_mode_node': {
            'proto_field': 'ast_graph_path_mode_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_path_search_prefix_node': {
            'proto_field': 'ast_graph_path_search_prefix_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_lock_mode_node': {
            'proto_field': 'ast_lock_mode_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_row_pattern_expression_node': {
            'proto_field': 'ast_row_pattern_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_postfix_table_operator_node': {
            'proto_field': 'ast_postfix_table_operator_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_quantifier_node': {
            'proto_field': 'ast_quantifier_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_quantifier_bound_node': {
            'proto_field': 'ast_quantifier_bound_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_subpipeline_node': {
            'proto_field': 'ast_subpipeline_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_after_match_skip_clause_node': {
            'proto_field': 'ast_after_match_skip_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_on_conflict_clause_node': {
            'proto_field': 'ast_on_conflict_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_dynamic_label_node': {
            'proto_field': 'ast_graph_dynamic_label_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_dynamic_properties_node': {
            'proto_field': 'ast_graph_dynamic_properties_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_path_search_prefix_count_node': {
            'proto_field': 'ast_graph_path_search_prefix_count_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_chained_base_expr_node': {
            'proto_field': 'ast_chained_base_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_yield_item_list_node': {
            'proto_field': 'ast_yield_item_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_limit_all_node': {
            'proto_field': 'ast_limit_all_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_limit_node': {
            'proto_field': 'ast_limit_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_derived_property_node': {
            'proto_field': 'ast_graph_derived_property_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_derived_property_list_node': {
            'proto_field': 'ast_graph_derived_property_list_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTParameterExprBase(ProtoModel):
    """Generated model for AnyASTParameterExprBaseProto"""

    ast_parameter_expr_node: Optional['ASTParameterExpr'] = None
    ast_system_variable_expr_node: Optional['ASTSystemVariableExpr'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTParameterExprBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_parameter_expr_node': {
            'proto_field': 'ast_parameter_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_system_variable_expr_node': {
            'proto_field': 'ast_system_variable_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTPipeOperator(ProtoModel):
    """Generated model for AnyASTPipeOperatorProto"""

    ast_pipe_extend_node: Optional['ASTPipeExtend'] = None
    ast_pipe_aggregate_node: Optional['ASTPipeAggregate'] = None
    ast_pipe_set_operation_node: Optional['ASTPipeSetOperation'] = None
    ast_pipe_join_node: Optional['ASTPipeJoin'] = None
    ast_pipe_call_node: Optional['ASTPipeCall'] = None
    ast_pipe_window_node: Optional['ASTPipeWindow'] = None
    ast_pipe_where_node: Optional['ASTPipeWhere'] = None
    ast_pipe_select_node: Optional['ASTPipeSelect'] = None
    ast_pipe_limit_offset_node: Optional['ASTPipeLimitOffset'] = None
    ast_pipe_order_by_node: Optional['ASTPipeOrderBy'] = None
    ast_pipe_distinct_node: Optional['ASTPipeDistinct'] = None
    ast_pipe_tablesample_node: Optional['ASTPipeTablesample'] = None
    ast_pipe_as_node: Optional['ASTPipeAs'] = None
    ast_pipe_static_describe_node: Optional['ASTPipeStaticDescribe'] = None
    ast_pipe_assert_node: Optional['ASTPipeAssert'] = None
    ast_pipe_drop_node: Optional['ASTPipeDrop'] = None
    ast_pipe_set_node: Optional['ASTPipeSet'] = None
    ast_pipe_pivot_node: Optional['ASTPipePivot'] = None
    ast_pipe_unpivot_node: Optional['ASTPipeUnpivot'] = None
    ast_pipe_rename_item_node: Optional['ASTPipeRenameItem'] = None
    ast_pipe_rename_node: Optional['ASTPipeRename'] = None
    ast_pipe_log_node: Optional['ASTPipeLog'] = None
    ast_pipe_if_node: Optional['ASTPipeIf'] = None
    ast_pipe_if_case_node: Optional['ASTPipeIfCase'] = None
    ast_pipe_fork_node: Optional['ASTPipeFork'] = None
    ast_pipe_export_data_node: Optional['ASTPipeExportData'] = None
    ast_pipe_recursive_union_node: Optional['ASTPipeRecursiveUnion'] = None
    ast_pipe_match_recognize_node: Optional['ASTPipeMatchRecognize'] = None
    ast_pipe_create_table_node: Optional['ASTPipeCreateTable'] = None
    ast_pipe_tee_node: Optional['ASTPipeTee'] = None
    ast_pipe_insert_node: Optional['ASTPipeInsert'] = None
    ast_pipe_with_node: Optional['ASTPipeWith'] = None
    ast_pipe_describe_node: Optional['ASTPipeDescribe'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTPipeOperatorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_pipe_extend_node': {
            'proto_field': 'ast_pipe_extend_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_aggregate_node': {
            'proto_field': 'ast_pipe_aggregate_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_set_operation_node': {
            'proto_field': 'ast_pipe_set_operation_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_join_node': {
            'proto_field': 'ast_pipe_join_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_call_node': {
            'proto_field': 'ast_pipe_call_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_window_node': {
            'proto_field': 'ast_pipe_window_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_where_node': {
            'proto_field': 'ast_pipe_where_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_select_node': {
            'proto_field': 'ast_pipe_select_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_limit_offset_node': {
            'proto_field': 'ast_pipe_limit_offset_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_order_by_node': {
            'proto_field': 'ast_pipe_order_by_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_distinct_node': {
            'proto_field': 'ast_pipe_distinct_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_tablesample_node': {
            'proto_field': 'ast_pipe_tablesample_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_as_node': {
            'proto_field': 'ast_pipe_as_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_static_describe_node': {
            'proto_field': 'ast_pipe_static_describe_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_assert_node': {
            'proto_field': 'ast_pipe_assert_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_drop_node': {
            'proto_field': 'ast_pipe_drop_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_set_node': {
            'proto_field': 'ast_pipe_set_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_pivot_node': {
            'proto_field': 'ast_pipe_pivot_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_unpivot_node': {
            'proto_field': 'ast_pipe_unpivot_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_rename_item_node': {
            'proto_field': 'ast_pipe_rename_item_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_rename_node': {
            'proto_field': 'ast_pipe_rename_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_log_node': {
            'proto_field': 'ast_pipe_log_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_if_node': {
            'proto_field': 'ast_pipe_if_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_if_case_node': {
            'proto_field': 'ast_pipe_if_case_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_fork_node': {
            'proto_field': 'ast_pipe_fork_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_export_data_node': {
            'proto_field': 'ast_pipe_export_data_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_recursive_union_node': {
            'proto_field': 'ast_pipe_recursive_union_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_match_recognize_node': {
            'proto_field': 'ast_pipe_match_recognize_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_create_table_node': {
            'proto_field': 'ast_pipe_create_table_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_tee_node': {
            'proto_field': 'ast_pipe_tee_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_insert_node': {
            'proto_field': 'ast_pipe_insert_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_with_node': {
            'proto_field': 'ast_pipe_with_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_describe_node': {
            'proto_field': 'ast_pipe_describe_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTPostfixTableOperator(ProtoModel):
    """Generated model for AnyASTPostfixTableOperatorProto"""

    ast_pivot_clause_node: Optional['ASTPivotClause'] = None
    ast_unpivot_clause_node: Optional['ASTUnpivotClause'] = None
    ast_sample_clause_node: Optional['ASTSampleClause'] = None
    ast_match_recognize_clause_node: Optional['ASTMatchRecognizeClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTPostfixTableOperatorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_pivot_clause_node': {
            'proto_field': 'ast_pivot_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_unpivot_clause_node': {
            'proto_field': 'ast_unpivot_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_sample_clause_node': {
            'proto_field': 'ast_sample_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_match_recognize_clause_node': {
            'proto_field': 'ast_match_recognize_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTPrintableLeaf(ProtoModel):
    """Generated model for AnyASTPrintableLeafProto"""

    ast_int_literal_node: Optional['ASTIntLiteral'] = None
    ast_boolean_literal_node: Optional['ASTBooleanLiteral'] = None
    ast_star_node: Optional['ASTStar'] = None
    ast_float_literal_node: Optional['ASTFloatLiteral'] = None
    ast_null_literal_node: Optional['ASTNullLiteral'] = None
    ast_max_literal_node: Optional['ASTMaxLiteral'] = None
    ast_index_all_columns_node: Optional['ASTIndexAllColumns'] = None
    ast_macro_body_node: Optional['ASTMacroBody'] = None
    ast_string_literal_component_node: Optional['ASTStringLiteralComponent'] = None
    ast_bytes_literal_component_node: Optional['ASTBytesLiteralComponent'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTPrintableLeafProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_int_literal_node': {
            'proto_field': 'ast_int_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_boolean_literal_node': {
            'proto_field': 'ast_boolean_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_star_node': {
            'proto_field': 'ast_star_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_float_literal_node': {
            'proto_field': 'ast_float_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_null_literal_node': {
            'proto_field': 'ast_null_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_max_literal_node': {
            'proto_field': 'ast_max_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_index_all_columns_node': {
            'proto_field': 'ast_index_all_columns_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_macro_body_node': {
            'proto_field': 'ast_macro_body_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_string_literal_component_node': {
            'proto_field': 'ast_string_literal_component_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_bytes_literal_component_node': {
            'proto_field': 'ast_bytes_literal_component_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTQuantifier(ProtoModel):
    """Generated model for AnyASTQuantifierProto"""

    ast_bounded_quantifier_node: Optional['ASTBoundedQuantifier'] = None
    ast_fixed_quantifier_node: Optional['ASTFixedQuantifier'] = None
    ast_symbol_quantifier_node: Optional['ASTSymbolQuantifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTQuantifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_bounded_quantifier_node': {
            'proto_field': 'ast_bounded_quantifier_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_fixed_quantifier_node': {
            'proto_field': 'ast_fixed_quantifier_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_symbol_quantifier_node': {
            'proto_field': 'ast_symbol_quantifier_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTQueryExpression(ProtoModel):
    """Generated model for AnyASTQueryExpressionProto"""

    ast_query_node: Optional['ASTQuery'] = None
    ast_select_node: Optional['ASTSelect'] = None
    ast_set_operation_node: Optional['ASTSetOperation'] = None
    ast_table_clause_node: Optional['ASTTableClause'] = None
    ast_from_query_node: Optional['ASTFromQuery'] = None
    ast_gql_query_node: Optional['ASTGqlQuery'] = None
    ast_aliased_query_expression_node: Optional['ASTAliasedQueryExpression'] = None
    ast_gql_graph_pattern_query_node: Optional['ASTGqlGraphPatternQuery'] = None
    ast_gql_linear_ops_query_node: Optional['ASTGqlLinearOpsQuery'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTQueryExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_query_node': {
            'proto_field': 'ast_query_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_select_node': {
            'proto_field': 'ast_select_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_set_operation_node': {
            'proto_field': 'ast_set_operation_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_table_clause_node': {
            'proto_field': 'ast_table_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_from_query_node': {
            'proto_field': 'ast_from_query_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_query_node': {
            'proto_field': 'ast_gql_query_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_aliased_query_expression_node': {
            'proto_field': 'ast_aliased_query_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_graph_pattern_query_node': {
            'proto_field': 'ast_gql_graph_pattern_query_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_gql_linear_ops_query_node': {
            'proto_field': 'ast_gql_linear_ops_query_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTRowPatternExpression(ProtoModel):
    """Generated model for AnyASTRowPatternExpressionProto"""

    ast_row_pattern_variable_node: Optional['ASTRowPatternVariable'] = None
    ast_row_pattern_operation_node: Optional['ASTRowPatternOperation'] = None
    ast_empty_row_pattern_node: Optional['ASTEmptyRowPattern'] = None
    ast_row_pattern_quantification_node: Optional['ASTRowPatternQuantification'] = None
    ast_row_pattern_anchor_node: Optional['ASTRowPatternAnchor'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTRowPatternExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_row_pattern_variable_node': {
            'proto_field': 'ast_row_pattern_variable_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_row_pattern_operation_node': {
            'proto_field': 'ast_row_pattern_operation_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_empty_row_pattern_node': {
            'proto_field': 'ast_empty_row_pattern_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_row_pattern_quantification_node': {
            'proto_field': 'ast_row_pattern_quantification_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_row_pattern_anchor_node': {
            'proto_field': 'ast_row_pattern_anchor_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTScriptStatement(ProtoModel):
    """Generated model for AnyASTScriptStatementProto"""

    ast_if_statement_node: Optional['ASTIfStatement'] = None
    ast_case_statement_node: Optional['ASTCaseStatement'] = None
    ast_raise_statement_node: Optional['ASTRaiseStatement'] = None
    ast_begin_end_block_node: Optional['ASTBeginEndBlock'] = None
    ast_variable_declaration_node: Optional['ASTVariableDeclaration'] = None
    ast_break_continue_statement_node: Optional['ASTBreakContinueStatement'] = None
    ast_return_statement_node: Optional['ASTReturnStatement'] = None
    ast_single_assignment_node: Optional['ASTSingleAssignment'] = None
    ast_assignment_from_struct_node: Optional['ASTAssignmentFromStruct'] = None
    ast_loop_statement_node: Optional['ASTLoopStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTScriptStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_if_statement_node': {
            'proto_field': 'ast_if_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_case_statement_node': {
            'proto_field': 'ast_case_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_raise_statement_node': {
            'proto_field': 'ast_raise_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_begin_end_block_node': {
            'proto_field': 'ast_begin_end_block_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_variable_declaration_node': {
            'proto_field': 'ast_variable_declaration_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_break_continue_statement_node': {
            'proto_field': 'ast_break_continue_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_return_statement_node': {
            'proto_field': 'ast_return_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_single_assignment_node': {
            'proto_field': 'ast_single_assignment_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_assignment_from_struct_node': {
            'proto_field': 'ast_assignment_from_struct_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_loop_statement_node': {
            'proto_field': 'ast_loop_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTStatement(ProtoModel):
    """Generated model for AnyASTStatementProto"""

    ast_query_statement_node: Optional['ASTQueryStatement'] = None
    ast_script_statement_node: Optional['ASTScriptStatement'] = None
    ast_hinted_statement_node: Optional['ASTHintedStatement'] = None
    ast_explain_statement_node: Optional['ASTExplainStatement'] = None
    ast_describe_statement_node: Optional['ASTDescribeStatement'] = None
    ast_show_statement_node: Optional['ASTShowStatement'] = None
    ast_begin_statement_node: Optional['ASTBeginStatement'] = None
    ast_set_transaction_statement_node: Optional['ASTSetTransactionStatement'] = None
    ast_commit_statement_node: Optional['ASTCommitStatement'] = None
    ast_rollback_statement_node: Optional['ASTRollbackStatement'] = None
    ast_start_batch_statement_node: Optional['ASTStartBatchStatement'] = None
    ast_run_batch_statement_node: Optional['ASTRunBatchStatement'] = None
    ast_abort_batch_statement_node: Optional['ASTAbortBatchStatement'] = None
    ast_ddl_statement_node: Optional['ASTDdlStatement'] = None
    ast_drop_all_row_access_policies_statement_node: Optional['ASTDropAllRowAccessPoliciesStatement'] = None
    ast_rename_statement_node: Optional['ASTRenameStatement'] = None
    ast_import_statement_node: Optional['ASTImportStatement'] = None
    ast_module_statement_node: Optional['ASTModuleStatement'] = None
    ast_clone_data_statement_node: Optional['ASTCloneDataStatement'] = None
    ast_create_database_statement_node: Optional['ASTCreateDatabaseStatement'] = None
    ast_export_data_statement_node: Optional['ASTExportDataStatement'] = None
    ast_export_model_statement_node: Optional['ASTExportModelStatement'] = None
    ast_call_statement_node: Optional['ASTCallStatement'] = None
    ast_define_table_statement_node: Optional['ASTDefineTableStatement'] = None
    ast_analyze_statement_node: Optional['ASTAnalyzeStatement'] = None
    ast_assert_statement_node: Optional['ASTAssertStatement'] = None
    ast_delete_statement_node: Optional['ASTDeleteStatement'] = None
    ast_insert_statement_node: Optional['ASTInsertStatement'] = None
    ast_update_statement_node: Optional['ASTUpdateStatement'] = None
    ast_truncate_statement_node: Optional['ASTTruncateStatement'] = None
    ast_merge_statement_node: Optional['ASTMergeStatement'] = None
    ast_grant_statement_node: Optional['ASTGrantStatement'] = None
    ast_revoke_statement_node: Optional['ASTRevokeStatement'] = None
    ast_alter_all_row_access_policies_statement_node: Optional['ASTAlterAllRowAccessPoliciesStatement'] = None
    ast_parameter_assignment_node: Optional['ASTParameterAssignment'] = None
    ast_system_variable_assignment_node: Optional['ASTSystemVariableAssignment'] = None
    ast_execute_immediate_statement_node: Optional['ASTExecuteImmediateStatement'] = None
    ast_define_macro_statement_node: Optional['ASTDefineMacroStatement'] = None
    ast_export_metadata_statement_node: Optional['ASTExportMetadataStatement'] = None
    ast_create_locality_group_statement_node: Optional['ASTCreateLocalityGroupStatement'] = None
    ast_run_statement_node: Optional['ASTRunStatement'] = None
    ast_subpipeline_statement_node: Optional['ASTSubpipelineStatement'] = None
    ast_statement_with_pipe_operators_node: Optional['ASTStatementWithPipeOperators'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_query_statement_node': {
            'proto_field': 'ast_query_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_script_statement_node': {
            'proto_field': 'ast_script_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_hinted_statement_node': {
            'proto_field': 'ast_hinted_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_explain_statement_node': {
            'proto_field': 'ast_explain_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_describe_statement_node': {
            'proto_field': 'ast_describe_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_show_statement_node': {
            'proto_field': 'ast_show_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_begin_statement_node': {
            'proto_field': 'ast_begin_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_set_transaction_statement_node': {
            'proto_field': 'ast_set_transaction_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_commit_statement_node': {
            'proto_field': 'ast_commit_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_rollback_statement_node': {
            'proto_field': 'ast_rollback_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_start_batch_statement_node': {
            'proto_field': 'ast_start_batch_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_run_batch_statement_node': {
            'proto_field': 'ast_run_batch_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_abort_batch_statement_node': {
            'proto_field': 'ast_abort_batch_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_ddl_statement_node': {
            'proto_field': 'ast_ddl_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_drop_all_row_access_policies_statement_node': {
            'proto_field': 'ast_drop_all_row_access_policies_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_rename_statement_node': {
            'proto_field': 'ast_rename_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_import_statement_node': {
            'proto_field': 'ast_import_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_module_statement_node': {
            'proto_field': 'ast_module_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_clone_data_statement_node': {
            'proto_field': 'ast_clone_data_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_database_statement_node': {
            'proto_field': 'ast_create_database_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_export_data_statement_node': {
            'proto_field': 'ast_export_data_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_export_model_statement_node': {
            'proto_field': 'ast_export_model_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_call_statement_node': {
            'proto_field': 'ast_call_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_define_table_statement_node': {
            'proto_field': 'ast_define_table_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_analyze_statement_node': {
            'proto_field': 'ast_analyze_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_assert_statement_node': {
            'proto_field': 'ast_assert_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_delete_statement_node': {
            'proto_field': 'ast_delete_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_insert_statement_node': {
            'proto_field': 'ast_insert_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_update_statement_node': {
            'proto_field': 'ast_update_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_truncate_statement_node': {
            'proto_field': 'ast_truncate_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_merge_statement_node': {
            'proto_field': 'ast_merge_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_grant_statement_node': {
            'proto_field': 'ast_grant_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_revoke_statement_node': {
            'proto_field': 'ast_revoke_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_alter_all_row_access_policies_statement_node': {
            'proto_field': 'ast_alter_all_row_access_policies_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_parameter_assignment_node': {
            'proto_field': 'ast_parameter_assignment_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_system_variable_assignment_node': {
            'proto_field': 'ast_system_variable_assignment_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_execute_immediate_statement_node': {
            'proto_field': 'ast_execute_immediate_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_define_macro_statement_node': {
            'proto_field': 'ast_define_macro_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_export_metadata_statement_node': {
            'proto_field': 'ast_export_metadata_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_create_locality_group_statement_node': {
            'proto_field': 'ast_create_locality_group_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_run_statement_node': {
            'proto_field': 'ast_run_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_subpipeline_statement_node': {
            'proto_field': 'ast_subpipeline_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_statement_with_pipe_operators_node': {
            'proto_field': 'ast_statement_with_pipe_operators_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTTableConstraint(ProtoModel):
    """Generated model for AnyASTTableConstraintProto"""

    ast_primary_key_node: Optional['ASTPrimaryKey'] = None
    ast_foreign_key_node: Optional['ASTForeignKey'] = None
    ast_check_constraint_node: Optional['ASTCheckConstraint'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTTableConstraintProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_primary_key_node': {
            'proto_field': 'ast_primary_key_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_foreign_key_node': {
            'proto_field': 'ast_foreign_key_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_check_constraint_node': {
            'proto_field': 'ast_check_constraint_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTTableDataSource(ProtoModel):
    """Generated model for AnyASTTableDataSourceProto"""

    ast_clone_data_source_node: Optional['ASTCloneDataSource'] = None
    ast_copy_data_source_node: Optional['ASTCopyDataSource'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTTableDataSourceProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_clone_data_source_node': {
            'proto_field': 'ast_clone_data_source_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_copy_data_source_node': {
            'proto_field': 'ast_copy_data_source_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTTableElement(ProtoModel):
    """Generated model for AnyASTTableElementProto"""

    ast_column_definition_node: Optional['ASTColumnDefinition'] = None
    ast_table_constraint_node: Optional['ASTTableConstraint'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTTableElementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_column_definition_node': {
            'proto_field': 'ast_column_definition_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_table_constraint_node': {
            'proto_field': 'ast_table_constraint_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTTableExpression(ProtoModel):
    """Generated model for AnyASTTableExpressionProto"""

    ast_table_path_expression_node: Optional['ASTTablePathExpression'] = None
    ast_join_node: Optional['ASTJoin'] = None
    ast_parenthesized_join_node: Optional['ASTParenthesizedJoin'] = None
    ast_table_subquery_node: Optional['ASTTableSubquery'] = None
    ast_tvf_node: Optional['ASTTVF'] = None
    ast_table_data_source_node: Optional['ASTTableDataSource'] = None
    ast_graph_table_query_node: Optional['ASTGraphTableQuery'] = None
    ast_pipe_join_lhs_placeholder_node: Optional['ASTPipeJoinLhsPlaceholder'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTTableExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_table_path_expression_node': {
            'proto_field': 'ast_table_path_expression_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_join_node': {
            'proto_field': 'ast_join_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_parenthesized_join_node': {
            'proto_field': 'ast_parenthesized_join_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_table_subquery_node': {
            'proto_field': 'ast_table_subquery_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_tvf_node': {
            'proto_field': 'ast_tvf_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_table_data_source_node': {
            'proto_field': 'ast_table_data_source_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_graph_table_query_node': {
            'proto_field': 'ast_graph_table_query_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_pipe_join_lhs_placeholder_node': {
            'proto_field': 'ast_pipe_join_lhs_placeholder_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTTransactionMode(ProtoModel):
    """Generated model for AnyASTTransactionModeProto"""

    ast_transaction_isolation_level_node: Optional['ASTTransactionIsolationLevel'] = None
    ast_transaction_read_write_mode_node: Optional['ASTTransactionReadWriteMode'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTTransactionModeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_transaction_isolation_level_node': {
            'proto_field': 'ast_transaction_isolation_level_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_transaction_read_write_mode_node': {
            'proto_field': 'ast_transaction_read_write_mode_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyASTType(ProtoModel):
    """Generated model for AnyASTTypeProto"""

    ast_simple_type_node: Optional['ASTSimpleType'] = None
    ast_array_type_node: Optional['ASTArrayType'] = None
    ast_struct_type_node: Optional['ASTStructType'] = None
    ast_range_type_node: Optional['ASTRangeType'] = None
    ast_function_type_node: Optional['ASTFunctionType'] = None
    ast_map_type_node: Optional['ASTMapType'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.AnyASTTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ast_simple_type_node': {
            'proto_field': 'ast_simple_type_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_array_type_node': {
            'proto_field': 'ast_array_type_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_struct_type_node': {
            'proto_field': 'ast_struct_type_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_range_type_node': {
            'proto_field': 'ast_range_type_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_function_type_node': {
            'proto_field': 'ast_function_type_node',
            'is_message': True,
            'is_repeated': False,
        },
        'ast_map_type_node': {
            'proto_field': 'ast_map_type_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedAggregateScanBase(ProtoModel):
    """Generated model for AnyResolvedAggregateScanBaseProto"""

    resolved_aggregate_scan_node: Optional['ResolvedAggregateScan'] = None
    resolved_anonymized_aggregate_scan_node: Optional['ResolvedAnonymizedAggregateScan'] = None
    resolved_differential_privacy_aggregate_scan_node: Optional['ResolvedDifferentialPrivacyAggregateScan'] = None
    resolved_aggregation_threshold_aggregate_scan_node: Optional['ResolvedAggregationThresholdAggregateScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedAggregateScanBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_aggregate_scan_node': {
            'proto_field': 'resolved_aggregate_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_anonymized_aggregate_scan_node': {
            'proto_field': 'resolved_anonymized_aggregate_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_differential_privacy_aggregate_scan_node': {
            'proto_field': 'resolved_differential_privacy_aggregate_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_aggregation_threshold_aggregate_scan_node': {
            'proto_field': 'resolved_aggregation_threshold_aggregate_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedAlterAction(ProtoModel):
    """Generated model for AnyResolvedAlterActionProto"""

    resolved_set_options_action_node: Optional['ResolvedSetOptionsAction'] = None
    resolved_add_column_action_node: Optional['ResolvedAddColumnAction'] = None
    resolved_drop_column_action_node: Optional['ResolvedDropColumnAction'] = None
    resolved_grant_to_action_node: Optional['ResolvedGrantToAction'] = None
    resolved_filter_using_action_node: Optional['ResolvedFilterUsingAction'] = None
    resolved_revoke_from_action_node: Optional['ResolvedRevokeFromAction'] = None
    resolved_rename_to_action_node: Optional['ResolvedRenameToAction'] = None
    resolved_set_as_action_node: Optional['ResolvedSetAsAction'] = None
    resolved_add_constraint_action_node: Optional['ResolvedAddConstraintAction'] = None
    resolved_drop_constraint_action_node: Optional['ResolvedDropConstraintAction'] = None
    resolved_drop_primary_key_action_node: Optional['ResolvedDropPrimaryKeyAction'] = None
    resolved_rename_column_action_node: Optional['ResolvedRenameColumnAction'] = None
    resolved_set_collate_clause_node: Optional['ResolvedSetCollateClause'] = None
    resolved_restrict_to_action_node: Optional['ResolvedRestrictToAction'] = None
    resolved_add_to_restrictee_list_action_node: Optional['ResolvedAddToRestricteeListAction'] = None
    resolved_remove_from_restrictee_list_action_node: Optional['ResolvedRemoveFromRestricteeListAction'] = None
    resolved_alter_column_action_node: Optional['ResolvedAlterColumnAction'] = None
    resolved_alter_sub_entity_action_node: Optional['ResolvedAlterSubEntityAction'] = None
    resolved_add_sub_entity_action_node: Optional['ResolvedAddSubEntityAction'] = None
    resolved_drop_sub_entity_action_node: Optional['ResolvedDropSubEntityAction'] = None
    resolved_add_column_identifier_action_node: Optional['ResolvedAddColumnIdentifierAction'] = None
    resolved_rebuild_action_node: Optional['ResolvedRebuildAction'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedAlterActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_set_options_action_node': {
            'proto_field': 'resolved_set_options_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_add_column_action_node': {
            'proto_field': 'resolved_add_column_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_drop_column_action_node': {
            'proto_field': 'resolved_drop_column_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_grant_to_action_node': {
            'proto_field': 'resolved_grant_to_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_filter_using_action_node': {
            'proto_field': 'resolved_filter_using_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_revoke_from_action_node': {
            'proto_field': 'resolved_revoke_from_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_rename_to_action_node': {
            'proto_field': 'resolved_rename_to_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_set_as_action_node': {
            'proto_field': 'resolved_set_as_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_add_constraint_action_node': {
            'proto_field': 'resolved_add_constraint_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_drop_constraint_action_node': {
            'proto_field': 'resolved_drop_constraint_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_drop_primary_key_action_node': {
            'proto_field': 'resolved_drop_primary_key_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_rename_column_action_node': {
            'proto_field': 'resolved_rename_column_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_set_collate_clause_node': {
            'proto_field': 'resolved_set_collate_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_restrict_to_action_node': {
            'proto_field': 'resolved_restrict_to_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_add_to_restrictee_list_action_node': {
            'proto_field': 'resolved_add_to_restrictee_list_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_remove_from_restrictee_list_action_node': {
            'proto_field': 'resolved_remove_from_restrictee_list_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_column_action_node': {
            'proto_field': 'resolved_alter_column_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_sub_entity_action_node': {
            'proto_field': 'resolved_alter_sub_entity_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_add_sub_entity_action_node': {
            'proto_field': 'resolved_add_sub_entity_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_drop_sub_entity_action_node': {
            'proto_field': 'resolved_drop_sub_entity_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_add_column_identifier_action_node': {
            'proto_field': 'resolved_add_column_identifier_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_rebuild_action_node': {
            'proto_field': 'resolved_rebuild_action_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedAlterColumnAction(ProtoModel):
    """Generated model for AnyResolvedAlterColumnActionProto"""

    resolved_alter_column_options_action_node: Optional['ResolvedAlterColumnOptionsAction'] = None
    resolved_alter_column_drop_not_null_action_node: Optional['ResolvedAlterColumnDropNotNullAction'] = None
    resolved_alter_column_set_data_type_action_node: Optional['ResolvedAlterColumnSetDataTypeAction'] = None
    resolved_alter_column_set_default_action_node: Optional['ResolvedAlterColumnSetDefaultAction'] = None
    resolved_alter_column_drop_default_action_node: Optional['ResolvedAlterColumnDropDefaultAction'] = None
    resolved_alter_column_drop_generated_action_node: Optional['ResolvedAlterColumnDropGeneratedAction'] = None
    resolved_alter_column_set_generated_action_node: Optional['ResolvedAlterColumnSetGeneratedAction'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedAlterColumnActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_alter_column_options_action_node': {
            'proto_field': 'resolved_alter_column_options_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_column_drop_not_null_action_node': {
            'proto_field': 'resolved_alter_column_drop_not_null_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_column_set_data_type_action_node': {
            'proto_field': 'resolved_alter_column_set_data_type_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_column_set_default_action_node': {
            'proto_field': 'resolved_alter_column_set_default_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_column_drop_default_action_node': {
            'proto_field': 'resolved_alter_column_drop_default_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_column_drop_generated_action_node': {
            'proto_field': 'resolved_alter_column_drop_generated_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_column_set_generated_action_node': {
            'proto_field': 'resolved_alter_column_set_generated_action_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedAlterObjectStmt(ProtoModel):
    """Generated model for AnyResolvedAlterObjectStmtProto"""

    resolved_alter_row_access_policy_stmt_node: Optional['ResolvedAlterRowAccessPolicyStmt'] = None
    resolved_alter_table_stmt_node: Optional['ResolvedAlterTableStmt'] = None
    resolved_alter_view_stmt_node: Optional['ResolvedAlterViewStmt'] = None
    resolved_alter_materialized_view_stmt_node: Optional['ResolvedAlterMaterializedViewStmt'] = None
    resolved_alter_database_stmt_node: Optional['ResolvedAlterDatabaseStmt'] = None
    resolved_alter_all_row_access_policies_stmt_node: Optional['ResolvedAlterAllRowAccessPoliciesStmt'] = None
    resolved_alter_entity_stmt_node: Optional['ResolvedAlterEntityStmt'] = None
    resolved_alter_schema_stmt_node: Optional['ResolvedAlterSchemaStmt'] = None
    resolved_alter_privilege_restriction_stmt_node: Optional['ResolvedAlterPrivilegeRestrictionStmt'] = None
    resolved_alter_model_stmt_node: Optional['ResolvedAlterModelStmt'] = None
    resolved_alter_approx_view_stmt_node: Optional['ResolvedAlterApproxViewStmt'] = None
    resolved_alter_external_schema_stmt_node: Optional['ResolvedAlterExternalSchemaStmt'] = None
    resolved_alter_connection_stmt_node: Optional['ResolvedAlterConnectionStmt'] = None
    resolved_alter_index_stmt_node: Optional['ResolvedAlterIndexStmt'] = None
    resolved_alter_sequence_stmt_node: Optional['ResolvedAlterSequenceStmt'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedAlterObjectStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_alter_row_access_policy_stmt_node': {
            'proto_field': 'resolved_alter_row_access_policy_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_table_stmt_node': {
            'proto_field': 'resolved_alter_table_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_view_stmt_node': {
            'proto_field': 'resolved_alter_view_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_materialized_view_stmt_node': {
            'proto_field': 'resolved_alter_materialized_view_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_database_stmt_node': {
            'proto_field': 'resolved_alter_database_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_all_row_access_policies_stmt_node': {
            'proto_field': 'resolved_alter_all_row_access_policies_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_entity_stmt_node': {
            'proto_field': 'resolved_alter_entity_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_schema_stmt_node': {
            'proto_field': 'resolved_alter_schema_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_privilege_restriction_stmt_node': {
            'proto_field': 'resolved_alter_privilege_restriction_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_model_stmt_node': {
            'proto_field': 'resolved_alter_model_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_approx_view_stmt_node': {
            'proto_field': 'resolved_alter_approx_view_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_external_schema_stmt_node': {
            'proto_field': 'resolved_alter_external_schema_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_connection_stmt_node': {
            'proto_field': 'resolved_alter_connection_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_index_stmt_node': {
            'proto_field': 'resolved_alter_index_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_sequence_stmt_node': {
            'proto_field': 'resolved_alter_sequence_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedArgument(ProtoModel):
    """Generated model for AnyResolvedArgumentProto"""

    resolved_make_proto_field_node: Optional['ResolvedMakeProtoField'] = None
    resolved_column_holder_node: Optional['ResolvedColumnHolder'] = None
    resolved_order_by_item_node: Optional['ResolvedOrderByItem'] = None
    resolved_output_column_node: Optional['ResolvedOutputColumn'] = None
    resolved_with_entry_node: Optional['ResolvedWithEntry'] = None
    resolved_option_node: Optional['ResolvedOption'] = None
    resolved_window_partitioning_node: Optional['ResolvedWindowPartitioning'] = None
    resolved_window_ordering_node: Optional['ResolvedWindowOrdering'] = None
    resolved_window_frame_node: Optional['ResolvedWindowFrame'] = None
    resolved_analytic_function_group_node: Optional['ResolvedAnalyticFunctionGroup'] = None
    resolved_window_frame_expr_node: Optional['ResolvedWindowFrameExpr'] = None
    resolved_dmlvalue_node: Optional['ResolvedDMLValue'] = None
    resolved_assert_rows_modified_node: Optional['ResolvedAssertRowsModified'] = None
    resolved_insert_row_node: Optional['ResolvedInsertRow'] = None
    resolved_update_item_node: Optional['ResolvedUpdateItem'] = None
    resolved_privilege_node: Optional['ResolvedPrivilege'] = None
    resolved_argument_def_node: Optional['ResolvedArgumentDef'] = None
    resolved_argument_list_node: Optional['ResolvedArgumentList'] = None
    resolved_function_argument_node: Optional['ResolvedFunctionArgument'] = None
    resolved_function_signature_holder_node: Optional['ResolvedFunctionSignatureHolder'] = None
    resolved_aggregate_having_modifier_node: Optional['ResolvedAggregateHavingModifier'] = None
    resolved_column_definition_node: Optional['ResolvedColumnDefinition'] = None
    resolved_set_operation_item_node: Optional['ResolvedSetOperationItem'] = None
    resolved_index_item_node: Optional['ResolvedIndexItem'] = None
    resolved_merge_when_node: Optional['ResolvedMergeWhen'] = None
    resolved_update_item_element_node: Optional['ResolvedUpdateItemElement'] = None
    resolved_column_annotations_node: Optional['ResolvedColumnAnnotations'] = None
    resolved_generated_column_info_node: Optional['ResolvedGeneratedColumnInfo'] = None
    resolved_model_node: Optional['ResolvedModel'] = None
    resolved_alter_action_node: Optional['ResolvedAlterAction'] = None
    resolved_unnest_item_node: Optional['ResolvedUnnestItem'] = None
    resolved_replace_field_item_node: Optional['ResolvedReplaceFieldItem'] = None
    resolved_connection_node: Optional['ResolvedConnection'] = None
    resolved_execute_immediate_argument_node: Optional['ResolvedExecuteImmediateArgument'] = None
    resolved_descriptor_node: Optional['ResolvedDescriptor'] = None
    resolved_extended_cast_element_node: Optional['ResolvedExtendedCastElement'] = None
    resolved_with_partition_columns_node: Optional['ResolvedWithPartitionColumns'] = None
    resolved_extended_cast_node: Optional['ResolvedExtendedCast'] = None
    resolved_inline_lambda_node: Optional['ResolvedInlineLambda'] = None
    resolved_constraint_node: Optional['ResolvedConstraint'] = None
    resolved_pivot_column_node: Optional['ResolvedPivotColumn'] = None
    resolved_returning_clause_node: Optional['ResolvedReturningClause'] = None
    resolved_unpivot_arg_node: Optional['ResolvedUnpivotArg'] = None
    resolved_filter_field_arg_node: Optional['ResolvedFilterFieldArg'] = None
    resolved_table_and_column_info_node: Optional['ResolvedTableAndColumnInfo'] = None
    resolved_column_default_value_node: Optional['ResolvedColumnDefaultValue'] = None
    resolved_object_unit_node: Optional['ResolvedObjectUnit'] = None
    resolved_graph_label_expr_node: Optional['ResolvedGraphLabelExpr'] = None
    resolved_graph_element_identifier_node: Optional['ResolvedGraphElementIdentifier'] = None
    resolved_graph_element_property_node: Optional['ResolvedGraphElementProperty'] = None
    resolved_aux_load_data_partition_filter_node: Optional['ResolvedAuxLoadDataPartitionFilter'] = None
    resolved_graph_element_table_node: Optional['ResolvedGraphElementTable'] = None
    resolved_graph_node_table_reference_node: Optional['ResolvedGraphNodeTableReference'] = None
    resolved_create_model_aliased_query_node: Optional['ResolvedCreateModelAliasedQuery'] = None
    resolved_graph_element_label_node: Optional['ResolvedGraphElementLabel'] = None
    resolved_graph_property_declaration_node: Optional['ResolvedGraphPropertyDeclaration'] = None
    resolved_graph_property_definition_node: Optional['ResolvedGraphPropertyDefinition'] = None
    resolved_sequence_node: Optional['ResolvedSequence'] = None
    resolved_grouping_set_multi_column_node: Optional['ResolvedGroupingSetMultiColumn'] = None
    resolved_grouping_set_base_node: Optional['ResolvedGroupingSetBase'] = None
    resolved_grouping_call_node: Optional['ResolvedGroupingCall'] = None
    resolved_identity_column_info_node: Optional['ResolvedIdentityColumnInfo'] = None
    resolved_graph_path_pattern_quantifier_node: Optional['ResolvedGraphPathPatternQuantifier'] = None
    resolved_computed_column_base_node: Optional['ResolvedComputedColumnBase'] = None
    resolved_recursion_depth_modifier_node: Optional['ResolvedRecursionDepthModifier'] = None
    resolved_graph_make_array_variable_node: Optional['ResolvedGraphMakeArrayVariable'] = None
    resolved_graph_path_mode_node: Optional['ResolvedGraphPathMode'] = None
    resolved_graph_path_search_prefix_node: Optional['ResolvedGraphPathSearchPrefix'] = None
    resolved_match_recognize_variable_definition_node: Optional['ResolvedMatchRecognizeVariableDefinition'] = None
    resolved_match_recognize_pattern_expr_node: Optional['ResolvedMatchRecognizePatternExpr'] = None
    resolved_subpipeline_node: Optional['ResolvedSubpipeline'] = None
    resolved_lock_mode_node: Optional['ResolvedLockMode'] = None
    resolved_pipe_if_case_node: Optional['ResolvedPipeIfCase'] = None
    resolved_output_schema_node: Optional['ResolvedOutputSchema'] = None
    resolved_measure_group_node: Optional['ResolvedMeasureGroup'] = None
    resolved_on_conflict_clause_node: Optional['ResolvedOnConflictClause'] = None
    resolved_generalized_query_subpipeline_node: Optional['ResolvedGeneralizedQuerySubpipeline'] = None
    resolved_graph_dynamic_label_specification_node: Optional['ResolvedGraphDynamicLabelSpecification'] = None
    resolved_graph_dynamic_properties_specification_node: Optional['ResolvedGraphDynamicPropertiesSpecification'] = None
    resolved_update_field_item_node: Optional['ResolvedUpdateFieldItem'] = None
    resolved_graph_path_cost_node: Optional['ResolvedGraphPathCost'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedArgumentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_make_proto_field_node': {
            'proto_field': 'resolved_make_proto_field_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_column_holder_node': {
            'proto_field': 'resolved_column_holder_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_order_by_item_node': {
            'proto_field': 'resolved_order_by_item_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_output_column_node': {
            'proto_field': 'resolved_output_column_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_with_entry_node': {
            'proto_field': 'resolved_with_entry_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_option_node': {
            'proto_field': 'resolved_option_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_window_partitioning_node': {
            'proto_field': 'resolved_window_partitioning_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_window_ordering_node': {
            'proto_field': 'resolved_window_ordering_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_window_frame_node': {
            'proto_field': 'resolved_window_frame_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_analytic_function_group_node': {
            'proto_field': 'resolved_analytic_function_group_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_window_frame_expr_node': {
            'proto_field': 'resolved_window_frame_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_dmlvalue_node': {
            'proto_field': 'resolved_dmlvalue_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_assert_rows_modified_node': {
            'proto_field': 'resolved_assert_rows_modified_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_insert_row_node': {
            'proto_field': 'resolved_insert_row_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_update_item_node': {
            'proto_field': 'resolved_update_item_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_privilege_node': {
            'proto_field': 'resolved_privilege_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_argument_def_node': {
            'proto_field': 'resolved_argument_def_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_argument_list_node': {
            'proto_field': 'resolved_argument_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_function_argument_node': {
            'proto_field': 'resolved_function_argument_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_function_signature_holder_node': {
            'proto_field': 'resolved_function_signature_holder_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_aggregate_having_modifier_node': {
            'proto_field': 'resolved_aggregate_having_modifier_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_column_definition_node': {
            'proto_field': 'resolved_column_definition_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_set_operation_item_node': {
            'proto_field': 'resolved_set_operation_item_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_index_item_node': {
            'proto_field': 'resolved_index_item_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_merge_when_node': {
            'proto_field': 'resolved_merge_when_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_update_item_element_node': {
            'proto_field': 'resolved_update_item_element_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_column_annotations_node': {
            'proto_field': 'resolved_column_annotations_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_generated_column_info_node': {
            'proto_field': 'resolved_generated_column_info_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_model_node': {
            'proto_field': 'resolved_model_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_action_node': {
            'proto_field': 'resolved_alter_action_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_unnest_item_node': {
            'proto_field': 'resolved_unnest_item_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_replace_field_item_node': {
            'proto_field': 'resolved_replace_field_item_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_connection_node': {
            'proto_field': 'resolved_connection_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_execute_immediate_argument_node': {
            'proto_field': 'resolved_execute_immediate_argument_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_descriptor_node': {
            'proto_field': 'resolved_descriptor_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_extended_cast_element_node': {
            'proto_field': 'resolved_extended_cast_element_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_with_partition_columns_node': {
            'proto_field': 'resolved_with_partition_columns_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_extended_cast_node': {
            'proto_field': 'resolved_extended_cast_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_inline_lambda_node': {
            'proto_field': 'resolved_inline_lambda_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_constraint_node': {
            'proto_field': 'resolved_constraint_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_pivot_column_node': {
            'proto_field': 'resolved_pivot_column_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_returning_clause_node': {
            'proto_field': 'resolved_returning_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_unpivot_arg_node': {
            'proto_field': 'resolved_unpivot_arg_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_filter_field_arg_node': {
            'proto_field': 'resolved_filter_field_arg_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_table_and_column_info_node': {
            'proto_field': 'resolved_table_and_column_info_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_column_default_value_node': {
            'proto_field': 'resolved_column_default_value_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_object_unit_node': {
            'proto_field': 'resolved_object_unit_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_label_expr_node': {
            'proto_field': 'resolved_graph_label_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_element_identifier_node': {
            'proto_field': 'resolved_graph_element_identifier_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_element_property_node': {
            'proto_field': 'resolved_graph_element_property_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_aux_load_data_partition_filter_node': {
            'proto_field': 'resolved_aux_load_data_partition_filter_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_element_table_node': {
            'proto_field': 'resolved_graph_element_table_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_node_table_reference_node': {
            'proto_field': 'resolved_graph_node_table_reference_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_model_aliased_query_node': {
            'proto_field': 'resolved_create_model_aliased_query_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_element_label_node': {
            'proto_field': 'resolved_graph_element_label_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_property_declaration_node': {
            'proto_field': 'resolved_graph_property_declaration_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_property_definition_node': {
            'proto_field': 'resolved_graph_property_definition_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_sequence_node': {
            'proto_field': 'resolved_sequence_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_grouping_set_multi_column_node': {
            'proto_field': 'resolved_grouping_set_multi_column_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_grouping_set_base_node': {
            'proto_field': 'resolved_grouping_set_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_grouping_call_node': {
            'proto_field': 'resolved_grouping_call_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_identity_column_info_node': {
            'proto_field': 'resolved_identity_column_info_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_path_pattern_quantifier_node': {
            'proto_field': 'resolved_graph_path_pattern_quantifier_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_computed_column_base_node': {
            'proto_field': 'resolved_computed_column_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_recursion_depth_modifier_node': {
            'proto_field': 'resolved_recursion_depth_modifier_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_make_array_variable_node': {
            'proto_field': 'resolved_graph_make_array_variable_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_path_mode_node': {
            'proto_field': 'resolved_graph_path_mode_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_path_search_prefix_node': {
            'proto_field': 'resolved_graph_path_search_prefix_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_match_recognize_variable_definition_node': {
            'proto_field': 'resolved_match_recognize_variable_definition_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_match_recognize_pattern_expr_node': {
            'proto_field': 'resolved_match_recognize_pattern_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_subpipeline_node': {
            'proto_field': 'resolved_subpipeline_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_lock_mode_node': {
            'proto_field': 'resolved_lock_mode_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_pipe_if_case_node': {
            'proto_field': 'resolved_pipe_if_case_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_output_schema_node': {
            'proto_field': 'resolved_output_schema_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_measure_group_node': {
            'proto_field': 'resolved_measure_group_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_on_conflict_clause_node': {
            'proto_field': 'resolved_on_conflict_clause_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_generalized_query_subpipeline_node': {
            'proto_field': 'resolved_generalized_query_subpipeline_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_dynamic_label_specification_node': {
            'proto_field': 'resolved_graph_dynamic_label_specification_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_dynamic_properties_specification_node': {
            'proto_field': 'resolved_graph_dynamic_properties_specification_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_update_field_item_node': {
            'proto_field': 'resolved_update_field_item_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_path_cost_node': {
            'proto_field': 'resolved_graph_path_cost_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedComputedColumnBase(ProtoModel):
    """Generated model for AnyResolvedComputedColumnBaseProto"""

    resolved_computed_column_impl_node: Optional['ResolvedComputedColumnImpl'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedComputedColumnBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_computed_column_impl_node': {
            'proto_field': 'resolved_computed_column_impl_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedComputedColumnImpl(ProtoModel):
    """Generated model for AnyResolvedComputedColumnImplProto"""

    resolved_computed_column_node: Optional['ResolvedComputedColumn'] = None
    resolved_deferred_computed_column_node: Optional['ResolvedDeferredComputedColumn'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedComputedColumnImplProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_computed_column_node': {
            'proto_field': 'resolved_computed_column_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_deferred_computed_column_node': {
            'proto_field': 'resolved_deferred_computed_column_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedConstraint(ProtoModel):
    """Generated model for AnyResolvedConstraintProto"""

    resolved_primary_key_node: Optional['ResolvedPrimaryKey'] = None
    resolved_foreign_key_node: Optional['ResolvedForeignKey'] = None
    resolved_check_constraint_node: Optional['ResolvedCheckConstraint'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedConstraintProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_primary_key_node': {
            'proto_field': 'resolved_primary_key_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_foreign_key_node': {
            'proto_field': 'resolved_foreign_key_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_check_constraint_node': {
            'proto_field': 'resolved_check_constraint_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedCreateSchemaStmtBase(ProtoModel):
    """Generated model for AnyResolvedCreateSchemaStmtBaseProto"""

    resolved_create_schema_stmt_node: Optional['ResolvedCreateSchemaStmt'] = None
    resolved_create_external_schema_stmt_node: Optional['ResolvedCreateExternalSchemaStmt'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedCreateSchemaStmtBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_create_schema_stmt_node': {
            'proto_field': 'resolved_create_schema_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_external_schema_stmt_node': {
            'proto_field': 'resolved_create_external_schema_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedCreateStatement(ProtoModel):
    """Generated model for AnyResolvedCreateStatementProto"""

    resolved_create_function_stmt_node: Optional['ResolvedCreateFunctionStmt'] = None
    resolved_create_table_function_stmt_node: Optional['ResolvedCreateTableFunctionStmt'] = None
    resolved_create_index_stmt_node: Optional['ResolvedCreateIndexStmt'] = None
    resolved_create_constant_stmt_node: Optional['ResolvedCreateConstantStmt'] = None
    resolved_create_table_stmt_base_node: Optional['ResolvedCreateTableStmtBase'] = None
    resolved_create_model_stmt_node: Optional['ResolvedCreateModelStmt'] = None
    resolved_create_view_base_node: Optional['ResolvedCreateViewBase'] = None
    resolved_create_procedure_stmt_node: Optional['ResolvedCreateProcedureStmt'] = None
    resolved_create_entity_stmt_node: Optional['ResolvedCreateEntityStmt'] = None
    resolved_create_snapshot_table_stmt_node: Optional['ResolvedCreateSnapshotTableStmt'] = None
    resolved_create_privilege_restriction_stmt_node: Optional['ResolvedCreatePrivilegeRestrictionStmt'] = None
    resolved_create_property_graph_stmt_node: Optional['ResolvedCreatePropertyGraphStmt'] = None
    resolved_create_schema_stmt_base_node: Optional['ResolvedCreateSchemaStmtBase'] = None
    resolved_create_connection_stmt_node: Optional['ResolvedCreateConnectionStmt'] = None
    resolved_create_sequence_stmt_node: Optional['ResolvedCreateSequenceStmt'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedCreateStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_create_function_stmt_node': {
            'proto_field': 'resolved_create_function_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_table_function_stmt_node': {
            'proto_field': 'resolved_create_table_function_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_index_stmt_node': {
            'proto_field': 'resolved_create_index_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_constant_stmt_node': {
            'proto_field': 'resolved_create_constant_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_table_stmt_base_node': {
            'proto_field': 'resolved_create_table_stmt_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_model_stmt_node': {
            'proto_field': 'resolved_create_model_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_view_base_node': {
            'proto_field': 'resolved_create_view_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_procedure_stmt_node': {
            'proto_field': 'resolved_create_procedure_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_entity_stmt_node': {
            'proto_field': 'resolved_create_entity_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_snapshot_table_stmt_node': {
            'proto_field': 'resolved_create_snapshot_table_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_privilege_restriction_stmt_node': {
            'proto_field': 'resolved_create_privilege_restriction_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_property_graph_stmt_node': {
            'proto_field': 'resolved_create_property_graph_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_schema_stmt_base_node': {
            'proto_field': 'resolved_create_schema_stmt_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_connection_stmt_node': {
            'proto_field': 'resolved_create_connection_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_sequence_stmt_node': {
            'proto_field': 'resolved_create_sequence_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedCreateTableStmtBase(ProtoModel):
    """Generated model for AnyResolvedCreateTableStmtBaseProto"""

    resolved_create_table_as_select_stmt_node: Optional['ResolvedCreateTableAsSelectStmt'] = None
    resolved_create_external_table_stmt_node: Optional['ResolvedCreateExternalTableStmt'] = None
    resolved_create_table_stmt_node: Optional['ResolvedCreateTableStmt'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedCreateTableStmtBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_create_table_as_select_stmt_node': {
            'proto_field': 'resolved_create_table_as_select_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_external_table_stmt_node': {
            'proto_field': 'resolved_create_external_table_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_table_stmt_node': {
            'proto_field': 'resolved_create_table_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedCreateViewBase(ProtoModel):
    """Generated model for AnyResolvedCreateViewBaseProto"""

    resolved_create_view_stmt_node: Optional['ResolvedCreateViewStmt'] = None
    resolved_create_materialized_view_stmt_node: Optional['ResolvedCreateMaterializedViewStmt'] = None
    resolved_create_approx_view_stmt_node: Optional['ResolvedCreateApproxViewStmt'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedCreateViewBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_create_view_stmt_node': {
            'proto_field': 'resolved_create_view_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_materialized_view_stmt_node': {
            'proto_field': 'resolved_create_materialized_view_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_approx_view_stmt_node': {
            'proto_field': 'resolved_create_approx_view_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedExpr(ProtoModel):
    """Generated model for AnyResolvedExprProto"""

    resolved_literal_node: Optional['ResolvedLiteral'] = None
    resolved_parameter_node: Optional['ResolvedParameter'] = None
    resolved_expression_column_node: Optional['ResolvedExpressionColumn'] = None
    resolved_column_ref_node: Optional['ResolvedColumnRef'] = None
    resolved_function_call_base_node: Optional['ResolvedFunctionCallBase'] = None
    resolved_cast_node: Optional['ResolvedCast'] = None
    resolved_make_struct_node: Optional['ResolvedMakeStruct'] = None
    resolved_make_proto_node: Optional['ResolvedMakeProto'] = None
    resolved_get_struct_field_node: Optional['ResolvedGetStructField'] = None
    resolved_get_proto_field_node: Optional['ResolvedGetProtoField'] = None
    resolved_subquery_expr_node: Optional['ResolvedSubqueryExpr'] = None
    resolved_dmldefault_node: Optional['ResolvedDMLDefault'] = None
    resolved_argument_ref_node: Optional['ResolvedArgumentRef'] = None
    resolved_constant_node: Optional['ResolvedConstant'] = None
    resolved_replace_field_node: Optional['ResolvedReplaceField'] = None
    resolved_get_proto_oneof_node: Optional['ResolvedGetProtoOneof'] = None
    resolved_system_variable_node: Optional['ResolvedSystemVariable'] = None
    resolved_flatten_node: Optional['ResolvedFlatten'] = None
    resolved_flattened_arg_node: Optional['ResolvedFlattenedArg'] = None
    resolved_get_json_field_node: Optional['ResolvedGetJsonField'] = None
    resolved_filter_field_node: Optional['ResolvedFilterField'] = None
    resolved_with_expr_node: Optional['ResolvedWithExpr'] = None
    resolved_catalog_column_ref_node: Optional['ResolvedCatalogColumnRef'] = None
    resolved_graph_get_element_property_node: Optional['ResolvedGraphGetElementProperty'] = None
    resolved_graph_make_element_node: Optional['ResolvedGraphMakeElement'] = None
    resolved_array_aggregate_node: Optional['ResolvedArrayAggregate'] = None
    resolved_graph_is_labeled_predicate_node: Optional['ResolvedGraphIsLabeledPredicate'] = None
    resolved_update_constructor_node: Optional['ResolvedUpdateConstructor'] = None
    resolved_get_row_field_node: Optional['ResolvedGetRowField'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_literal_node': {
            'proto_field': 'resolved_literal_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_parameter_node': {
            'proto_field': 'resolved_parameter_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_expression_column_node': {
            'proto_field': 'resolved_expression_column_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_column_ref_node': {
            'proto_field': 'resolved_column_ref_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_function_call_base_node': {
            'proto_field': 'resolved_function_call_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_cast_node': {
            'proto_field': 'resolved_cast_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_make_struct_node': {
            'proto_field': 'resolved_make_struct_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_make_proto_node': {
            'proto_field': 'resolved_make_proto_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_get_struct_field_node': {
            'proto_field': 'resolved_get_struct_field_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_get_proto_field_node': {
            'proto_field': 'resolved_get_proto_field_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_subquery_expr_node': {
            'proto_field': 'resolved_subquery_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_dmldefault_node': {
            'proto_field': 'resolved_dmldefault_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_argument_ref_node': {
            'proto_field': 'resolved_argument_ref_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_constant_node': {
            'proto_field': 'resolved_constant_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_replace_field_node': {
            'proto_field': 'resolved_replace_field_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_get_proto_oneof_node': {
            'proto_field': 'resolved_get_proto_oneof_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_system_variable_node': {
            'proto_field': 'resolved_system_variable_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_flatten_node': {
            'proto_field': 'resolved_flatten_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_flattened_arg_node': {
            'proto_field': 'resolved_flattened_arg_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_get_json_field_node': {
            'proto_field': 'resolved_get_json_field_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_filter_field_node': {
            'proto_field': 'resolved_filter_field_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_with_expr_node': {
            'proto_field': 'resolved_with_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_catalog_column_ref_node': {
            'proto_field': 'resolved_catalog_column_ref_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_get_element_property_node': {
            'proto_field': 'resolved_graph_get_element_property_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_make_element_node': {
            'proto_field': 'resolved_graph_make_element_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_array_aggregate_node': {
            'proto_field': 'resolved_array_aggregate_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_is_labeled_predicate_node': {
            'proto_field': 'resolved_graph_is_labeled_predicate_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_update_constructor_node': {
            'proto_field': 'resolved_update_constructor_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_get_row_field_node': {
            'proto_field': 'resolved_get_row_field_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedFunctionCallBase(ProtoModel):
    """Generated model for AnyResolvedFunctionCallBaseProto"""

    resolved_function_call_node: Optional['ResolvedFunctionCall'] = None
    resolved_non_scalar_function_call_base_node: Optional['ResolvedNonScalarFunctionCallBase'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedFunctionCallBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_function_call_node': {
            'proto_field': 'resolved_function_call_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_non_scalar_function_call_base_node': {
            'proto_field': 'resolved_non_scalar_function_call_base_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedGrantOrRevokeStmt(ProtoModel):
    """Generated model for AnyResolvedGrantOrRevokeStmtProto"""

    resolved_grant_stmt_node: Optional['ResolvedGrantStmt'] = None
    resolved_revoke_stmt_node: Optional['ResolvedRevokeStmt'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedGrantOrRevokeStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_grant_stmt_node': {
            'proto_field': 'resolved_grant_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_revoke_stmt_node': {
            'proto_field': 'resolved_revoke_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedGraphElementScan(ProtoModel):
    """Generated model for AnyResolvedGraphElementScanProto"""

    resolved_graph_node_scan_node: Optional['ResolvedGraphNodeScan'] = None
    resolved_graph_edge_scan_node: Optional['ResolvedGraphEdgeScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedGraphElementScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_graph_node_scan_node': {
            'proto_field': 'resolved_graph_node_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_edge_scan_node': {
            'proto_field': 'resolved_graph_edge_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedGraphLabelExpr(ProtoModel):
    """Generated model for AnyResolvedGraphLabelExprProto"""

    resolved_graph_label_nary_expr_node: Optional['ResolvedGraphLabelNaryExpr'] = None
    resolved_graph_label_node: Optional['ResolvedGraphLabel'] = None
    resolved_graph_wild_card_label_node: Optional['ResolvedGraphWildCardLabel'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedGraphLabelExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_graph_label_nary_expr_node': {
            'proto_field': 'resolved_graph_label_nary_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_label_node': {
            'proto_field': 'resolved_graph_label_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_wild_card_label_node': {
            'proto_field': 'resolved_graph_wild_card_label_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedGraphPathScanBase(ProtoModel):
    """Generated model for AnyResolvedGraphPathScanBaseProto"""

    resolved_graph_element_scan_node: Optional['ResolvedGraphElementScan'] = None
    resolved_graph_path_scan_node: Optional['ResolvedGraphPathScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedGraphPathScanBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_graph_element_scan_node': {
            'proto_field': 'resolved_graph_element_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_path_scan_node': {
            'proto_field': 'resolved_graph_path_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedGraphScanBase(ProtoModel):
    """Generated model for AnyResolvedGraphScanBaseProto"""

    resolved_graph_scan_node: Optional['ResolvedGraphScan'] = None
    resolved_graph_linear_scan_node: Optional['ResolvedGraphLinearScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedGraphScanBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_graph_scan_node': {
            'proto_field': 'resolved_graph_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_linear_scan_node': {
            'proto_field': 'resolved_graph_linear_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedGroupingSetBase(ProtoModel):
    """Generated model for AnyResolvedGroupingSetBaseProto"""

    resolved_grouping_set_node: Optional['ResolvedGroupingSet'] = None
    resolved_rollup_node: Optional['ResolvedRollup'] = None
    resolved_cube_node: Optional['ResolvedCube'] = None
    resolved_grouping_set_list_node: Optional['ResolvedGroupingSetList'] = None
    resolved_grouping_set_product_node: Optional['ResolvedGroupingSetProduct'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedGroupingSetBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_grouping_set_node': {
            'proto_field': 'resolved_grouping_set_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_rollup_node': {
            'proto_field': 'resolved_rollup_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_cube_node': {
            'proto_field': 'resolved_cube_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_grouping_set_list_node': {
            'proto_field': 'resolved_grouping_set_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_grouping_set_product_node': {
            'proto_field': 'resolved_grouping_set_product_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedMatchRecognizePatternExpr(ProtoModel):
    """Generated model for AnyResolvedMatchRecognizePatternExprProto"""

    resolved_match_recognize_pattern_empty_node: Optional['ResolvedMatchRecognizePatternEmpty'] = None
    resolved_match_recognize_pattern_variable_ref_node: Optional['ResolvedMatchRecognizePatternVariableRef'] = None
    resolved_match_recognize_pattern_operation_node: Optional['ResolvedMatchRecognizePatternOperation'] = None
    resolved_match_recognize_pattern_quantification_node: Optional['ResolvedMatchRecognizePatternQuantification'] = None
    resolved_match_recognize_pattern_anchor_node: Optional['ResolvedMatchRecognizePatternAnchor'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedMatchRecognizePatternExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_match_recognize_pattern_empty_node': {
            'proto_field': 'resolved_match_recognize_pattern_empty_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_match_recognize_pattern_variable_ref_node': {
            'proto_field': 'resolved_match_recognize_pattern_variable_ref_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_match_recognize_pattern_operation_node': {
            'proto_field': 'resolved_match_recognize_pattern_operation_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_match_recognize_pattern_quantification_node': {
            'proto_field': 'resolved_match_recognize_pattern_quantification_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_match_recognize_pattern_anchor_node': {
            'proto_field': 'resolved_match_recognize_pattern_anchor_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedNode(ProtoModel):
    """Generated model for AnyResolvedNodeProto"""

    resolved_argument_node: Optional['ResolvedArgument'] = None
    resolved_expr_node: Optional['ResolvedExpr'] = None
    resolved_scan_node: Optional['ResolvedScan'] = None
    resolved_statement_node: Optional['ResolvedStatement'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedNodeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_argument_node': {
            'proto_field': 'resolved_argument_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_expr_node': {
            'proto_field': 'resolved_expr_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_scan_node': {
            'proto_field': 'resolved_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_statement_node': {
            'proto_field': 'resolved_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedNonScalarFunctionCallBase(ProtoModel):
    """Generated model for AnyResolvedNonScalarFunctionCallBaseProto"""

    resolved_aggregate_function_call_node: Optional['ResolvedAggregateFunctionCall'] = None
    resolved_analytic_function_call_node: Optional['ResolvedAnalyticFunctionCall'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedNonScalarFunctionCallBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_aggregate_function_call_node': {
            'proto_field': 'resolved_aggregate_function_call_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_analytic_function_call_node': {
            'proto_field': 'resolved_analytic_function_call_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedScan(ProtoModel):
    """Generated model for AnyResolvedScanProto"""

    resolved_single_row_scan_node: Optional['ResolvedSingleRowScan'] = None
    resolved_table_scan_node: Optional['ResolvedTableScan'] = None
    resolved_join_scan_node: Optional['ResolvedJoinScan'] = None
    resolved_array_scan_node: Optional['ResolvedArrayScan'] = None
    resolved_filter_scan_node: Optional['ResolvedFilterScan'] = None
    resolved_set_operation_scan_node: Optional['ResolvedSetOperationScan'] = None
    resolved_order_by_scan_node: Optional['ResolvedOrderByScan'] = None
    resolved_limit_offset_scan_node: Optional['ResolvedLimitOffsetScan'] = None
    resolved_with_ref_scan_node: Optional['ResolvedWithRefScan'] = None
    resolved_analytic_scan_node: Optional['ResolvedAnalyticScan'] = None
    resolved_sample_scan_node: Optional['ResolvedSampleScan'] = None
    resolved_project_scan_node: Optional['ResolvedProjectScan'] = None
    resolved_with_scan_node: Optional['ResolvedWithScan'] = None
    resolved_tvfscan_node: Optional['ResolvedTVFScan'] = None
    resolved_relation_argument_scan_node: Optional['ResolvedRelationArgumentScan'] = None
    resolved_aggregate_scan_base_node: Optional['ResolvedAggregateScanBase'] = None
    resolved_recursive_ref_scan_node: Optional['ResolvedRecursiveRefScan'] = None
    resolved_recursive_scan_node: Optional['ResolvedRecursiveScan'] = None
    resolved_pivot_scan_node: Optional['ResolvedPivotScan'] = None
    resolved_unpivot_scan_node: Optional['ResolvedUnpivotScan'] = None
    resolved_group_rows_scan_node: Optional['ResolvedGroupRowsScan'] = None
    resolved_execute_as_role_scan_node: Optional['ResolvedExecuteAsRoleScan'] = None
    resolved_graph_table_scan_node: Optional['ResolvedGraphTableScan'] = None
    resolved_graph_path_scan_base_node: Optional['ResolvedGraphPathScanBase'] = None
    resolved_graph_scan_base_node: Optional['ResolvedGraphScanBase'] = None
    resolved_graph_ref_scan_node: Optional['ResolvedGraphRefScan'] = None
    resolved_static_describe_scan_node: Optional['ResolvedStaticDescribeScan'] = None
    resolved_assert_scan_node: Optional['ResolvedAssertScan'] = None
    resolved_barrier_scan_node: Optional['ResolvedBarrierScan'] = None
    resolved_match_recognize_scan_node: Optional['ResolvedMatchRecognizeScan'] = None
    resolved_log_scan_node: Optional['ResolvedLogScan'] = None
    resolved_subpipeline_input_scan_node: Optional['ResolvedSubpipelineInputScan'] = None
    resolved_pipe_if_scan_node: Optional['ResolvedPipeIfScan'] = None
    resolved_pipe_fork_scan_node: Optional['ResolvedPipeForkScan'] = None
    resolved_pipe_export_data_scan_node: Optional['ResolvedPipeExportDataScan'] = None
    resolved_pipe_create_table_scan_node: Optional['ResolvedPipeCreateTableScan'] = None
    resolved_pipe_tee_scan_node: Optional['ResolvedPipeTeeScan'] = None
    resolved_pipe_insert_scan_node: Optional['ResolvedPipeInsertScan'] = None
    resolved_graph_call_scan_node: Optional['ResolvedGraphCallScan'] = None
    resolved_describe_scan_node: Optional['ResolvedDescribeScan'] = None
    resolved_unset_argument_scan_node: Optional['ResolvedUnsetArgumentScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_single_row_scan_node': {
            'proto_field': 'resolved_single_row_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_table_scan_node': {
            'proto_field': 'resolved_table_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_join_scan_node': {
            'proto_field': 'resolved_join_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_array_scan_node': {
            'proto_field': 'resolved_array_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_filter_scan_node': {
            'proto_field': 'resolved_filter_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_set_operation_scan_node': {
            'proto_field': 'resolved_set_operation_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_order_by_scan_node': {
            'proto_field': 'resolved_order_by_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_limit_offset_scan_node': {
            'proto_field': 'resolved_limit_offset_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_with_ref_scan_node': {
            'proto_field': 'resolved_with_ref_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_analytic_scan_node': {
            'proto_field': 'resolved_analytic_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_sample_scan_node': {
            'proto_field': 'resolved_sample_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_project_scan_node': {
            'proto_field': 'resolved_project_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_with_scan_node': {
            'proto_field': 'resolved_with_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_tvfscan_node': {
            'proto_field': 'resolved_tvfscan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_relation_argument_scan_node': {
            'proto_field': 'resolved_relation_argument_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_aggregate_scan_base_node': {
            'proto_field': 'resolved_aggregate_scan_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_recursive_ref_scan_node': {
            'proto_field': 'resolved_recursive_ref_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_recursive_scan_node': {
            'proto_field': 'resolved_recursive_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_pivot_scan_node': {
            'proto_field': 'resolved_pivot_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_unpivot_scan_node': {
            'proto_field': 'resolved_unpivot_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_group_rows_scan_node': {
            'proto_field': 'resolved_group_rows_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_execute_as_role_scan_node': {
            'proto_field': 'resolved_execute_as_role_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_table_scan_node': {
            'proto_field': 'resolved_graph_table_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_path_scan_base_node': {
            'proto_field': 'resolved_graph_path_scan_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_scan_base_node': {
            'proto_field': 'resolved_graph_scan_base_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_ref_scan_node': {
            'proto_field': 'resolved_graph_ref_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_static_describe_scan_node': {
            'proto_field': 'resolved_static_describe_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_assert_scan_node': {
            'proto_field': 'resolved_assert_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_barrier_scan_node': {
            'proto_field': 'resolved_barrier_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_match_recognize_scan_node': {
            'proto_field': 'resolved_match_recognize_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_log_scan_node': {
            'proto_field': 'resolved_log_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_subpipeline_input_scan_node': {
            'proto_field': 'resolved_subpipeline_input_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_pipe_if_scan_node': {
            'proto_field': 'resolved_pipe_if_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_pipe_fork_scan_node': {
            'proto_field': 'resolved_pipe_fork_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_pipe_export_data_scan_node': {
            'proto_field': 'resolved_pipe_export_data_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_pipe_create_table_scan_node': {
            'proto_field': 'resolved_pipe_create_table_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_pipe_tee_scan_node': {
            'proto_field': 'resolved_pipe_tee_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_pipe_insert_scan_node': {
            'proto_field': 'resolved_pipe_insert_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_graph_call_scan_node': {
            'proto_field': 'resolved_graph_call_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_describe_scan_node': {
            'proto_field': 'resolved_describe_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_unset_argument_scan_node': {
            'proto_field': 'resolved_unset_argument_scan_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class AnyResolvedStatement(ProtoModel):
    """Generated model for AnyResolvedStatementProto"""

    resolved_explain_stmt_node: Optional['ResolvedExplainStmt'] = None
    resolved_query_stmt_node: Optional['ResolvedQueryStmt'] = None
    resolved_create_statement_node: Optional['ResolvedCreateStatement'] = None
    resolved_export_data_stmt_node: Optional['ResolvedExportDataStmt'] = None
    resolved_define_table_stmt_node: Optional['ResolvedDefineTableStmt'] = None
    resolved_describe_stmt_node: Optional['ResolvedDescribeStmt'] = None
    resolved_show_stmt_node: Optional['ResolvedShowStmt'] = None
    resolved_begin_stmt_node: Optional['ResolvedBeginStmt'] = None
    resolved_commit_stmt_node: Optional['ResolvedCommitStmt'] = None
    resolved_rollback_stmt_node: Optional['ResolvedRollbackStmt'] = None
    resolved_drop_stmt_node: Optional['ResolvedDropStmt'] = None
    resolved_insert_stmt_node: Optional['ResolvedInsertStmt'] = None
    resolved_delete_stmt_node: Optional['ResolvedDeleteStmt'] = None
    resolved_update_stmt_node: Optional['ResolvedUpdateStmt'] = None
    resolved_grant_or_revoke_stmt_node: Optional['ResolvedGrantOrRevokeStmt'] = None
    resolved_alter_table_set_options_stmt_node: Optional['ResolvedAlterTableSetOptionsStmt'] = None
    resolved_rename_stmt_node: Optional['ResolvedRenameStmt'] = None
    resolved_create_row_access_policy_stmt_node: Optional['ResolvedCreateRowAccessPolicyStmt'] = None
    resolved_drop_row_access_policy_stmt_node: Optional['ResolvedDropRowAccessPolicyStmt'] = None
    resolved_drop_function_stmt_node: Optional['ResolvedDropFunctionStmt'] = None
    resolved_call_stmt_node: Optional['ResolvedCallStmt'] = None
    resolved_import_stmt_node: Optional['ResolvedImportStmt'] = None
    resolved_module_stmt_node: Optional['ResolvedModuleStmt'] = None
    resolved_create_database_stmt_node: Optional['ResolvedCreateDatabaseStmt'] = None
    resolved_assert_stmt_node: Optional['ResolvedAssertStmt'] = None
    resolved_merge_stmt_node: Optional['ResolvedMergeStmt'] = None
    resolved_alter_object_stmt_node: Optional['ResolvedAlterObjectStmt'] = None
    resolved_set_transaction_stmt_node: Optional['ResolvedSetTransactionStmt'] = None
    resolved_drop_materialized_view_stmt_node: Optional['ResolvedDropMaterializedViewStmt'] = None
    resolved_start_batch_stmt_node: Optional['ResolvedStartBatchStmt'] = None
    resolved_run_batch_stmt_node: Optional['ResolvedRunBatchStmt'] = None
    resolved_abort_batch_stmt_node: Optional['ResolvedAbortBatchStmt'] = None
    resolved_truncate_stmt_node: Optional['ResolvedTruncateStmt'] = None
    resolved_execute_immediate_stmt_node: Optional['ResolvedExecuteImmediateStmt'] = None
    resolved_assignment_stmt_node: Optional['ResolvedAssignmentStmt'] = None
    resolved_export_model_stmt_node: Optional['ResolvedExportModelStmt'] = None
    resolved_drop_table_function_stmt_node: Optional['ResolvedDropTableFunctionStmt'] = None
    resolved_clone_data_stmt_node: Optional['ResolvedCloneDataStmt'] = None
    resolved_analyze_stmt_node: Optional['ResolvedAnalyzeStmt'] = None
    resolved_drop_snapshot_table_stmt_node: Optional['ResolvedDropSnapshotTableStmt'] = None
    resolved_aux_load_data_stmt_node: Optional['ResolvedAuxLoadDataStmt'] = None
    resolved_drop_privilege_restriction_stmt_node: Optional['ResolvedDropPrivilegeRestrictionStmt'] = None
    resolved_undrop_stmt_node: Optional['ResolvedUndropStmt'] = None
    resolved_export_metadata_stmt_node: Optional['ResolvedExportMetadataStmt'] = None
    resolved_drop_index_stmt_node: Optional['ResolvedDropIndexStmt'] = None
    resolved_generalized_query_stmt_node: Optional['ResolvedGeneralizedQueryStmt'] = None
    resolved_multi_stmt_node: Optional['ResolvedMultiStmt'] = None
    resolved_create_with_entry_stmt_node: Optional['ResolvedCreateWithEntryStmt'] = None
    resolved_subpipeline_stmt_node: Optional['ResolvedSubpipelineStmt'] = None
    resolved_statement_with_pipe_operators_stmt_node: Optional['ResolvedStatementWithPipeOperatorsStmt'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.AnyResolvedStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'resolved_explain_stmt_node': {
            'proto_field': 'resolved_explain_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_query_stmt_node': {
            'proto_field': 'resolved_query_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_statement_node': {
            'proto_field': 'resolved_create_statement_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_export_data_stmt_node': {
            'proto_field': 'resolved_export_data_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_define_table_stmt_node': {
            'proto_field': 'resolved_define_table_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_describe_stmt_node': {
            'proto_field': 'resolved_describe_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_show_stmt_node': {
            'proto_field': 'resolved_show_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_begin_stmt_node': {
            'proto_field': 'resolved_begin_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_commit_stmt_node': {
            'proto_field': 'resolved_commit_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_rollback_stmt_node': {
            'proto_field': 'resolved_rollback_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_drop_stmt_node': {
            'proto_field': 'resolved_drop_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_insert_stmt_node': {
            'proto_field': 'resolved_insert_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_delete_stmt_node': {
            'proto_field': 'resolved_delete_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_update_stmt_node': {
            'proto_field': 'resolved_update_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_grant_or_revoke_stmt_node': {
            'proto_field': 'resolved_grant_or_revoke_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_table_set_options_stmt_node': {
            'proto_field': 'resolved_alter_table_set_options_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_rename_stmt_node': {
            'proto_field': 'resolved_rename_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_row_access_policy_stmt_node': {
            'proto_field': 'resolved_create_row_access_policy_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_drop_row_access_policy_stmt_node': {
            'proto_field': 'resolved_drop_row_access_policy_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_drop_function_stmt_node': {
            'proto_field': 'resolved_drop_function_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_call_stmt_node': {
            'proto_field': 'resolved_call_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_import_stmt_node': {
            'proto_field': 'resolved_import_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_module_stmt_node': {
            'proto_field': 'resolved_module_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_database_stmt_node': {
            'proto_field': 'resolved_create_database_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_assert_stmt_node': {
            'proto_field': 'resolved_assert_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_merge_stmt_node': {
            'proto_field': 'resolved_merge_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_alter_object_stmt_node': {
            'proto_field': 'resolved_alter_object_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_set_transaction_stmt_node': {
            'proto_field': 'resolved_set_transaction_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_drop_materialized_view_stmt_node': {
            'proto_field': 'resolved_drop_materialized_view_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_start_batch_stmt_node': {
            'proto_field': 'resolved_start_batch_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_run_batch_stmt_node': {
            'proto_field': 'resolved_run_batch_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_abort_batch_stmt_node': {
            'proto_field': 'resolved_abort_batch_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_truncate_stmt_node': {
            'proto_field': 'resolved_truncate_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_execute_immediate_stmt_node': {
            'proto_field': 'resolved_execute_immediate_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_assignment_stmt_node': {
            'proto_field': 'resolved_assignment_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_export_model_stmt_node': {
            'proto_field': 'resolved_export_model_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_drop_table_function_stmt_node': {
            'proto_field': 'resolved_drop_table_function_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_clone_data_stmt_node': {
            'proto_field': 'resolved_clone_data_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_analyze_stmt_node': {
            'proto_field': 'resolved_analyze_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_drop_snapshot_table_stmt_node': {
            'proto_field': 'resolved_drop_snapshot_table_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_aux_load_data_stmt_node': {
            'proto_field': 'resolved_aux_load_data_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_drop_privilege_restriction_stmt_node': {
            'proto_field': 'resolved_drop_privilege_restriction_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_undrop_stmt_node': {
            'proto_field': 'resolved_undrop_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_export_metadata_stmt_node': {
            'proto_field': 'resolved_export_metadata_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_drop_index_stmt_node': {
            'proto_field': 'resolved_drop_index_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_generalized_query_stmt_node': {
            'proto_field': 'resolved_generalized_query_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_multi_stmt_node': {
            'proto_field': 'resolved_multi_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_create_with_entry_stmt_node': {
            'proto_field': 'resolved_create_with_entry_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_subpipeline_stmt_node': {
            'proto_field': 'resolved_subpipeline_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_statement_with_pipe_operators_stmt_node': {
            'proto_field': 'resolved_statement_with_pipe_operators_stmt_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ArgumentTypeLambda(ProtoModel):
    """Generated model for ArgumentTypeLambdaProto"""

    argument: List['FunctionArgumentType'] = field(default_factory=list)
    body: Optional['FunctionArgumentType'] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.ArgumentTypeLambdaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'argument': {
            'proto_field': 'argument',
            'is_message': True,
            'is_repeated': True,
        },
        'body': {
            'proto_field': 'body',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ArrayFindEnums(ProtoModel):
    """Generated model for ArrayFindEnums"""

    # Nested Enums
    class ArrayFindMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf ArrayFindMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        ARRAY_FIND_MODE_INVALID = functions_array_find_mode_pb2.ArrayFindEnums.ARRAY_FIND_MODE_INVALID  # 0
        FIRST = functions_array_find_mode_pb2.ArrayFindEnums.FIRST  # 1
        LAST = functions_array_find_mode_pb2.ArrayFindEnums.LAST  # 2


    _PROTO_CLASS: ClassVar[type] = functions_array_find_mode_pb2.ArrayFindEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ArrayType(ProtoModel):
    """Generated model for ArrayTypeProto"""

    element_type: Optional['Type'] = None

    _PROTO_CLASS: ClassVar[type] = public_type_pb2.ArrayTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'element_type': {
            'proto_field': 'element_type',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ArrayZipEnums(ProtoModel):
    """Generated model for ArrayZipEnums"""

    # Nested Enums
    class ArrayZipMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf ArrayZipMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        ARRAY_ZIP_MODE_INVALID = functions_array_zip_mode_pb2.ArrayZipEnums.ARRAY_ZIP_MODE_INVALID  # 0
        PAD = functions_array_zip_mode_pb2.ArrayZipEnums.PAD  # 1
        TRUNCATE = functions_array_zip_mode_pb2.ArrayZipEnums.TRUNCATE  # 2
        STRICT = functions_array_zip_mode_pb2.ArrayZipEnums.STRICT  # 3


    _PROTO_CLASS: ClassVar[type] = functions_array_zip_mode_pb2.ArrayZipEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class BitwiseAggEnums(ProtoModel):
    """Generated model for BitwiseAggEnums"""

    # Nested Enums
    class BitwiseAggMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf BitwiseAggMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        BITWISE_AGG_MODE_INVALID = functions_bitwise_agg_mode_pb2.BitwiseAggEnums.BITWISE_AGG_MODE_INVALID  # 0
        STRICT = functions_bitwise_agg_mode_pb2.BitwiseAggEnums.STRICT  # 1
        PAD = functions_bitwise_agg_mode_pb2.BitwiseAggEnums.PAD  # 2


    _PROTO_CLASS: ClassVar[type] = functions_bitwise_agg_mode_pb2.BitwiseAggEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class BoundingReport(ProtoModel):
    """Generated model for BoundingReport"""

    lower_bound: Optional['AnonOutputValue'] = None
    upper_bound: Optional['AnonOutputValue'] = None
    num_inputs: Optional[float] = None
    num_outside: Optional[float] = None

    _PROTO_CLASS: ClassVar[type] = proto_anon_output_with_report_pb2.BoundingReport
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'lower_bound': {
            'proto_field': 'lower_bound',
            'is_message': True,
            'is_repeated': False,
        },
        'upper_bound': {
            'proto_field': 'upper_bound',
            'is_message': True,
            'is_repeated': False,
        },
        'num_inputs': {
            'proto_field': 'num_inputs',
            'is_message': False,
            'is_repeated': False,
        },
        'num_outside': {
            'proto_field': 'num_outside',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class BuildSqlRequest(ProtoModel):
    """Generated model for BuildSqlRequest"""

    simple_catalog: Optional['SimpleCatalog'] = None
    descriptor_pool_list: Optional['DescriptorPoolList'] = None
    registered_catalog_id: Optional[int] = None
    resolved_statement: Optional['ResolvedStatement'] = None
    resolved_expression: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.BuildSqlRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'simple_catalog': {
            'proto_field': 'simple_catalog',
            'is_message': True,
            'is_repeated': False,
        },
        'descriptor_pool_list': {
            'proto_field': 'descriptor_pool_list',
            'is_message': True,
            'is_repeated': False,
        },
        'registered_catalog_id': {
            'proto_field': 'registered_catalog_id',
            'is_message': False,
            'is_repeated': False,
        },
        'resolved_statement': {
            'proto_field': 'resolved_statement',
            'is_message': True,
            'is_repeated': False,
        },
        'resolved_expression': {
            'proto_field': 'resolved_expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class BuildSqlResponse(ProtoModel):
    """Generated model for BuildSqlResponse"""

    sql: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.BuildSqlResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql': {
            'proto_field': 'sql',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class Collation(ProtoModel):
    """Generated model for CollationProto"""

    collation_name: Optional[str] = None
    child_list: List['Collation'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_collation_pb2.CollationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'collation_name': {
            'proto_field': 'collation_name',
            'is_message': False,
            'is_repeated': False,
        },
        'child_list': {
            'proto_field': 'child_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class Column(ProtoModel):
    """Generated model for Column"""

    table_alias: Optional[str] = None
    column_name: Optional[str] = None
    type: Optional[str] = None
    is_value_table_column: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = common_reflection_pb2.Column
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_alias': {
            'proto_field': 'table_alias',
            'is_message': False,
            'is_repeated': False,
        },
        'column_name': {
            'proto_field': 'column_name',
            'is_message': False,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': False,
            'is_repeated': False,
        },
        'is_value_table_column': {
            'proto_field': 'is_value_table_column',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ColumnRef(ProtoModel):
    """Generated model for ColumnRefProto"""

    table_ref: Optional['TableRef'] = None
    name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.ColumnRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_ref': {
            'proto_field': 'table_ref',
            'is_message': True,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class CompiledPattern(ProtoModel):
    """Generated model for CompiledPatternProto"""

    state_machine: Optional['StateMachine'] = None

    _PROTO_CLASS: ClassVar[type] = match_recognize_compiled_pattern_pb2.CompiledPatternProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'state_machine': {
            'proto_field': 'state_machine',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ComplianceTestCaseLabels(ProtoModel):
    """Generated model for ComplianceTestCaseLabels"""

    test_name: Optional[str] = None
    test_query: Optional[str] = None
    param: List['ComplianceTestCaseLabels.Param'] = field(default_factory=list)
    test_error_mode: Optional['KnownErrorMode'] = None
    compliance_labels: List[str] = field(default_factory=list)
    test_shard: Optional[int] = None
    test_location: Optional['ComplianceTestCaseLabels.Location'] = None

    _PROTO_CLASS: ClassVar[type] = compliance_compliance_label_pb2.ComplianceTestCaseLabels
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'test_name': {
            'proto_field': 'test_name',
            'is_message': False,
            'is_repeated': False,
        },
        'test_query': {
            'proto_field': 'test_query',
            'is_message': False,
            'is_repeated': False,
        },
        'param': {
            'proto_field': 'param',
            'is_message': True,
            'is_repeated': True,
        },
        'test_error_mode': {
            'proto_field': 'test_error_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'KnownErrorMode',
        },
        'compliance_labels': {
            'proto_field': 'compliance_labels',
            'is_message': False,
            'is_repeated': True,
        },
        'test_shard': {
            'proto_field': 'test_shard',
            'is_message': False,
            'is_repeated': False,
        },
        'test_location': {
            'proto_field': 'test_location',
            'is_message': True,
            'is_repeated': False,
        },
    }

    @dataclass
    class Location(ProtoModel):
        """Generated model for Location"""

        file: Optional[str] = None
        line: Optional[int] = None

        _PROTO_CLASS: ClassVar[type] = compliance_compliance_label_pb2.ComplianceTestCaseLabels.Location
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'file': {
                'proto_field': 'file',
                'is_message': False,
                'is_repeated': False,
            },
            'line': {
                'proto_field': 'line',
                'is_message': False,
                'is_repeated': False,
            },
        }

    @dataclass
    class Param(ProtoModel):
        """Generated model for Param"""

        param_name: Optional[str] = None
        param_value_literal: Optional[str] = None

        _PROTO_CLASS: ClassVar[type] = compliance_compliance_label_pb2.ComplianceTestCaseLabels.Param
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'param_name': {
                'proto_field': 'param_name',
                'is_message': False,
                'is_repeated': False,
            },
            'param_value_literal': {
                'proto_field': 'param_value_literal',
                'is_message': False,
                'is_repeated': False,
            },
        }


@dataclass
class ComplianceTestsLabels(ProtoModel):
    """Generated model for ComplianceTestsLabels"""

    test_cases: List['ComplianceTestCaseLabels'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = compliance_compliance_label_pb2.ComplianceTestsLabels
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'test_cases': {
            'proto_field': 'test_cases',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ConnectionRef(ProtoModel):
    """Generated model for ConnectionRefProto"""

    name: Optional[str] = None
    full_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.ConnectionRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'full_name': {
            'proto_field': 'full_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ConstantRef(ProtoModel):
    """Generated model for ConstantRefProto"""

    name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.ConstantRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ConstnessLevel(ProtoModel):
    """Generated model for ConstnessLevelProto"""

    # Nested Enums
    class Level(IntEnum):
        """
        Auto-generated IntEnum for protobuf Level.
        
        Values are directly compatible with protobuf integer constants.
        """

        CONSTNESS_UNSPECIFIED = public_constness_level_pb2.ConstnessLevelProto.CONSTNESS_UNSPECIFIED  # 0
        FOREVER_CONST = public_constness_level_pb2.ConstnessLevelProto.FOREVER_CONST  # 1
        ANALYSIS_CONST = public_constness_level_pb2.ConstnessLevelProto.ANALYSIS_CONST  # 2
        LEGACY_LITERAL_OR_PARAMETER = public_constness_level_pb2.ConstnessLevelProto.LEGACY_LITERAL_OR_PARAMETER  # 1000
        LEGACY_CONSTANT_EXPRESSION = public_constness_level_pb2.ConstnessLevelProto.LEGACY_CONSTANT_EXPRESSION  # 1001


    _PROTO_CLASS: ClassVar[type] = public_constness_level_pb2.ConstnessLevelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class DeprecatedEncoding(ProtoModel):
    """Generated model for DeprecatedEncoding"""

    # Nested Enums
    class Encoding(IntEnum):
        """
        Auto-generated IntEnum for protobuf Encoding.
        
        Values are directly compatible with protobuf integer constants.
        """

        __FieldFormat_Encoding__switch_must_have_a_default__ = proto_type_annotation_pb2.DeprecatedEncoding.__FieldFormat_Encoding__switch_must_have_a_default__  # -1
        DEFAULT_ENCODING = proto_type_annotation_pb2.DeprecatedEncoding.DEFAULT_ENCODING  # 0
        DATE_DECIMAL = proto_type_annotation_pb2.DeprecatedEncoding.DATE_DECIMAL  # 1
        DATE_PACKED32 = proto_type_annotation_pb2.DeprecatedEncoding.DATE_PACKED32  # 1


    _PROTO_CLASS: ClassVar[type] = proto_type_annotation_pb2.DeprecatedEncoding
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class DeprecationWarning(ProtoModel):
    """Generated model for DeprecationWarning"""

    # Nested Enums
    class Kind(IntEnum):
        """
        Auto-generated IntEnum for protobuf Kind.
        
        Values are directly compatible with protobuf integer constants.
        """

        __Kind__switch_must_have_a_default__ = public_deprecation_warning_pb2.DeprecationWarning.__Kind__switch_must_have_a_default__  # -1
        UNKNOWN = public_deprecation_warning_pb2.DeprecationWarning.UNKNOWN  # 0
        DEPRECATED_FUNCTION = public_deprecation_warning_pb2.DeprecationWarning.DEPRECATED_FUNCTION  # 1
        DEPRECATED_FUNCTION_SIGNATURE = public_deprecation_warning_pb2.DeprecationWarning.DEPRECATED_FUNCTION_SIGNATURE  # 2
        PROTO3_FIELD_PRESENCE = public_deprecation_warning_pb2.DeprecationWarning.PROTO3_FIELD_PRESENCE  # 3
        QUERY_TOO_COMPLEX = public_deprecation_warning_pb2.DeprecationWarning.QUERY_TOO_COMPLEX  # 4
        DEPRECATED_ANONYMIZATION_OPTION_KAPPA = public_deprecation_warning_pb2.DeprecationWarning.DEPRECATED_ANONYMIZATION_OPTION_KAPPA  # 5
        PIVOT_OR_UNPIVOT_ON_ARRAY_SCAN = public_deprecation_warning_pb2.DeprecationWarning.PIVOT_OR_UNPIVOT_ON_ARRAY_SCAN  # 6
        TABLE_SYNTAX_ARGUMENT_RESOLUTION_ORDER = public_deprecation_warning_pb2.DeprecationWarning.TABLE_SYNTAX_ARGUMENT_RESOLUTION_ORDER  # 7
        PIPE_WINDOW = public_deprecation_warning_pb2.DeprecationWarning.PIPE_WINDOW  # 8
        RESERVED_KEYWORD = public_deprecation_warning_pb2.DeprecationWarning.RESERVED_KEYWORD  # 9
        LEGACY_FUNCTION_OPTIONS_PLACEMENT = public_deprecation_warning_pb2.DeprecationWarning.LEGACY_FUNCTION_OPTIONS_PLACEMENT  # 10
        LATERAL_COLUMN_REFERENCE = public_deprecation_warning_pb2.DeprecationWarning.LATERAL_COLUMN_REFERENCE  # 12


    kind: Optional['DeprecationWarning.Kind'] = None

    _PROTO_CLASS: ClassVar[type] = public_deprecation_warning_pb2.DeprecationWarning
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'kind': {
            'proto_field': 'kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Kind',
            'enum_parent_message': 'DeprecationWarning',
        },
    }


@dataclass
class DescriptorPoolIdList(ProtoModel):
    """Generated model for DescriptorPoolIdList"""

    registered_ids: List[int] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.DescriptorPoolIdList
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'registered_ids': {
            'proto_field': 'registered_ids',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class DescriptorPoolList(ProtoModel):
    """Generated model for DescriptorPoolListProto"""

    definitions: List['DescriptorPoolList.Definition'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.DescriptorPoolListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'definitions': {
            'proto_field': 'definitions',
            'is_message': True,
            'is_repeated': True,
        },
    }

    @dataclass
    class Builtin(ProtoModel):
        """Generated model for Builtin"""

        _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.DescriptorPoolListProto.Builtin
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}

    @dataclass
    class Definition(ProtoModel):
        """Generated model for Definition"""

        file_descriptor_set: Optional[descriptor_pb2.FileDescriptorSet] = None
        registered_id: Optional[int] = None
        builtin: Optional['DescriptorPoolList.Builtin'] = None

        _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.DescriptorPoolListProto.Definition
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'file_descriptor_set': {
                'proto_field': 'file_descriptor_set',
                'is_message': True,
                'is_repeated': False,
            },
            'registered_id': {
                'proto_field': 'registered_id',
                'is_message': False,
                'is_repeated': False,
            },
            'builtin': {
                'proto_field': 'builtin',
                'is_message': True,
                'is_repeated': False,
            },
        }


@dataclass
class DifferentialPrivacyBoundingReport(ProtoModel):
    """Generated model for DifferentialPrivacyBoundingReport"""

    lower_bound: Optional['DifferentialPrivacyOutputValue'] = None
    upper_bound: Optional['DifferentialPrivacyOutputValue'] = None
    num_inputs: Optional[float] = None
    num_outside: Optional[float] = None

    _PROTO_CLASS: ClassVar[type] = functions_differential_privacy_pb2.DifferentialPrivacyBoundingReport
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'lower_bound': {
            'proto_field': 'lower_bound',
            'is_message': True,
            'is_repeated': False,
        },
        'upper_bound': {
            'proto_field': 'upper_bound',
            'is_message': True,
            'is_repeated': False,
        },
        'num_inputs': {
            'proto_field': 'num_inputs',
            'is_message': False,
            'is_repeated': False,
        },
        'num_outside': {
            'proto_field': 'num_outside',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class DifferentialPrivacyEnums(ProtoModel):
    """Generated model for DifferentialPrivacyEnums"""

    # Nested Enums
    class ReportFormat(IntEnum):
        """
        Auto-generated IntEnum for protobuf ReportFormat.
        
        Values are directly compatible with protobuf integer constants.
        """

        DIFFERENTIAL_PRIVACY_REPORT_FORMAT_INVALID = functions_differential_privacy_pb2.DifferentialPrivacyEnums.DIFFERENTIAL_PRIVACY_REPORT_FORMAT_INVALID  # 0
        JSON = functions_differential_privacy_pb2.DifferentialPrivacyEnums.JSON  # 1
        PROTO = functions_differential_privacy_pb2.DifferentialPrivacyEnums.PROTO  # 2

    class GroupSelectionStrategy(IntEnum):
        """
        Auto-generated IntEnum for protobuf GroupSelectionStrategy.
        
        Values are directly compatible with protobuf integer constants.
        """

        DIFFERENTIAL_PRIVACY_GROUP_SELECTION_STRATEGY_INVALID = functions_differential_privacy_pb2.DifferentialPrivacyEnums.DIFFERENTIAL_PRIVACY_GROUP_SELECTION_STRATEGY_INVALID  # 0
        LAPLACE_THRESHOLD = functions_differential_privacy_pb2.DifferentialPrivacyEnums.LAPLACE_THRESHOLD  # 1
        PUBLIC_GROUPS = functions_differential_privacy_pb2.DifferentialPrivacyEnums.PUBLIC_GROUPS  # 2

    class CountDistinctContributionBoundingStrategy(IntEnum):
        """
        Auto-generated IntEnum for protobuf CountDistinctContributionBoundingStrategy.
        
        Values are directly compatible with protobuf integer constants.
        """

        DIFFERENTIAL_PRIVACY_COUNT_DISTINCT_CONTRIBUTION_BOUNDING_STRATEGY_INVALID = functions_differential_privacy_pb2.DifferentialPrivacyEnums.DIFFERENTIAL_PRIVACY_COUNT_DISTINCT_CONTRIBUTION_BOUNDING_STRATEGY_INVALID  # 0
        AUTO = functions_differential_privacy_pb2.DifferentialPrivacyEnums.AUTO  # 1
        SAMPLING = functions_differential_privacy_pb2.DifferentialPrivacyEnums.SAMPLING  # 2
        GREEDY = functions_differential_privacy_pb2.DifferentialPrivacyEnums.GREEDY  # 3
        MATCHING = functions_differential_privacy_pb2.DifferentialPrivacyEnums.MATCHING  # 4


    _PROTO_CLASS: ClassVar[type] = functions_differential_privacy_pb2.DifferentialPrivacyEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class DifferentialPrivacyOutputValue(ProtoModel):
    """Generated model for DifferentialPrivacyOutputValue"""

    int_value: Optional[int] = None
    float_value: Optional[float] = None
    string_value: Optional[str] = None
    noise_confidence_interval: Optional['NoiseConfidenceInterval'] = None

    _PROTO_CLASS: ClassVar[type] = functions_differential_privacy_pb2.DifferentialPrivacyOutputValue
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'int_value': {
            'proto_field': 'int_value',
            'is_message': False,
            'is_repeated': False,
        },
        'float_value': {
            'proto_field': 'float_value',
            'is_message': False,
            'is_repeated': False,
        },
        'string_value': {
            'proto_field': 'string_value',
            'is_message': False,
            'is_repeated': False,
        },
        'noise_confidence_interval': {
            'proto_field': 'noise_confidence_interval',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class DifferentialPrivacyOutputValues(ProtoModel):
    """Generated model for DifferentialPrivacyOutputValues"""

    values: List['DifferentialPrivacyOutputValue'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = functions_differential_privacy_pb2.DifferentialPrivacyOutputValues
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'values': {
            'proto_field': 'values',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class DifferentialPrivacyOutputWithReport(ProtoModel):
    """Generated model for DifferentialPrivacyOutputWithReport"""

    value: Optional['DifferentialPrivacyOutputValue'] = None
    values: Optional['DifferentialPrivacyOutputValues'] = None
    bounding_report: Optional['DifferentialPrivacyBoundingReport'] = None
    count_distinct_bounding_report: Optional['DifferentiallyPrivateCountDistinctBoundingReport'] = None

    _PROTO_CLASS: ClassVar[type] = functions_differential_privacy_pb2.DifferentialPrivacyOutputWithReport
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
        'values': {
            'proto_field': 'values',
            'is_message': True,
            'is_repeated': False,
        },
        'bounding_report': {
            'proto_field': 'bounding_report',
            'is_message': True,
            'is_repeated': False,
        },
        'count_distinct_bounding_report': {
            'proto_field': 'count_distinct_bounding_report',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class DifferentiallyPrivateCountDistinctBoundingReport(ProtoModel):
    """Generated model for DifferentiallyPrivateCountDistinctBoundingReport"""

    contribution_bounding_strategy: Optional['DifferentialPrivacyEnums.CountDistinctContributionBoundingStrategy'] = None
    upper_bound: Optional[int] = None
    num_inputs: Optional[float] = None

    _PROTO_CLASS: ClassVar[type] = functions_differential_privacy_pb2.DifferentiallyPrivateCountDistinctBoundingReport
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'contribution_bounding_strategy': {
            'proto_field': 'contribution_bounding_strategy',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'CountDistinctContributionBoundingStrategy',
            'enum_parent_message': 'DifferentialPrivacyEnums',
        },
        'upper_bound': {
            'proto_field': 'upper_bound',
            'is_message': False,
            'is_repeated': False,
        },
        'num_inputs': {
            'proto_field': 'num_inputs',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class Edits(ProtoModel):
    """Generated model for Edits"""

    text_edits: List['TextEdit'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_fix_suggestion_pb2.Edits
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'text_edits': {
            'proto_field': 'text_edits',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class EnabledRewrite(ProtoModel):
    """Generated model for EnabledRewriteProto"""

    key: Optional['FunctionSignatureId'] = None
    value: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = proto_options_pb2.EnabledRewriteProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'key': {
            'proto_field': 'key',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'FunctionSignatureId',
        },
        'value': {
            'proto_field': 'value',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class EnumType(ProtoModel):
    """Generated model for EnumTypeProto"""

    enum_name: Optional[str] = None
    enum_file_name: Optional[str] = None
    file_descriptor_set_index: Optional[int] = None
    catalog_name_path: List[str] = field(default_factory=list)
    is_opaque: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = public_type_pb2.EnumTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'enum_name': {
            'proto_field': 'enum_name',
            'is_message': False,
            'is_repeated': False,
        },
        'enum_file_name': {
            'proto_field': 'enum_file_name',
            'is_message': False,
            'is_repeated': False,
        },
        'file_descriptor_set_index': {
            'proto_field': 'file_descriptor_set_index',
            'is_message': False,
            'is_repeated': False,
        },
        'catalog_name_path': {
            'proto_field': 'catalog_name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'is_opaque': {
            'proto_field': 'is_opaque',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ErrorFixSuggestions(ProtoModel):
    """Generated model for ErrorFixSuggestions"""

    fix_suggestions: List['Fix'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_fix_suggestion_pb2.ErrorFixSuggestions
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'fix_suggestions': {
            'proto_field': 'fix_suggestions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ErrorLocation(ProtoModel):
    """Generated model for ErrorLocation"""

    line: Optional[int] = None
    column: Optional[int] = None
    filename: Optional[str] = None
    input_start_line_offset: Optional[int] = None
    input_start_column_offset: Optional[int] = None
    error_source: List['ErrorSource'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_error_location_pb2.ErrorLocation
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'line': {
            'proto_field': 'line',
            'is_message': False,
            'is_repeated': False,
        },
        'column': {
            'proto_field': 'column',
            'is_message': False,
            'is_repeated': False,
        },
        'filename': {
            'proto_field': 'filename',
            'is_message': False,
            'is_repeated': False,
        },
        'input_start_line_offset': {
            'proto_field': 'input_start_line_offset',
            'is_message': False,
            'is_repeated': False,
        },
        'input_start_column_offset': {
            'proto_field': 'input_start_column_offset',
            'is_message': False,
            'is_repeated': False,
        },
        'error_source': {
            'proto_field': 'error_source',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ErrorMessageModeForPayload(ProtoModel):
    """Generated model for ErrorMessageModeForPayload"""

    mode: Optional['ErrorMessageMode'] = None

    _PROTO_CLASS: ClassVar[type] = public_options_pb2.ErrorMessageModeForPayload
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'mode': {
            'proto_field': 'mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ErrorMessageMode',
        },
    }


@dataclass
class ErrorSource(ProtoModel):
    """Generated model for ErrorSource"""

    error_message: Optional[str] = None
    error_message_caret_string: Optional[str] = None
    error_location: Optional['ErrorLocation'] = None

    _PROTO_CLASS: ClassVar[type] = public_error_location_pb2.ErrorSource
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'error_message': {
            'proto_field': 'error_message',
            'is_message': False,
            'is_repeated': False,
        },
        'error_message_caret_string': {
            'proto_field': 'error_message_caret_string',
            'is_message': False,
            'is_repeated': False,
        },
        'error_location': {
            'proto_field': 'error_location',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class EvaluateModifyBatchRequest(ProtoModel):
    """Generated model for EvaluateModifyBatchRequest"""

    request: List['EvaluateModifyRequest'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateModifyBatchRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'request': {
            'proto_field': 'request',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class EvaluateModifyBatchResponse(ProtoModel):
    """Generated model for EvaluateModifyBatchResponse"""

    response: List['EvaluateModifyResponse'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateModifyBatchResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'response': {
            'proto_field': 'response',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class EvaluateModifyRequest(ProtoModel):
    """Generated model for EvaluateModifyRequest"""

    sql: Optional[str] = None
    options: Optional['AnalyzerOptions'] = None
    descriptor_pool_list: Optional['DescriptorPoolList'] = None
    simple_catalog: Optional['SimpleCatalog'] = None
    registered_catalog_id: Optional[int] = None
    prepared_modify_id: Optional[int] = None
    table_content: Dict[str, 'TableContent'] = field(default_factory=dict)
    params: List['EvaluateRequest.Parameter'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateModifyRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql': {
            'proto_field': 'sql',
            'is_message': False,
            'is_repeated': False,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
        'descriptor_pool_list': {
            'proto_field': 'descriptor_pool_list',
            'is_message': True,
            'is_repeated': False,
        },
        'simple_catalog': {
            'proto_field': 'simple_catalog',
            'is_message': True,
            'is_repeated': False,
        },
        'registered_catalog_id': {
            'proto_field': 'registered_catalog_id',
            'is_message': False,
            'is_repeated': False,
        },
        'prepared_modify_id': {
            'proto_field': 'prepared_modify_id',
            'is_message': False,
            'is_repeated': False,
        },
        'table_content': {
            'proto_field': 'table_content',
            'is_message': True,
            'is_repeated': True,
        },
        'params': {
            'proto_field': 'params',
            'is_message': True,
            'is_repeated': True,
        },
    }

    @dataclass
    class TableContentEntry(ProtoModel):
        """Generated model for TableContentEntry"""

        key: Optional[str] = None
        value: Optional['TableContent'] = None

        _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateModifyRequest.TableContentEntry
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'key': {
                'proto_field': 'key',
                'is_message': False,
                'is_repeated': False,
            },
            'value': {
                'proto_field': 'value',
                'is_message': True,
                'is_repeated': False,
            },
        }


@dataclass
class EvaluateModifyResponse(ProtoModel):
    """Generated model for EvaluateModifyResponse"""

    table_name: Optional[str] = None
    content: List['EvaluateModifyResponse.Row'] = field(default_factory=list)
    prepared: Optional['PreparedModifyState'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateModifyResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_name': {
            'proto_field': 'table_name',
            'is_message': False,
            'is_repeated': False,
        },
        'content': {
            'proto_field': 'content',
            'is_message': True,
            'is_repeated': True,
        },
        'prepared': {
            'proto_field': 'prepared',
            'is_message': True,
            'is_repeated': False,
        },
    }

    @dataclass
    class Row(ProtoModel):
        """Generated model for Row"""

        # Nested Enums
        class Operation(IntEnum):
            """
            Auto-generated IntEnum for protobuf Operation.
            
            Values are directly compatible with protobuf integer constants.
            """

            UNKNOWN = local_service_local_service_pb2.EvaluateModifyResponse.Row.UNKNOWN  # 0
            INSERT = local_service_local_service_pb2.EvaluateModifyResponse.Row.INSERT  # 1
            DELETE = local_service_local_service_pb2.EvaluateModifyResponse.Row.DELETE  # 2
            UPDATE = local_service_local_service_pb2.EvaluateModifyResponse.Row.UPDATE  # 3


        operation: Optional['Row.Operation'] = None
        cell: List['Value'] = field(default_factory=list)
        old_primary_key: List['Value'] = field(default_factory=list)

        _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateModifyResponse.Row
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'operation': {
                'proto_field': 'operation',
                'is_message': False,
                'is_repeated': False,
                'is_enum': True,
                'enum_type_name': 'Operation',
                'enum_parent_message': 'Row',
            },
            'cell': {
                'proto_field': 'cell',
                'is_message': True,
                'is_repeated': True,
            },
            'old_primary_key': {
                'proto_field': 'old_primary_key',
                'is_message': True,
                'is_repeated': True,
            },
        }


@dataclass
class EvaluateQueryBatchRequest(ProtoModel):
    """Generated model for EvaluateQueryBatchRequest"""

    request: List['EvaluateQueryRequest'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateQueryBatchRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'request': {
            'proto_field': 'request',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class EvaluateQueryBatchResponse(ProtoModel):
    """Generated model for EvaluateQueryBatchResponse"""

    response: List['EvaluateQueryResponse'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateQueryBatchResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'response': {
            'proto_field': 'response',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class EvaluateQueryRequest(ProtoModel):
    """Generated model for EvaluateQueryRequest"""

    sql: Optional[str] = None
    options: Optional['AnalyzerOptions'] = None
    descriptor_pool_list: Optional['DescriptorPoolList'] = None
    simple_catalog: Optional['SimpleCatalog'] = None
    registered_catalog_id: Optional[int] = None
    prepared_query_id: Optional[int] = None
    table_content: Dict[str, 'TableContent'] = field(default_factory=dict)
    params: List['EvaluateRequest.Parameter'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateQueryRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql': {
            'proto_field': 'sql',
            'is_message': False,
            'is_repeated': False,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
        'descriptor_pool_list': {
            'proto_field': 'descriptor_pool_list',
            'is_message': True,
            'is_repeated': False,
        },
        'simple_catalog': {
            'proto_field': 'simple_catalog',
            'is_message': True,
            'is_repeated': False,
        },
        'registered_catalog_id': {
            'proto_field': 'registered_catalog_id',
            'is_message': False,
            'is_repeated': False,
        },
        'prepared_query_id': {
            'proto_field': 'prepared_query_id',
            'is_message': False,
            'is_repeated': False,
        },
        'table_content': {
            'proto_field': 'table_content',
            'is_message': True,
            'is_repeated': True,
        },
        'params': {
            'proto_field': 'params',
            'is_message': True,
            'is_repeated': True,
        },
    }

    @dataclass
    class TableContentEntry(ProtoModel):
        """Generated model for TableContentEntry"""

        key: Optional[str] = None
        value: Optional['TableContent'] = None

        _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateQueryRequest.TableContentEntry
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'key': {
                'proto_field': 'key',
                'is_message': False,
                'is_repeated': False,
            },
            'value': {
                'proto_field': 'value',
                'is_message': True,
                'is_repeated': False,
            },
        }


@dataclass
class EvaluateQueryResponse(ProtoModel):
    """Generated model for EvaluateQueryResponse"""

    content: Optional['TableContent'] = None
    prepared: Optional['PreparedQueryState'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateQueryResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'content': {
            'proto_field': 'content',
            'is_message': True,
            'is_repeated': False,
        },
        'prepared': {
            'proto_field': 'prepared',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class EvaluateRequest(ProtoModel):
    """Generated model for EvaluateRequest"""

    sql: Optional[str] = None
    columns: List['EvaluateRequest.Parameter'] = field(default_factory=list)
    params: List['EvaluateRequest.Parameter'] = field(default_factory=list)
    descriptor_pool_list: Optional['DescriptorPoolList'] = None
    prepared_expression_id: Optional[int] = None
    options: Optional['AnalyzerOptions'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql': {
            'proto_field': 'sql',
            'is_message': False,
            'is_repeated': False,
        },
        'columns': {
            'proto_field': 'columns',
            'is_message': True,
            'is_repeated': True,
        },
        'params': {
            'proto_field': 'params',
            'is_message': True,
            'is_repeated': True,
        },
        'descriptor_pool_list': {
            'proto_field': 'descriptor_pool_list',
            'is_message': True,
            'is_repeated': False,
        },
        'prepared_expression_id': {
            'proto_field': 'prepared_expression_id',
            'is_message': False,
            'is_repeated': False,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
    }

    @dataclass
    class Parameter(ProtoModel):
        """Generated model for Parameter"""

        name: Optional[str] = None
        value: Optional['Value'] = None

        _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateRequest.Parameter
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'name': {
                'proto_field': 'name',
                'is_message': False,
                'is_repeated': False,
            },
            'value': {
                'proto_field': 'value',
                'is_message': True,
                'is_repeated': False,
            },
        }


@dataclass
class EvaluateRequestBatch(ProtoModel):
    """Generated model for EvaluateRequestBatch"""

    request: List['EvaluateRequest'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateRequestBatch
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'request': {
            'proto_field': 'request',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class EvaluateResponse(ProtoModel):
    """Generated model for EvaluateResponse"""

    value: Optional['Value'] = None
    prepared: Optional['PreparedState'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
        'prepared': {
            'proto_field': 'prepared',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class EvaluateResponseBatch(ProtoModel):
    """Generated model for EvaluateResponseBatch"""

    response: List['EvaluateResponse'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.EvaluateResponseBatch
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'response': {
            'proto_field': 'response',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class EvaluatorTableIterator(ProtoModel):
    """Generated model for EvaluatorTableIteratorProto"""

    location_byte_offset: Optional[int] = None
    next_row_count: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = reference_impl_evaluator_table_iterator_pb2.EvaluatorTableIteratorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'location_byte_offset': {
            'proto_field': 'location_byte_offset',
            'is_message': False,
            'is_repeated': False,
        },
        'next_row_count': {
            'proto_field': 'next_row_count',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ExecutionStats(ProtoModel):
    """Generated model for ExecutionStats"""

    # Nested Enums
    class ParserVariant(IntEnum):
        """
        Auto-generated IntEnum for protobuf ParserVariant.
        
        Values are directly compatible with protobuf integer constants.
        """

        PARSER_UNSPECIFIED = proto_logging_pb2.ExecutionStats.PARSER_UNSPECIFIED  # 0
        PARSER_BISON = proto_logging_pb2.ExecutionStats.PARSER_BISON  # 1
        PARSER_TEXTMAPPER = proto_logging_pb2.ExecutionStats.PARSER_TEXTMAPPER  # 2


    wall_time: Optional[datetime.timedelta] = None
    cpu_time: Optional[datetime.timedelta] = None
    stack_available_bytes: Optional[int] = None
    stack_peak_used_bytes: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = proto_logging_pb2.ExecutionStats
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'wall_time': {
            'proto_field': 'wall_time',
            'is_message': True,
            'is_repeated': False,
        },
        'cpu_time': {
            'proto_field': 'cpu_time',
            'is_message': True,
            'is_repeated': False,
        },
        'stack_available_bytes': {
            'proto_field': 'stack_available_bytes',
            'is_message': False,
            'is_repeated': False,
        },
        'stack_peak_used_bytes': {
            'proto_field': 'stack_peak_used_bytes',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ExpressionAttribute(ProtoModel):
    """Generated model for ExpressionAttributeProto"""

    # Nested Enums
    class ExpressionKind(IntEnum):
        """
        Auto-generated IntEnum for protobuf ExpressionKind.
        
        Values are directly compatible with protobuf integer constants.
        """

        DEFAULT = public_simple_table_pb2.ExpressionAttributeProto.DEFAULT  # 0
        GENERATED = public_simple_table_pb2.ExpressionAttributeProto.GENERATED  # 1
        MEASURE_EXPRESSION = public_simple_table_pb2.ExpressionAttributeProto.MEASURE_EXPRESSION  # 2


    expression_string: Optional[str] = None
    expression_kind: Optional['ExpressionAttribute.ExpressionKind'] = None
    row_identity_column_index: List[int] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_simple_table_pb2.ExpressionAttributeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression_string': {
            'proto_field': 'expression_string',
            'is_message': False,
            'is_repeated': False,
        },
        'expression_kind': {
            'proto_field': 'expression_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ExpressionKind',
            'enum_parent_message': 'ExpressionAttributeProto',
        },
        'row_identity_column_index': {
            'proto_field': 'row_identity_column_index',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ExtendedTypeParameters(ProtoModel):
    """Generated model for ExtendedTypeParametersProto"""

    parameters: List['SimpleValue'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_type_parameters_pb2.ExtendedTypeParametersProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'parameters': {
            'proto_field': 'parameters',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ExtractTableNamesFromNextStatementRequest(ProtoModel):
    """Generated model for ExtractTableNamesFromNextStatementRequest"""

    parse_resume_location: Optional['ParseResumeLocation'] = None
    options: Optional['LanguageOptions'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.ExtractTableNamesFromNextStatementRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'parse_resume_location': {
            'proto_field': 'parse_resume_location',
            'is_message': True,
            'is_repeated': False,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ExtractTableNamesFromNextStatementResponse(ProtoModel):
    """Generated model for ExtractTableNamesFromNextStatementResponse"""

    table_name: List['ExtractTableNamesFromNextStatementResponse.TableName'] = field(default_factory=list)
    resume_byte_position: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.ExtractTableNamesFromNextStatementResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_name': {
            'proto_field': 'table_name',
            'is_message': True,
            'is_repeated': True,
        },
        'resume_byte_position': {
            'proto_field': 'resume_byte_position',
            'is_message': False,
            'is_repeated': False,
        },
    }

    @dataclass
    class TableName(ProtoModel):
        """Generated model for TableName"""

        table_name_segment: List[str] = field(default_factory=list)

        _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.ExtractTableNamesFromNextStatementResponse.TableName
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'table_name_segment': {
                'proto_field': 'table_name_segment',
                'is_message': False,
                'is_repeated': True,
            },
        }


@dataclass
class ExtractTableNamesFromStatementRequest(ProtoModel):
    """Generated model for ExtractTableNamesFromStatementRequest"""

    sql_statement: Optional[str] = None
    options: Optional['LanguageOptions'] = None
    allow_script: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.ExtractTableNamesFromStatementRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql_statement': {
            'proto_field': 'sql_statement',
            'is_message': False,
            'is_repeated': False,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
        'allow_script': {
            'proto_field': 'allow_script',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ExtractTableNamesFromStatementResponse(ProtoModel):
    """Generated model for ExtractTableNamesFromStatementResponse"""

    table_name: List['ExtractTableNamesFromStatementResponse.TableName'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.ExtractTableNamesFromStatementResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_name': {
            'proto_field': 'table_name',
            'is_message': True,
            'is_repeated': True,
        },
    }

    @dataclass
    class TableName(ProtoModel):
        """Generated model for TableName"""

        table_name_segment: List[str] = field(default_factory=list)

        _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.ExtractTableNamesFromStatementResponse.TableName
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'table_name_segment': {
                'proto_field': 'table_name_segment',
                'is_message': False,
                'is_repeated': True,
            },
        }


@dataclass
class FeatureLabelDictionary(ProtoModel):
    """Generated model for FeatureLabelDictionaryProto"""

    label_mapping: Dict[int, str] = field(default_factory=dict)
    encoded_labels: Dict[int, 'FeatureLabelDictionary.LabelSet'] = field(default_factory=dict)

    _PROTO_CLASS: ClassVar[type] = public_feature_label_dictionary_pb2.FeatureLabelDictionaryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'label_mapping': {
            'proto_field': 'label_mapping',
            'is_message': True,
            'is_repeated': True,
        },
        'encoded_labels': {
            'proto_field': 'encoded_labels',
            'is_message': True,
            'is_repeated': True,
        },
    }

    @dataclass
    class EncodedLabelsEntry(ProtoModel):
        """Generated model for EncodedLabelsEntry"""

        key: Optional[int] = None
        value: Optional['FeatureLabelDictionary.LabelSet'] = None

        _PROTO_CLASS: ClassVar[type] = public_feature_label_dictionary_pb2.FeatureLabelDictionaryProto.EncodedLabelsEntry
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'key': {
                'proto_field': 'key',
                'is_message': False,
                'is_repeated': False,
            },
            'value': {
                'proto_field': 'value',
                'is_message': True,
                'is_repeated': False,
            },
        }

    @dataclass
    class LabelMappingEntry(ProtoModel):
        """Generated model for LabelMappingEntry"""

        key: Optional[int] = None
        value: Optional[str] = None

        _PROTO_CLASS: ClassVar[type] = public_feature_label_dictionary_pb2.FeatureLabelDictionaryProto.LabelMappingEntry
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'key': {
                'proto_field': 'key',
                'is_message': False,
                'is_repeated': False,
            },
            'value': {
                'proto_field': 'value',
                'is_message': False,
                'is_repeated': False,
            },
        }

    @dataclass
    class LabelSet(ProtoModel):
        """Generated model for LabelSet"""

        label: List[int] = field(default_factory=list)

        _PROTO_CLASS: ClassVar[type] = public_feature_label_dictionary_pb2.FeatureLabelDictionaryProto.LabelSet
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'label': {
                'proto_field': 'label',
                'is_message': False,
                'is_repeated': True,
            },
        }


@dataclass
class FieldDescriptorRef(ProtoModel):
    """Generated model for FieldDescriptorRefProto"""

    containing_proto: Optional['ProtoType'] = None
    number: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.FieldDescriptorRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'containing_proto': {
            'proto_field': 'containing_proto',
            'is_message': True,
            'is_repeated': False,
        },
        'number': {
            'proto_field': 'number',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class FieldFormat(ProtoModel):
    """Generated model for FieldFormat"""

    # Nested Enums
    class Format(IntEnum):
        """
        Auto-generated IntEnum for protobuf Format.
        
        Values are directly compatible with protobuf integer constants.
        """

        __FieldFormat_Type__switch_must_have_a_default__ = proto_type_annotation_pb2.FieldFormat.__FieldFormat_Type__switch_must_have_a_default__  # -1
        DEFAULT_FORMAT = proto_type_annotation_pb2.FieldFormat.DEFAULT_FORMAT  # 0
        DATE = proto_type_annotation_pb2.FieldFormat.DATE  # 1
        TIMESTAMP_SECONDS = proto_type_annotation_pb2.FieldFormat.TIMESTAMP_SECONDS  # 2
        TIMESTAMP_MILLIS = proto_type_annotation_pb2.FieldFormat.TIMESTAMP_MILLIS  # 3
        TIMESTAMP_MICROS = proto_type_annotation_pb2.FieldFormat.TIMESTAMP_MICROS  # 4
        TIMESTAMP_NANOS = proto_type_annotation_pb2.FieldFormat.TIMESTAMP_NANOS  # 5
        DATE_DECIMAL = proto_type_annotation_pb2.FieldFormat.DATE_DECIMAL  # 6
        TIME_MICROS = proto_type_annotation_pb2.FieldFormat.TIME_MICROS  # 7
        DATETIME_MICROS = proto_type_annotation_pb2.FieldFormat.DATETIME_MICROS  # 8
        ST_GEOGRAPHY_ENCODED = proto_type_annotation_pb2.FieldFormat.ST_GEOGRAPHY_ENCODED  # 9
        NUMERIC = proto_type_annotation_pb2.FieldFormat.NUMERIC  # 10
        BIGNUMERIC = proto_type_annotation_pb2.FieldFormat.BIGNUMERIC  # 11
        JSON = proto_type_annotation_pb2.FieldFormat.JSON  # 12
        INTERVAL = proto_type_annotation_pb2.FieldFormat.INTERVAL  # 14
        TOKENLIST = proto_type_annotation_pb2.FieldFormat.TOKENLIST  # 15
        RANGE_DATES_ENCODED = proto_type_annotation_pb2.FieldFormat.RANGE_DATES_ENCODED  # 16
        RANGE_DATETIMES_ENCODED = proto_type_annotation_pb2.FieldFormat.RANGE_DATETIMES_ENCODED  # 17
        RANGE_TIMESTAMPS_ENCODED = proto_type_annotation_pb2.FieldFormat.RANGE_TIMESTAMPS_ENCODED  # 18
        UUID = proto_type_annotation_pb2.FieldFormat.UUID  # 19
        TIMESTAMP_PICOS = proto_type_annotation_pb2.FieldFormat.TIMESTAMP_PICOS  # 20
        TIMESTAMP = proto_type_annotation_pb2.FieldFormat.TIMESTAMP  # 21


    _PROTO_CLASS: ClassVar[type] = proto_type_annotation_pb2.FieldFormat
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class Fix(ProtoModel):
    """Generated model for Fix"""

    title: Optional[str] = None
    edits: Optional['Edits'] = None

    _PROTO_CLASS: ClassVar[type] = public_fix_suggestion_pb2.Fix
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'title': {
            'proto_field': 'title',
            'is_message': False,
            'is_repeated': False,
        },
        'edits': {
            'proto_field': 'edits',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class FixRange(ProtoModel):
    """Generated model for FixRange"""

    start: Optional['ErrorLocation'] = None
    length: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = public_fix_suggestion_pb2.FixRange
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'start': {
            'proto_field': 'start',
            'is_message': True,
            'is_repeated': False,
        },
        'length': {
            'proto_field': 'length',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class FormatSqlRequest(ProtoModel):
    """Generated model for FormatSqlRequest"""

    sql: Optional[str] = None
    options: Optional['FormatterOptions'] = None
    byte_ranges: List['FormatterRange'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.FormatSqlRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql': {
            'proto_field': 'sql',
            'is_message': False,
            'is_repeated': False,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
        'byte_ranges': {
            'proto_field': 'byte_ranges',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class FormatSqlResponse(ProtoModel):
    """Generated model for FormatSqlResponse"""

    sql: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.FormatSqlResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql': {
            'proto_field': 'sql',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class FormatterOptions(ProtoModel):
    """Generated model for FormatterOptionsProto"""

    new_line_type: Optional[str] = None
    line_length_limit: Optional[int] = None
    indentation_spaces: Optional[int] = None
    allow_invalid_tokens: Optional[bool] = None
    capitalize_keywords: Optional[bool] = None
    preserve_line_breaks: Optional[bool] = None
    expand_format_ranges: Optional[bool] = None
    enforce_single_quotes: Optional[bool] = None
    capitalize_functions: Optional[bool] = None
    format_structured_strings: Optional[bool] = None
    format_comments: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = public_formatter_options_pb2.FormatterOptionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'new_line_type': {
            'proto_field': 'new_line_type',
            'is_message': False,
            'is_repeated': False,
        },
        'line_length_limit': {
            'proto_field': 'line_length_limit',
            'is_message': False,
            'is_repeated': False,
        },
        'indentation_spaces': {
            'proto_field': 'indentation_spaces',
            'is_message': False,
            'is_repeated': False,
        },
        'allow_invalid_tokens': {
            'proto_field': 'allow_invalid_tokens',
            'is_message': False,
            'is_repeated': False,
        },
        'capitalize_keywords': {
            'proto_field': 'capitalize_keywords',
            'is_message': False,
            'is_repeated': False,
        },
        'preserve_line_breaks': {
            'proto_field': 'preserve_line_breaks',
            'is_message': False,
            'is_repeated': False,
        },
        'expand_format_ranges': {
            'proto_field': 'expand_format_ranges',
            'is_message': False,
            'is_repeated': False,
        },
        'enforce_single_quotes': {
            'proto_field': 'enforce_single_quotes',
            'is_message': False,
            'is_repeated': False,
        },
        'capitalize_functions': {
            'proto_field': 'capitalize_functions',
            'is_message': False,
            'is_repeated': False,
        },
        'format_structured_strings': {
            'proto_field': 'format_structured_strings',
            'is_message': False,
            'is_repeated': False,
        },
        'format_comments': {
            'proto_field': 'format_comments',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class FormatterRange(ProtoModel):
    """Generated model for FormatterRangeProto"""

    start: Optional[int] = None
    end: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = public_formatter_options_pb2.FormatterRangeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'start': {
            'proto_field': 'start',
            'is_message': False,
            'is_repeated': False,
        },
        'end': {
            'proto_field': 'end',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class FreestandingDeprecationWarning(ProtoModel):
    """Generated model for FreestandingDeprecationWarning"""

    message: Optional[str] = None
    caret_string: Optional[str] = None
    error_location: Optional['ErrorLocation'] = None
    deprecation_warning: Optional['DeprecationWarning'] = None

    _PROTO_CLASS: ClassVar[type] = public_deprecation_warning_pb2.FreestandingDeprecationWarning
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'message': {
            'proto_field': 'message',
            'is_message': False,
            'is_repeated': False,
        },
        'caret_string': {
            'proto_field': 'caret_string',
            'is_message': False,
            'is_repeated': False,
        },
        'error_location': {
            'proto_field': 'error_location',
            'is_message': True,
            'is_repeated': False,
        },
        'deprecation_warning': {
            'proto_field': 'deprecation_warning',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class Function(ProtoModel):
    """Generated model for FunctionProto"""

    name_path: List[str] = field(default_factory=list)
    group: Optional[str] = None
    mode: Optional['FunctionEnums.Mode'] = None
    signature: List['FunctionSignature'] = field(default_factory=list)
    options: Optional['FunctionOptions'] = None
    parse_resume_location: Optional['ParseResumeLocation'] = None
    templated_sql_function_argument_name: List[str] = field(default_factory=list)
    sql_security: Optional['ResolvedCreateStatementEnums.SqlSecurity'] = None
    statement_context: Optional['StatementContext'] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.FunctionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'group': {
            'proto_field': 'group',
            'is_message': False,
            'is_repeated': False,
        },
        'mode': {
            'proto_field': 'mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Mode',
            'enum_parent_message': 'FunctionEnums',
        },
        'signature': {
            'proto_field': 'signature',
            'is_message': True,
            'is_repeated': True,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
        'parse_resume_location': {
            'proto_field': 'parse_resume_location',
            'is_message': True,
            'is_repeated': False,
        },
        'templated_sql_function_argument_name': {
            'proto_field': 'templated_sql_function_argument_name',
            'is_message': False,
            'is_repeated': True,
        },
        'sql_security': {
            'proto_field': 'sql_security',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SqlSecurity',
            'enum_parent_message': 'ResolvedCreateStatementEnums',
        },
        'statement_context': {
            'proto_field': 'statement_context',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'StatementContext',
        },
    }


@dataclass
class FunctionArgumentType(ProtoModel):
    """Generated model for FunctionArgumentTypeProto"""

    kind: Optional['SignatureArgumentKind'] = None
    type: Optional['Type'] = None
    num_occurrences: Optional[int] = None
    options: Optional['FunctionArgumentTypeOptions'] = None
    lambda_: Optional['ArgumentTypeLambda'] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.FunctionArgumentTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'kind': {
            'proto_field': 'kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SignatureArgumentKind',
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'num_occurrences': {
            'proto_field': 'num_occurrences',
            'is_message': False,
            'is_repeated': False,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
        'lambda_': {
            'proto_field': 'lambda',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class FunctionArgumentTypeOptions(ProtoModel):
    """Generated model for FunctionArgumentTypeOptionsProto"""

    cardinality: Optional['FunctionEnums.ArgumentCardinality'] = None
    must_be_constant: Optional[bool] = None
    must_be_non_null: Optional[bool] = None
    is_not_aggregate: Optional[bool] = None
    must_support_equality: Optional[bool] = None
    must_support_ordering: Optional[bool] = None
    min_value: Optional[int] = None
    max_value: Optional[int] = None
    extra_relation_input_columns_allowed: Optional[bool] = None
    relation_input_schema: Optional['TVFRelation'] = None
    argument_name: Optional[str] = None
    argument_name_parse_location: Optional['ParseLocationRange'] = None
    argument_type_parse_location: Optional['ParseLocationRange'] = None
    procedure_argument_mode: Optional['FunctionEnums.ProcedureArgumentMode'] = None
    argument_name_is_mandatory: Optional[bool] = None
    descriptor_resolution_table_offset: Optional[int] = None
    default_value: Optional['Value'] = None
    default_value_type: Optional['Type'] = None
    argument_collation_mode: Optional['FunctionEnums.ArgumentCollationMode'] = None
    uses_array_element_for_collation: Optional[bool] = None
    must_support_grouping: Optional[bool] = None
    array_element_must_support_equality: Optional[bool] = None
    array_element_must_support_ordering: Optional[bool] = None
    array_element_must_support_grouping: Optional[bool] = None
    named_argument_kind: Optional['FunctionEnums.NamedArgumentKind'] = None
    argument_alias_kind: Optional['FunctionEnums.ArgumentAliasKind'] = None
    must_be_constant_expression: Optional[bool] = None
    constness_level: Optional['ConstnessLevel.Level'] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.FunctionArgumentTypeOptionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'cardinality': {
            'proto_field': 'cardinality',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ArgumentCardinality',
            'enum_parent_message': 'FunctionEnums',
        },
        'must_be_constant': {
            'proto_field': 'must_be_constant',
            'is_message': False,
            'is_repeated': False,
        },
        'must_be_non_null': {
            'proto_field': 'must_be_non_null',
            'is_message': False,
            'is_repeated': False,
        },
        'is_not_aggregate': {
            'proto_field': 'is_not_aggregate',
            'is_message': False,
            'is_repeated': False,
        },
        'must_support_equality': {
            'proto_field': 'must_support_equality',
            'is_message': False,
            'is_repeated': False,
        },
        'must_support_ordering': {
            'proto_field': 'must_support_ordering',
            'is_message': False,
            'is_repeated': False,
        },
        'min_value': {
            'proto_field': 'min_value',
            'is_message': False,
            'is_repeated': False,
        },
        'max_value': {
            'proto_field': 'max_value',
            'is_message': False,
            'is_repeated': False,
        },
        'extra_relation_input_columns_allowed': {
            'proto_field': 'extra_relation_input_columns_allowed',
            'is_message': False,
            'is_repeated': False,
        },
        'relation_input_schema': {
            'proto_field': 'relation_input_schema',
            'is_message': True,
            'is_repeated': False,
        },
        'argument_name': {
            'proto_field': 'argument_name',
            'is_message': False,
            'is_repeated': False,
        },
        'argument_name_parse_location': {
            'proto_field': 'argument_name_parse_location',
            'is_message': True,
            'is_repeated': False,
        },
        'argument_type_parse_location': {
            'proto_field': 'argument_type_parse_location',
            'is_message': True,
            'is_repeated': False,
        },
        'procedure_argument_mode': {
            'proto_field': 'procedure_argument_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ProcedureArgumentMode',
            'enum_parent_message': 'FunctionEnums',
        },
        'argument_name_is_mandatory': {
            'proto_field': 'argument_name_is_mandatory',
            'is_message': False,
            'is_repeated': False,
        },
        'descriptor_resolution_table_offset': {
            'proto_field': 'descriptor_resolution_table_offset',
            'is_message': False,
            'is_repeated': False,
        },
        'default_value': {
            'proto_field': 'default_value',
            'is_message': True,
            'is_repeated': False,
        },
        'default_value_type': {
            'proto_field': 'default_value_type',
            'is_message': True,
            'is_repeated': False,
        },
        'argument_collation_mode': {
            'proto_field': 'argument_collation_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ArgumentCollationMode',
            'enum_parent_message': 'FunctionEnums',
        },
        'uses_array_element_for_collation': {
            'proto_field': 'uses_array_element_for_collation',
            'is_message': False,
            'is_repeated': False,
        },
        'must_support_grouping': {
            'proto_field': 'must_support_grouping',
            'is_message': False,
            'is_repeated': False,
        },
        'array_element_must_support_equality': {
            'proto_field': 'array_element_must_support_equality',
            'is_message': False,
            'is_repeated': False,
        },
        'array_element_must_support_ordering': {
            'proto_field': 'array_element_must_support_ordering',
            'is_message': False,
            'is_repeated': False,
        },
        'array_element_must_support_grouping': {
            'proto_field': 'array_element_must_support_grouping',
            'is_message': False,
            'is_repeated': False,
        },
        'named_argument_kind': {
            'proto_field': 'named_argument_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'NamedArgumentKind',
            'enum_parent_message': 'FunctionEnums',
        },
        'argument_alias_kind': {
            'proto_field': 'argument_alias_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ArgumentAliasKind',
            'enum_parent_message': 'FunctionEnums',
        },
        'must_be_constant_expression': {
            'proto_field': 'must_be_constant_expression',
            'is_message': False,
            'is_repeated': False,
        },
        'constness_level': {
            'proto_field': 'constness_level',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Level',
            'enum_parent_message': 'ConstnessLevelProto',
        },
    }


@dataclass
class FunctionEnums(ProtoModel):
    """Generated model for FunctionEnums"""

    # Nested Enums
    class ArgumentCardinality(IntEnum):
        """
        Auto-generated IntEnum for protobuf ArgumentCardinality.
        
        Values are directly compatible with protobuf integer constants.
        """

        REQUIRED = public_function_pb2.FunctionEnums.REQUIRED  # 0
        REPEATED = public_function_pb2.FunctionEnums.REPEATED  # 1
        OPTIONAL = public_function_pb2.FunctionEnums.OPTIONAL  # 2

    class ProcedureArgumentMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf ProcedureArgumentMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOT_SET = public_function_pb2.FunctionEnums.NOT_SET  # 0
        IN = public_function_pb2.FunctionEnums.IN  # 1
        OUT = public_function_pb2.FunctionEnums.OUT  # 2
        INOUT = public_function_pb2.FunctionEnums.INOUT  # 3

    class WindowOrderSupport(IntEnum):
        """
        Auto-generated IntEnum for protobuf WindowOrderSupport.
        
        Values are directly compatible with protobuf integer constants.
        """

        ORDER_UNSUPPORTED = public_function_pb2.FunctionEnums.ORDER_UNSUPPORTED  # 0
        ORDER_OPTIONAL = public_function_pb2.FunctionEnums.ORDER_OPTIONAL  # 1
        ORDER_REQUIRED = public_function_pb2.FunctionEnums.ORDER_REQUIRED  # 2

    class Mode(IntEnum):
        """
        Auto-generated IntEnum for protobuf Mode.
        
        Values are directly compatible with protobuf integer constants.
        """

        SCALAR = public_function_pb2.FunctionEnums.SCALAR  # 1
        AGGREGATE = public_function_pb2.FunctionEnums.AGGREGATE  # 2
        ANALYTIC = public_function_pb2.FunctionEnums.ANALYTIC  # 3

    class Volatility(IntEnum):
        """
        Auto-generated IntEnum for protobuf Volatility.
        
        Values are directly compatible with protobuf integer constants.
        """

        IMMUTABLE = public_function_pb2.FunctionEnums.IMMUTABLE  # 0
        STABLE = public_function_pb2.FunctionEnums.STABLE  # 1
        VOLATILE = public_function_pb2.FunctionEnums.VOLATILE  # 2

    class TableValuedFunctionType(IntEnum):
        """
        Auto-generated IntEnum for protobuf TableValuedFunctionType.
        
        Values are directly compatible with protobuf integer constants.
        """

        INVALID = public_function_pb2.FunctionEnums.INVALID  # 0
        FIXED_OUTPUT_SCHEMA_TVF = public_function_pb2.FunctionEnums.FIXED_OUTPUT_SCHEMA_TVF  # 1
        FORWARD_INPUT_SCHEMA_TO_OUTPUT_SCHEMA_TVF = public_function_pb2.FunctionEnums.FORWARD_INPUT_SCHEMA_TO_OUTPUT_SCHEMA_TVF  # 2
        TEMPLATED_SQL_TVF = public_function_pb2.FunctionEnums.TEMPLATED_SQL_TVF  # 3
        FORWARD_INPUT_SCHEMA_TO_OUTPUT_SCHEMA_WITH_APPENDED_COLUMNS = public_function_pb2.FunctionEnums.FORWARD_INPUT_SCHEMA_TO_OUTPUT_SCHEMA_WITH_APPENDED_COLUMNS  # 7
        BASIS_TVF = public_function_pb2.FunctionEnums.BASIS_TVF  # 8

    class ArgumentCollationMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf ArgumentCollationMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        AFFECTS_NONE = public_function_pb2.FunctionEnums.AFFECTS_NONE  # 0
        AFFECTS_OPERATION = public_function_pb2.FunctionEnums.AFFECTS_OPERATION  # 1
        AFFECTS_PROPAGATION = public_function_pb2.FunctionEnums.AFFECTS_PROPAGATION  # 2
        AFFECTS_OPERATION_AND_PROPAGATION = public_function_pb2.FunctionEnums.AFFECTS_OPERATION_AND_PROPAGATION  # 3

    class NamedArgumentKind(IntEnum):
        """
        Auto-generated IntEnum for protobuf NamedArgumentKind.
        
        Values are directly compatible with protobuf integer constants.
        """

        NAMED_ARGUMENT_KIND_UNSPECIFIED = public_function_pb2.FunctionEnums.NAMED_ARGUMENT_KIND_UNSPECIFIED  # 0
        POSITIONAL_ONLY = public_function_pb2.FunctionEnums.POSITIONAL_ONLY  # 1
        POSITIONAL_OR_NAMED = public_function_pb2.FunctionEnums.POSITIONAL_OR_NAMED  # 2
        NAMED_ONLY = public_function_pb2.FunctionEnums.NAMED_ONLY  # 3

    class ArgumentAliasKind(IntEnum):
        """
        Auto-generated IntEnum for protobuf ArgumentAliasKind.
        
        Values are directly compatible with protobuf integer constants.
        """

        ARGUMENT_ALIAS_KIND_UNSPECIFIED = public_function_pb2.FunctionEnums.ARGUMENT_ALIAS_KIND_UNSPECIFIED  # 0
        ARGUMENT_NON_ALIASED = public_function_pb2.FunctionEnums.ARGUMENT_NON_ALIASED  # 1
        ARGUMENT_ALIASED = public_function_pb2.FunctionEnums.ARGUMENT_ALIASED  # 2

    class DefaultNullHandling(IntEnum):
        """
        Auto-generated IntEnum for protobuf DefaultNullHandling.
        
        Values are directly compatible with protobuf integer constants.
        """

        DEFAULT_NULL_HANDLING_UNSPECIFIED = public_function_pb2.FunctionEnums.DEFAULT_NULL_HANDLING_UNSPECIFIED  # 0
        DEFAULT_NULL_HANDLING_IGNORE_NULLS = public_function_pb2.FunctionEnums.DEFAULT_NULL_HANDLING_IGNORE_NULLS  # 1
        DEFAULT_NULL_HANDLING_RESPECT_NULLS = public_function_pb2.FunctionEnums.DEFAULT_NULL_HANDLING_RESPECT_NULLS  # 2


    _PROTO_CLASS: ClassVar[type] = public_function_pb2.FunctionEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class FunctionOptions(ProtoModel):
    """Generated model for FunctionOptionsProto"""

    supports_over_clause: Optional[bool] = None
    window_ordering_support: Optional['FunctionEnums.WindowOrderSupport'] = None
    supports_window_framing: Optional[bool] = None
    arguments_are_coercible: Optional[bool] = None
    is_deprecated: Optional[bool] = None
    alias_name: Optional[str] = None
    sql_name: Optional[str] = None
    allow_external_usage: Optional[bool] = None
    volatility: Optional['FunctionEnums.Volatility'] = None
    supports_order_by: Optional[bool] = None
    required_language_feature: List['LanguageFeature'] = field(default_factory=list)
    supports_limit: Optional[bool] = None
    supports_null_handling_modifier: Optional[bool] = None
    supports_safe_error_mode: Optional[bool] = None
    supports_having_modifier: Optional[bool] = None
    supports_clamped_between_modifier: Optional[bool] = None
    uses_upper_case_sql_name: Optional[bool] = None
    may_suppress_side_effects: Optional[bool] = None
    module_name_from_import: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.FunctionOptionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'supports_over_clause': {
            'proto_field': 'supports_over_clause',
            'is_message': False,
            'is_repeated': False,
        },
        'window_ordering_support': {
            'proto_field': 'window_ordering_support',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'WindowOrderSupport',
            'enum_parent_message': 'FunctionEnums',
        },
        'supports_window_framing': {
            'proto_field': 'supports_window_framing',
            'is_message': False,
            'is_repeated': False,
        },
        'arguments_are_coercible': {
            'proto_field': 'arguments_are_coercible',
            'is_message': False,
            'is_repeated': False,
        },
        'is_deprecated': {
            'proto_field': 'is_deprecated',
            'is_message': False,
            'is_repeated': False,
        },
        'alias_name': {
            'proto_field': 'alias_name',
            'is_message': False,
            'is_repeated': False,
        },
        'sql_name': {
            'proto_field': 'sql_name',
            'is_message': False,
            'is_repeated': False,
        },
        'allow_external_usage': {
            'proto_field': 'allow_external_usage',
            'is_message': False,
            'is_repeated': False,
        },
        'volatility': {
            'proto_field': 'volatility',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Volatility',
            'enum_parent_message': 'FunctionEnums',
        },
        'supports_order_by': {
            'proto_field': 'supports_order_by',
            'is_message': False,
            'is_repeated': False,
        },
        'required_language_feature': {
            'proto_field': 'required_language_feature',
            'is_message': False,
            'is_repeated': True,
            'is_enum': True,
            'enum_type_name': 'LanguageFeature',
        },
        'supports_limit': {
            'proto_field': 'supports_limit',
            'is_message': False,
            'is_repeated': False,
        },
        'supports_null_handling_modifier': {
            'proto_field': 'supports_null_handling_modifier',
            'is_message': False,
            'is_repeated': False,
        },
        'supports_safe_error_mode': {
            'proto_field': 'supports_safe_error_mode',
            'is_message': False,
            'is_repeated': False,
        },
        'supports_having_modifier': {
            'proto_field': 'supports_having_modifier',
            'is_message': False,
            'is_repeated': False,
        },
        'supports_clamped_between_modifier': {
            'proto_field': 'supports_clamped_between_modifier',
            'is_message': False,
            'is_repeated': False,
        },
        'uses_upper_case_sql_name': {
            'proto_field': 'uses_upper_case_sql_name',
            'is_message': False,
            'is_repeated': False,
        },
        'may_suppress_side_effects': {
            'proto_field': 'may_suppress_side_effects',
            'is_message': False,
            'is_repeated': False,
        },
        'module_name_from_import': {
            'proto_field': 'module_name_from_import',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class FunctionRef(ProtoModel):
    """Generated model for FunctionRefProto"""

    name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.FunctionRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class FunctionSignature(ProtoModel):
    """Generated model for FunctionSignatureProto"""

    argument: List['FunctionArgumentType'] = field(default_factory=list)
    return_type: Optional['FunctionArgumentType'] = None
    context_id: Optional[int] = None
    options: Optional['FunctionSignatureOptions'] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.FunctionSignatureProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'argument': {
            'proto_field': 'argument',
            'is_message': True,
            'is_repeated': True,
        },
        'return_type': {
            'proto_field': 'return_type',
            'is_message': True,
            'is_repeated': False,
        },
        'context_id': {
            'proto_field': 'context_id',
            'is_message': False,
            'is_repeated': False,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class FunctionSignatureOptions(ProtoModel):
    """Generated model for FunctionSignatureOptionsProto"""

    is_deprecated: Optional[bool] = None
    additional_deprecation_warning: List['FreestandingDeprecationWarning'] = field(default_factory=list)
    required_language_feature: List['LanguageFeature'] = field(default_factory=list)
    is_aliased_signature: Optional[bool] = None
    propagates_collation: Optional[bool] = None
    uses_operation_collation: Optional[bool] = None
    rejects_collation: Optional[bool] = None
    rewrite_options: Optional['FunctionSignatureRewriteOptions'] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.FunctionSignatureOptionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_deprecated': {
            'proto_field': 'is_deprecated',
            'is_message': False,
            'is_repeated': False,
        },
        'additional_deprecation_warning': {
            'proto_field': 'additional_deprecation_warning',
            'is_message': True,
            'is_repeated': True,
        },
        'required_language_feature': {
            'proto_field': 'required_language_feature',
            'is_message': False,
            'is_repeated': True,
            'is_enum': True,
            'enum_type_name': 'LanguageFeature',
        },
        'is_aliased_signature': {
            'proto_field': 'is_aliased_signature',
            'is_message': False,
            'is_repeated': False,
        },
        'propagates_collation': {
            'proto_field': 'propagates_collation',
            'is_message': False,
            'is_repeated': False,
        },
        'uses_operation_collation': {
            'proto_field': 'uses_operation_collation',
            'is_message': False,
            'is_repeated': False,
        },
        'rejects_collation': {
            'proto_field': 'rejects_collation',
            'is_message': False,
            'is_repeated': False,
        },
        'rewrite_options': {
            'proto_field': 'rewrite_options',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class FunctionSignatureRewriteOptions(ProtoModel):
    """Generated model for FunctionSignatureRewriteOptionsProto"""

    enabled: Optional[bool] = None
    rewriter: Optional['ResolvedASTRewrite'] = None
    sql: Optional[str] = None
    allow_table_references: Optional[bool] = None
    allowed_function_groups: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.FunctionSignatureRewriteOptionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'enabled': {
            'proto_field': 'enabled',
            'is_message': False,
            'is_repeated': False,
        },
        'rewriter': {
            'proto_field': 'rewriter',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ResolvedASTRewrite',
        },
        'sql': {
            'proto_field': 'sql',
            'is_message': False,
            'is_repeated': False,
        },
        'allow_table_references': {
            'proto_field': 'allow_table_references',
            'is_message': False,
            'is_repeated': False,
        },
        'allowed_function_groups': {
            'proto_field': 'allowed_function_groups',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class GetBuiltinFunctionsResponse(ProtoModel):
    """Generated model for GetBuiltinFunctionsResponse"""

    function: List['Function'] = field(default_factory=list)
    types: Dict[str, 'Type'] = field(default_factory=dict)
    table_valued_function: List['TableValuedFunction'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.GetBuiltinFunctionsResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'function': {
            'proto_field': 'function',
            'is_message': True,
            'is_repeated': True,
        },
        'types': {
            'proto_field': 'types',
            'is_message': True,
            'is_repeated': True,
        },
        'table_valued_function': {
            'proto_field': 'table_valued_function',
            'is_message': True,
            'is_repeated': True,
        },
    }

    @dataclass
    class TypesEntry(ProtoModel):
        """Generated model for TypesEntry"""

        key: Optional[str] = None
        value: Optional['Type'] = None

        _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.GetBuiltinFunctionsResponse.TypesEntry
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'key': {
                'proto_field': 'key',
                'is_message': False,
                'is_repeated': False,
            },
            'value': {
                'proto_field': 'value',
                'is_message': True,
                'is_repeated': False,
            },
        }


@dataclass
class GraphElementLabel(ProtoModel):
    """Generated model for GraphElementLabelProto"""

    name: Optional[str] = None
    property_declaration_names: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = information_schema_property_graph_pb2.GraphElementLabelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'property_declaration_names': {
            'proto_field': 'property_declaration_names',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class GraphElementLabelRef(ProtoModel):
    """Generated model for GraphElementLabelRefProto"""

    property_graph: Optional['PropertyGraphRef'] = None
    name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.GraphElementLabelRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'property_graph': {
            'proto_field': 'property_graph',
            'is_message': True,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class GraphElementTable(ProtoModel):
    """Generated model for GraphElementTableProto"""

    # Nested Enums
    class Kind(IntEnum):
        """
        Auto-generated IntEnum for protobuf Kind.
        
        Values are directly compatible with protobuf integer constants.
        """

        KIND_UNSPECIFIED = information_schema_property_graph_pb2.GraphElementTableProto.KIND_UNSPECIFIED  # 0
        NODE = information_schema_property_graph_pb2.GraphElementTableProto.NODE  # 1
        EDGE = information_schema_property_graph_pb2.GraphElementTableProto.EDGE  # 2


    name: Optional[str] = None
    kind: Optional['GraphElementTable.Kind'] = None
    base_catalog_name: Optional[str] = None
    base_schema_name: Optional[str] = None
    base_table_name: Optional[str] = None
    key_columns: List[str] = field(default_factory=list)
    label_names: List[str] = field(default_factory=list)
    property_definitions: List['GraphPropertyDefinition'] = field(default_factory=list)
    dynamic_label_expr: Optional[str] = None
    dynamic_property_expr: Optional[str] = None
    source_node_table: Optional['GraphNodeTableReference'] = None
    destination_node_table: Optional['GraphNodeTableReference'] = None

    _PROTO_CLASS: ClassVar[type] = information_schema_property_graph_pb2.GraphElementTableProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'kind': {
            'proto_field': 'kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Kind',
            'enum_parent_message': 'GraphElementTableProto',
        },
        'base_catalog_name': {
            'proto_field': 'base_catalog_name',
            'is_message': False,
            'is_repeated': False,
        },
        'base_schema_name': {
            'proto_field': 'base_schema_name',
            'is_message': False,
            'is_repeated': False,
        },
        'base_table_name': {
            'proto_field': 'base_table_name',
            'is_message': False,
            'is_repeated': False,
        },
        'key_columns': {
            'proto_field': 'key_columns',
            'is_message': False,
            'is_repeated': True,
        },
        'label_names': {
            'proto_field': 'label_names',
            'is_message': False,
            'is_repeated': True,
        },
        'property_definitions': {
            'proto_field': 'property_definitions',
            'is_message': True,
            'is_repeated': True,
        },
        'dynamic_label_expr': {
            'proto_field': 'dynamic_label_expr',
            'is_message': False,
            'is_repeated': False,
        },
        'dynamic_property_expr': {
            'proto_field': 'dynamic_property_expr',
            'is_message': False,
            'is_repeated': False,
        },
        'source_node_table': {
            'proto_field': 'source_node_table',
            'is_message': True,
            'is_repeated': False,
        },
        'destination_node_table': {
            'proto_field': 'destination_node_table',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class GraphElementTableRef(ProtoModel):
    """Generated model for GraphElementTableRefProto"""

    property_graph: Optional['PropertyGraphRef'] = None
    name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.GraphElementTableRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'property_graph': {
            'proto_field': 'property_graph',
            'is_message': True,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class GraphElementType(ProtoModel):
    """Generated model for GraphElementTypeProto"""

    # Nested Enums
    class ElementKind(IntEnum):
        """
        Auto-generated IntEnum for protobuf ElementKind.
        
        Values are directly compatible with protobuf integer constants.
        """

        KIND_INVALID = public_type_pb2.GraphElementTypeProto.KIND_INVALID  # 0
        KIND_NODE = public_type_pb2.GraphElementTypeProto.KIND_NODE  # 1
        KIND_EDGE = public_type_pb2.GraphElementTypeProto.KIND_EDGE  # 2


    kind: Optional['GraphElementType.ElementKind'] = None
    property_type: List['GraphElementType.PropertyType'] = field(default_factory=list)
    graph_reference: List[str] = field(default_factory=list)
    is_dynamic: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = public_type_pb2.GraphElementTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'kind': {
            'proto_field': 'kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ElementKind',
            'enum_parent_message': 'GraphElementTypeProto',
        },
        'property_type': {
            'proto_field': 'property_type',
            'is_message': True,
            'is_repeated': True,
        },
        'graph_reference': {
            'proto_field': 'graph_reference',
            'is_message': False,
            'is_repeated': True,
        },
        'is_dynamic': {
            'proto_field': 'is_dynamic',
            'is_message': False,
            'is_repeated': False,
        },
    }

    @dataclass
    class PropertyType(ProtoModel):
        """Generated model for PropertyTypeProto"""

        name: Optional[str] = None
        value_type: Optional['Type'] = None

        _PROTO_CLASS: ClassVar[type] = public_type_pb2.GraphElementTypeProto.PropertyTypeProto
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'name': {
                'proto_field': 'name',
                'is_message': False,
                'is_repeated': False,
            },
            'value_type': {
                'proto_field': 'value_type',
                'is_message': True,
                'is_repeated': False,
            },
        }


@dataclass
class GraphNodeTableReference(ProtoModel):
    """Generated model for GraphNodeTableReferenceProto"""

    node_table_name: Optional[str] = None
    edge_table_columns: List[str] = field(default_factory=list)
    node_table_columns: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = information_schema_property_graph_pb2.GraphNodeTableReferenceProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'node_table_name': {
            'proto_field': 'node_table_name',
            'is_message': False,
            'is_repeated': False,
        },
        'edge_table_columns': {
            'proto_field': 'edge_table_columns',
            'is_message': False,
            'is_repeated': True,
        },
        'node_table_columns': {
            'proto_field': 'node_table_columns',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class GraphPathType(ProtoModel):
    """Generated model for GraphPathTypeProto"""

    node_type: Optional['GraphElementType'] = None
    edge_type: Optional['GraphElementType'] = None

    _PROTO_CLASS: ClassVar[type] = public_type_pb2.GraphPathTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'node_type': {
            'proto_field': 'node_type',
            'is_message': True,
            'is_repeated': False,
        },
        'edge_type': {
            'proto_field': 'edge_type',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class GraphPropertyDeclaration(ProtoModel):
    """Generated model for GraphPropertyDeclarationProto"""

    name: Optional[str] = None
    type: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = information_schema_property_graph_pb2.GraphPropertyDeclarationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class GraphPropertyDeclarationRef(ProtoModel):
    """Generated model for GraphPropertyDeclarationRefProto"""

    property_graph: Optional['PropertyGraphRef'] = None
    name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.GraphPropertyDeclarationRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'property_graph': {
            'proto_field': 'property_graph',
            'is_message': True,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class GraphPropertyDefinition(ProtoModel):
    """Generated model for GraphPropertyDefinitionProto"""

    property_declaration_name: Optional[str] = None
    value_expression_sql: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = information_schema_property_graph_pb2.GraphPropertyDefinitionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'property_declaration_name': {
            'proto_field': 'property_declaration_name',
            'is_message': False,
            'is_repeated': False,
        },
        'value_expression_sql': {
            'proto_field': 'value_expression_sql',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class GroupingSetRewriteOptions(ProtoModel):
    """Generated model for GroupingSetRewriteOptions"""

    max_grouping_sets: Optional[int] = None
    max_columns_in_grouping_set: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = public_options_pb2.GroupingSetRewriteOptions
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'max_grouping_sets': {
            'proto_field': 'max_grouping_sets',
            'is_message': False,
            'is_repeated': False,
        },
        'max_columns_in_grouping_set': {
            'proto_field': 'max_columns_in_grouping_set',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class InternalEdits(ProtoModel):
    """Generated model for InternalEdits"""

    text_edits: List['InternalTextEdit'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_internal_fix_suggestion_pb2.InternalEdits
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'text_edits': {
            'proto_field': 'text_edits',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class InternalErrorFixSuggestions(ProtoModel):
    """Generated model for InternalErrorFixSuggestions"""

    fix_suggestions: List['InternalFix'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_internal_fix_suggestion_pb2.InternalErrorFixSuggestions
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'fix_suggestions': {
            'proto_field': 'fix_suggestions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class InternalErrorLocation(ProtoModel):
    """Generated model for InternalErrorLocation"""

    byte_offset: Optional[int] = None
    filename: Optional[str] = None
    error_source: List['ErrorSource'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_internal_error_location_pb2.InternalErrorLocation
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'byte_offset': {
            'proto_field': 'byte_offset',
            'is_message': False,
            'is_repeated': False,
        },
        'filename': {
            'proto_field': 'filename',
            'is_message': False,
            'is_repeated': False,
        },
        'error_source': {
            'proto_field': 'error_source',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class InternalFix(ProtoModel):
    """Generated model for InternalFix"""

    title: Optional[str] = None
    edits: Optional['InternalEdits'] = None

    _PROTO_CLASS: ClassVar[type] = proto_internal_fix_suggestion_pb2.InternalFix
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'title': {
            'proto_field': 'title',
            'is_message': False,
            'is_repeated': False,
        },
        'edits': {
            'proto_field': 'edits',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class InternalFixRange(ProtoModel):
    """Generated model for InternalFixRange"""

    start: Optional['InternalErrorLocation'] = None
    length: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = proto_internal_fix_suggestion_pb2.InternalFixRange
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'start': {
            'proto_field': 'start',
            'is_message': True,
            'is_repeated': False,
        },
        'length': {
            'proto_field': 'length',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class InternalTextEdit(ProtoModel):
    """Generated model for InternalTextEdit"""

    range: Optional['InternalFixRange'] = None
    new_text: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = proto_internal_fix_suggestion_pb2.InternalTextEdit
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'range': {
            'proto_field': 'range',
            'is_message': True,
            'is_repeated': False,
        },
        'new_text': {
            'proto_field': 'new_text',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class KnownErrorEntry(ProtoModel):
    """Generated model for KnownErrorEntry"""

    mode: Optional['KnownErrorMode'] = None
    reason: Optional[str] = None
    label: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = compliance_known_error_pb2.KnownErrorEntry
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'mode': {
            'proto_field': 'mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'KnownErrorMode',
        },
        'reason': {
            'proto_field': 'reason',
            'is_message': False,
            'is_repeated': False,
        },
        'label': {
            'proto_field': 'label',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class KnownErrorFile(ProtoModel):
    """Generated model for KnownErrorFile"""

    contact_email: List[str] = field(default_factory=list)
    known_errors: List['KnownErrorEntry'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = compliance_known_error_pb2.KnownErrorFile
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'contact_email': {
            'proto_field': 'contact_email',
            'is_message': False,
            'is_repeated': True,
        },
        'known_errors': {
            'proto_field': 'known_errors',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class LanguageFeatureOptions(ProtoModel):
    """Generated model for LanguageFeatureOptions"""

    ideally_enabled: Optional[bool] = None
    in_development: Optional[bool] = None
    language_version: Optional['LanguageVersion'] = None

    _PROTO_CLASS: ClassVar[type] = public_options_pb2.LanguageFeatureOptions
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ideally_enabled': {
            'proto_field': 'ideally_enabled',
            'is_message': False,
            'is_repeated': False,
        },
        'in_development': {
            'proto_field': 'in_development',
            'is_message': False,
            'is_repeated': False,
        },
        'language_version': {
            'proto_field': 'language_version',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'LanguageVersion',
        },
    }


@dataclass
class LanguageOptions(ProtoModel):
    """Generated model for LanguageOptionsProto"""

    name_resolution_mode: Optional['NameResolutionMode'] = None
    product_mode: Optional['ProductMode'] = None
    error_on_deprecated_syntax: Optional[bool] = None
    enabled_language_features: List['LanguageFeature'] = field(default_factory=list)
    supported_statement_kinds: List['ResolvedNodeKind'] = field(default_factory=list)
    supported_generic_entity_types: List[str] = field(default_factory=list)
    reserved_keywords: List[str] = field(default_factory=list)
    supported_generic_sub_entity_types: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_options_pb2.LanguageOptionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name_resolution_mode': {
            'proto_field': 'name_resolution_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'NameResolutionMode',
        },
        'product_mode': {
            'proto_field': 'product_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ProductMode',
        },
        'error_on_deprecated_syntax': {
            'proto_field': 'error_on_deprecated_syntax',
            'is_message': False,
            'is_repeated': False,
        },
        'enabled_language_features': {
            'proto_field': 'enabled_language_features',
            'is_message': False,
            'is_repeated': True,
            'is_enum': True,
            'enum_type_name': 'LanguageFeature',
        },
        'supported_statement_kinds': {
            'proto_field': 'supported_statement_kinds',
            'is_message': False,
            'is_repeated': True,
            'is_enum': True,
            'enum_type_name': 'ResolvedNodeKind',
        },
        'supported_generic_entity_types': {
            'proto_field': 'supported_generic_entity_types',
            'is_message': False,
            'is_repeated': True,
        },
        'reserved_keywords': {
            'proto_field': 'reserved_keywords',
            'is_message': False,
            'is_repeated': True,
        },
        'supported_generic_sub_entity_types': {
            'proto_field': 'supported_generic_sub_entity_types',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class LanguageOptionsRequest(ProtoModel):
    """Generated model for LanguageOptionsRequest"""

    maximum_features: Optional[bool] = None
    language_version: Optional['LanguageVersion'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.LanguageOptionsRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'maximum_features': {
            'proto_field': 'maximum_features',
            'is_message': False,
            'is_repeated': False,
        },
        'language_version': {
            'proto_field': 'language_version',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'LanguageVersion',
        },
    }


@dataclass
class MapType(ProtoModel):
    """Generated model for MapTypeProto"""

    key_type: Optional['Type'] = None
    value_type: Optional['Type'] = None

    _PROTO_CLASS: ClassVar[type] = public_type_pb2.MapTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'key_type': {
            'proto_field': 'key_type',
            'is_message': True,
            'is_repeated': False,
        },
        'value_type': {
            'proto_field': 'value_type',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class MatchPartitionResult(ProtoModel):
    """Generated model for MatchPartitionResultProto"""

    add_row: List['MatchResult'] = field(default_factory=list)
    finalize: Optional['MatchResult'] = None

    _PROTO_CLASS: ClassVar[type] = match_recognize_match_test_result_pb2.MatchPartitionResultProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'add_row': {
            'proto_field': 'add_row',
            'is_message': True,
            'is_repeated': True,
        },
        'finalize': {
            'proto_field': 'finalize',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class MatchResult(ProtoModel):
    """Generated model for MatchResultProto"""

    match: List[str] = field(default_factory=list)
    rep_count: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = match_recognize_match_test_result_pb2.MatchResultProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'match': {
            'proto_field': 'match',
            'is_message': False,
            'is_repeated': True,
        },
        'rep_count': {
            'proto_field': 'rep_count',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class MeasureType(ProtoModel):
    """Generated model for MeasureTypeProto"""

    result_type: Optional['Type'] = None

    _PROTO_CLASS: ClassVar[type] = public_type_pb2.MeasureTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'result_type': {
            'proto_field': 'result_type',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ModelRef(ProtoModel):
    """Generated model for ModelRefProto"""

    name: Optional[str] = None
    serialization_id: Optional[int] = None
    full_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.ModelRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'serialization_id': {
            'proto_field': 'serialization_id',
            'is_message': False,
            'is_repeated': False,
        },
        'full_name': {
            'proto_field': 'full_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ModuleOptions(ProtoModel):
    """Generated model for ModuleOptions"""

    global_options: Optional['PerModuleOptions'] = None
    per_module_options: Dict[str, 'PerModuleOptions'] = field(default_factory=dict)

    _PROTO_CLASS: ClassVar[type] = proto_module_options_pb2.ModuleOptions
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'global_options': {
            'proto_field': 'global_options',
            'is_message': True,
            'is_repeated': False,
        },
        'per_module_options': {
            'proto_field': 'per_module_options',
            'is_message': True,
            'is_repeated': True,
        },
    }

    @dataclass
    class PerModuleOptionsEntry(ProtoModel):
        """Generated model for PerModuleOptionsEntry"""

        key: Optional[str] = None
        value: Optional['PerModuleOptions'] = None

        _PROTO_CLASS: ClassVar[type] = proto_module_options_pb2.ModuleOptions.PerModuleOptionsEntry
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'key': {
                'proto_field': 'key',
                'is_message': False,
                'is_repeated': False,
            },
            'value': {
                'proto_field': 'value',
                'is_message': True,
                'is_repeated': False,
            },
        }


@dataclass
class NoiseConfidenceInterval(ProtoModel):
    """Generated model for NoiseConfidenceInterval"""

    lower_bound: Optional[float] = None
    upper_bound: Optional[float] = None
    confidence_level: Optional[float] = None

    _PROTO_CLASS: ClassVar[type] = proto_anon_output_with_report_pb2.NoiseConfidenceInterval
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'lower_bound': {
            'proto_field': 'lower_bound',
            'is_message': False,
            'is_repeated': False,
        },
        'upper_bound': {
            'proto_field': 'upper_bound',
            'is_message': False,
            'is_repeated': False,
        },
        'confidence_level': {
            'proto_field': 'confidence_level',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class NumericTypeParameters(ProtoModel):
    """Generated model for NumericTypeParametersProto"""

    precision: Optional[int] = None
    is_max_precision: Optional[bool] = None
    scale: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = public_type_parameters_pb2.NumericTypeParametersProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'precision': {
            'proto_field': 'precision',
            'is_message': False,
            'is_repeated': False,
        },
        'is_max_precision': {
            'proto_field': 'is_max_precision',
            'is_message': False,
            'is_repeated': False,
        },
        'scale': {
            'proto_field': 'scale',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class OneofDescriptorRef(ProtoModel):
    """Generated model for OneofDescriptorRefProto"""

    containing_proto: Optional['ProtoType'] = None
    index: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.OneofDescriptorRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'containing_proto': {
            'proto_field': 'containing_proto',
            'is_message': True,
            'is_repeated': False,
        },
        'index': {
            'proto_field': 'index',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class OpaqueEnumTypeOptions(ProtoModel):
    """Generated model for OpaqueEnumTypeOptions"""

    sql_opaque_enum_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = public_type_pb2.OpaqueEnumTypeOptions
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql_opaque_enum_name': {
            'proto_field': 'sql_opaque_enum_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class OpaqueEnumValueOptions(ProtoModel):
    """Generated model for OpaqueEnumValueOptions"""

    invalid_enum_value: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = public_type_pb2.OpaqueEnumValueOptions
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'invalid_enum_value': {
            'proto_field': 'invalid_enum_value',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class Parameter(ProtoModel):
    """Generated model for Parameter"""

    name: Optional[str] = None
    value: Optional['Value'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.Parameter
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ParseLocationRange(ProtoModel):
    """Generated model for ParseLocationRangeProto"""

    filename: Optional[str] = None
    start: Optional[int] = None
    end: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = public_parse_location_range_pb2.ParseLocationRangeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'filename': {
            'proto_field': 'filename',
            'is_message': False,
            'is_repeated': False,
        },
        'start': {
            'proto_field': 'start',
            'is_message': False,
            'is_repeated': False,
        },
        'end': {
            'proto_field': 'end',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ParseRequest(ProtoModel):
    """Generated model for ParseRequest"""

    sql_statement: Optional[str] = None
    parse_resume_location: Optional['ParseResumeLocation'] = None
    options: Optional['LanguageOptions'] = None
    allow_script: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.ParseRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql_statement': {
            'proto_field': 'sql_statement',
            'is_message': False,
            'is_repeated': False,
        },
        'parse_resume_location': {
            'proto_field': 'parse_resume_location',
            'is_message': True,
            'is_repeated': False,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
        'allow_script': {
            'proto_field': 'allow_script',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ParseResponse(ProtoModel):
    """Generated model for ParseResponse"""

    parsed_statement: Optional['ASTStatement'] = None
    parsed_script: Optional['ASTScript'] = None
    resume_byte_position: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.ParseResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'parsed_statement': {
            'proto_field': 'parsed_statement',
            'is_message': True,
            'is_repeated': False,
        },
        'parsed_script': {
            'proto_field': 'parsed_script',
            'is_message': True,
            'is_repeated': False,
        },
        'resume_byte_position': {
            'proto_field': 'resume_byte_position',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ParseResumeLocation(ProtoModel):
    """Generated model for ParseResumeLocationProto"""

    filename: Optional[str] = None
    input: Optional[str] = None
    byte_position: Optional[int] = None
    allow_resume: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = public_parse_resume_location_pb2.ParseResumeLocationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'filename': {
            'proto_field': 'filename',
            'is_message': False,
            'is_repeated': False,
        },
        'input': {
            'proto_field': 'input',
            'is_message': False,
            'is_repeated': False,
        },
        'byte_position': {
            'proto_field': 'byte_position',
            'is_message': False,
            'is_repeated': False,
        },
        'allow_resume': {
            'proto_field': 'allow_resume',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ParserErrorContext(ProtoModel):
    """Generated model for ParserErrorContext"""

    text: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = execute_query_execute_query_pb2.ParserErrorContext
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'text': {
            'proto_field': 'text',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class PerModuleOptions(ProtoModel):
    """Generated model for PerModuleOptions"""

    # Nested Enums
    class UdfServerImportMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf UdfServerImportMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        UNKNOWN = proto_module_options_pb2.PerModuleOptions.UNKNOWN  # 0
        SERVER_ADDRESS_FROM_MODULE = proto_module_options_pb2.PerModuleOptions.SERVER_ADDRESS_FROM_MODULE  # 1
        CALLER_PROVIDED = proto_module_options_pb2.PerModuleOptions.CALLER_PROVIDED  # 2
        MANUAL = proto_module_options_pb2.PerModuleOptions.MANUAL  # 3


    udf_server_address: Optional[str] = None
    udf_namespace: Optional[str] = None
    udf_server_import_mode: Optional['PerModuleOptions.UdfServerImportMode'] = None
    udf_scaling_factor: Optional[float] = None

    _PROTO_CLASS: ClassVar[type] = proto_module_options_pb2.PerModuleOptions
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'udf_server_address': {
            'proto_field': 'udf_server_address',
            'is_message': False,
            'is_repeated': False,
        },
        'udf_namespace': {
            'proto_field': 'udf_namespace',
            'is_message': False,
            'is_repeated': False,
        },
        'udf_server_import_mode': {
            'proto_field': 'udf_server_import_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'UdfServerImportMode',
            'enum_parent_message': 'PerModuleOptions',
        },
        'udf_scaling_factor': {
            'proto_field': 'udf_scaling_factor',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class PlaceholderDescriptor(ProtoModel):
    """Generated model for PlaceholderDescriptorProto"""

    is_placeholder: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = proto_placeholder_descriptor_pb2.PlaceholderDescriptorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_placeholder': {
            'proto_field': 'is_placeholder',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class PrepareModifyRequest(ProtoModel):
    """Generated model for PrepareModifyRequest"""

    sql: Optional[str] = None
    options: Optional['AnalyzerOptions'] = None
    descriptor_pool_list: Optional['DescriptorPoolList'] = None
    simple_catalog: Optional['SimpleCatalog'] = None
    registered_catalog_id: Optional[int] = None
    table_content: Dict[str, 'TableContent'] = field(default_factory=dict)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.PrepareModifyRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql': {
            'proto_field': 'sql',
            'is_message': False,
            'is_repeated': False,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
        'descriptor_pool_list': {
            'proto_field': 'descriptor_pool_list',
            'is_message': True,
            'is_repeated': False,
        },
        'simple_catalog': {
            'proto_field': 'simple_catalog',
            'is_message': True,
            'is_repeated': False,
        },
        'registered_catalog_id': {
            'proto_field': 'registered_catalog_id',
            'is_message': False,
            'is_repeated': False,
        },
        'table_content': {
            'proto_field': 'table_content',
            'is_message': True,
            'is_repeated': True,
        },
    }

    @dataclass
    class TableContentEntry(ProtoModel):
        """Generated model for TableContentEntry"""

        key: Optional[str] = None
        value: Optional['TableContent'] = None

        _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.PrepareModifyRequest.TableContentEntry
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'key': {
                'proto_field': 'key',
                'is_message': False,
                'is_repeated': False,
            },
            'value': {
                'proto_field': 'value',
                'is_message': True,
                'is_repeated': False,
            },
        }


@dataclass
class PrepareModifyResponse(ProtoModel):
    """Generated model for PrepareModifyResponse"""

    prepared: Optional['PreparedModifyState'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.PrepareModifyResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'prepared': {
            'proto_field': 'prepared',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class PrepareQueryRequest(ProtoModel):
    """Generated model for PrepareQueryRequest"""

    sql: Optional[str] = None
    options: Optional['AnalyzerOptions'] = None
    descriptor_pool_list: Optional['DescriptorPoolList'] = None
    simple_catalog: Optional['SimpleCatalog'] = None
    registered_catalog_id: Optional[int] = None
    table_content: Dict[str, 'TableContent'] = field(default_factory=dict)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.PrepareQueryRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql': {
            'proto_field': 'sql',
            'is_message': False,
            'is_repeated': False,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
        'descriptor_pool_list': {
            'proto_field': 'descriptor_pool_list',
            'is_message': True,
            'is_repeated': False,
        },
        'simple_catalog': {
            'proto_field': 'simple_catalog',
            'is_message': True,
            'is_repeated': False,
        },
        'registered_catalog_id': {
            'proto_field': 'registered_catalog_id',
            'is_message': False,
            'is_repeated': False,
        },
        'table_content': {
            'proto_field': 'table_content',
            'is_message': True,
            'is_repeated': True,
        },
    }

    @dataclass
    class TableContentEntry(ProtoModel):
        """Generated model for TableContentEntry"""

        key: Optional[str] = None
        value: Optional['TableContent'] = None

        _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.PrepareQueryRequest.TableContentEntry
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'key': {
                'proto_field': 'key',
                'is_message': False,
                'is_repeated': False,
            },
            'value': {
                'proto_field': 'value',
                'is_message': True,
                'is_repeated': False,
            },
        }


@dataclass
class PrepareQueryResponse(ProtoModel):
    """Generated model for PrepareQueryResponse"""

    prepared: Optional['PreparedQueryState'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.PrepareQueryResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'prepared': {
            'proto_field': 'prepared',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class PrepareRequest(ProtoModel):
    """Generated model for PrepareRequest"""

    sql: Optional[str] = None
    options: Optional['AnalyzerOptions'] = None
    descriptor_pool_list: Optional['DescriptorPoolList'] = None
    simple_catalog: Optional['SimpleCatalog'] = None
    registered_catalog_id: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.PrepareRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql': {
            'proto_field': 'sql',
            'is_message': False,
            'is_repeated': False,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
        'descriptor_pool_list': {
            'proto_field': 'descriptor_pool_list',
            'is_message': True,
            'is_repeated': False,
        },
        'simple_catalog': {
            'proto_field': 'simple_catalog',
            'is_message': True,
            'is_repeated': False,
        },
        'registered_catalog_id': {
            'proto_field': 'registered_catalog_id',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class PrepareResponse(ProtoModel):
    """Generated model for PrepareResponse"""

    prepared: Optional['PreparedState'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.PrepareResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'prepared': {
            'proto_field': 'prepared',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class PreparedModifyState(ProtoModel):
    """Generated model for PreparedModifyState"""

    prepared_modify_id: Optional[int] = None
    referenced_parameters: List[str] = field(default_factory=list)
    positional_parameter_count: Optional[int] = None
    descriptor_pool_id_list: Optional['DescriptorPoolIdList'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.PreparedModifyState
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'prepared_modify_id': {
            'proto_field': 'prepared_modify_id',
            'is_message': False,
            'is_repeated': False,
        },
        'referenced_parameters': {
            'proto_field': 'referenced_parameters',
            'is_message': False,
            'is_repeated': True,
        },
        'positional_parameter_count': {
            'proto_field': 'positional_parameter_count',
            'is_message': False,
            'is_repeated': False,
        },
        'descriptor_pool_id_list': {
            'proto_field': 'descriptor_pool_id_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class PreparedQueryState(ProtoModel):
    """Generated model for PreparedQueryState"""

    prepared_query_id: Optional[int] = None
    referenced_parameters: List[str] = field(default_factory=list)
    positional_parameter_count: Optional[int] = None
    columns: List['SimpleColumn'] = field(default_factory=list)
    descriptor_pool_id_list: Optional['DescriptorPoolIdList'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.PreparedQueryState
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'prepared_query_id': {
            'proto_field': 'prepared_query_id',
            'is_message': False,
            'is_repeated': False,
        },
        'referenced_parameters': {
            'proto_field': 'referenced_parameters',
            'is_message': False,
            'is_repeated': True,
        },
        'positional_parameter_count': {
            'proto_field': 'positional_parameter_count',
            'is_message': False,
            'is_repeated': False,
        },
        'columns': {
            'proto_field': 'columns',
            'is_message': True,
            'is_repeated': True,
        },
        'descriptor_pool_id_list': {
            'proto_field': 'descriptor_pool_id_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class PreparedState(ProtoModel):
    """Generated model for PreparedState"""

    prepared_expression_id: Optional[int] = None
    output_type: Optional['Type'] = None
    referenced_columns: List[str] = field(default_factory=list)
    referenced_parameters: List[str] = field(default_factory=list)
    positional_parameter_count: Optional[int] = None
    descriptor_pool_id_list: Optional['DescriptorPoolIdList'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.PreparedState
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'prepared_expression_id': {
            'proto_field': 'prepared_expression_id',
            'is_message': False,
            'is_repeated': False,
        },
        'output_type': {
            'proto_field': 'output_type',
            'is_message': True,
            'is_repeated': False,
        },
        'referenced_columns': {
            'proto_field': 'referenced_columns',
            'is_message': False,
            'is_repeated': True,
        },
        'referenced_parameters': {
            'proto_field': 'referenced_parameters',
            'is_message': False,
            'is_repeated': True,
        },
        'positional_parameter_count': {
            'proto_field': 'positional_parameter_count',
            'is_message': False,
            'is_repeated': False,
        },
        'descriptor_pool_id_list': {
            'proto_field': 'descriptor_pool_id_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class Procedure(ProtoModel):
    """Generated model for ProcedureProto"""

    name_path: List[str] = field(default_factory=list)
    signature: Optional['FunctionSignature'] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.ProcedureProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'signature': {
            'proto_field': 'signature',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ProcedureExtension(ProtoModel):
    """Generated model for ProcedureExtension"""

    _PROTO_CLASS: ClassVar[type] = scripting_procedure_extension_pb2.ProcedureExtension
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ProcedureRef(ProtoModel):
    """Generated model for ProcedureRefProto"""

    name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.ProcedureRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class PropertyGraph(ProtoModel):
    """Generated model for PropertyGraphProto"""

    catalog: Optional[str] = None
    schema: Optional[str] = None
    name: Optional[str] = None
    node_tables: List['GraphElementTable'] = field(default_factory=list)
    edge_tables: List['GraphElementTable'] = field(default_factory=list)
    labels: List['GraphElementLabel'] = field(default_factory=list)
    property_declarations: List['GraphPropertyDeclaration'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = information_schema_property_graph_pb2.PropertyGraphProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'catalog': {
            'proto_field': 'catalog',
            'is_message': False,
            'is_repeated': False,
        },
        'schema': {
            'proto_field': 'schema',
            'is_message': False,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'node_tables': {
            'proto_field': 'node_tables',
            'is_message': True,
            'is_repeated': True,
        },
        'edge_tables': {
            'proto_field': 'edge_tables',
            'is_message': True,
            'is_repeated': True,
        },
        'labels': {
            'proto_field': 'labels',
            'is_message': True,
            'is_repeated': True,
        },
        'property_declarations': {
            'proto_field': 'property_declarations',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class PropertyGraphRef(ProtoModel):
    """Generated model for PropertyGraphRefProto"""

    full_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.PropertyGraphRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'full_name': {
            'proto_field': 'full_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ProtoType(ProtoModel):
    """Generated model for ProtoTypeProto"""

    proto_name: Optional[str] = None
    proto_file_name: Optional[str] = None
    file_descriptor_set_index: Optional[int] = None
    catalog_name_path: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_type_pb2.ProtoTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'proto_name': {
            'proto_field': 'proto_name',
            'is_message': False,
            'is_repeated': False,
        },
        'proto_file_name': {
            'proto_field': 'proto_file_name',
            'is_message': False,
            'is_repeated': False,
        },
        'file_descriptor_set_index': {
            'proto_field': 'file_descriptor_set_index',
            'is_message': False,
            'is_repeated': False,
        },
        'catalog_name_path': {
            'proto_field': 'catalog_name_path',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class RangeSessionizeEnums(ProtoModel):
    """Generated model for RangeSessionizeEnums"""

    # Nested Enums
    class RangeSessionizeMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf RangeSessionizeMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        RANGE_SESSIONIZE_MODE_INVALID = functions_range_sessionize_mode_pb2.RangeSessionizeEnums.RANGE_SESSIONIZE_MODE_INVALID  # 0
        OVERLAPS = functions_range_sessionize_mode_pb2.RangeSessionizeEnums.OVERLAPS  # 1
        MEETS = functions_range_sessionize_mode_pb2.RangeSessionizeEnums.MEETS  # 2


    _PROTO_CLASS: ClassVar[type] = functions_range_sessionize_mode_pb2.RangeSessionizeEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class RangeType(ProtoModel):
    """Generated model for RangeTypeProto"""

    element_type: Optional['Type'] = None

    _PROTO_CLASS: ClassVar[type] = public_type_pb2.RangeTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'element_type': {
            'proto_field': 'element_type',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class RankTypeEnums(ProtoModel):
    """Generated model for RankTypeEnums"""

    # Nested Enums
    class RankType(IntEnum):
        """
        Auto-generated IntEnum for protobuf RankType.
        
        Values are directly compatible with protobuf integer constants.
        """

        RANK_TYPE_UNKNOWN = functions_rank_type_pb2.RankTypeEnums.RANK_TYPE_UNKNOWN  # 0
        FRACTION_LESS_THAN_OR_EQUAL = functions_rank_type_pb2.RankTypeEnums.FRACTION_LESS_THAN_OR_EQUAL  # 1
        MIDPOINT = functions_rank_type_pb2.RankTypeEnums.MIDPOINT  # 2
        FRACTION_LESS_THAN = functions_rank_type_pb2.RankTypeEnums.FRACTION_LESS_THAN  # 3


    _PROTO_CLASS: ClassVar[type] = functions_rank_type_pb2.RankTypeEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class RegisterCatalogRequest(ProtoModel):
    """Generated model for RegisterCatalogRequest"""

    simple_catalog: Optional['SimpleCatalog'] = None
    descriptor_pool_list: Optional['DescriptorPoolList'] = None
    table_content: Dict[str, 'TableContent'] = field(default_factory=dict)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.RegisterCatalogRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'simple_catalog': {
            'proto_field': 'simple_catalog',
            'is_message': True,
            'is_repeated': False,
        },
        'descriptor_pool_list': {
            'proto_field': 'descriptor_pool_list',
            'is_message': True,
            'is_repeated': False,
        },
        'table_content': {
            'proto_field': 'table_content',
            'is_message': True,
            'is_repeated': True,
        },
    }

    @dataclass
    class TableContentEntry(ProtoModel):
        """Generated model for TableContentEntry"""

        key: Optional[str] = None
        value: Optional['TableContent'] = None

        _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.RegisterCatalogRequest.TableContentEntry
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'key': {
                'proto_field': 'key',
                'is_message': False,
                'is_repeated': False,
            },
            'value': {
                'proto_field': 'value',
                'is_message': True,
                'is_repeated': False,
            },
        }


@dataclass
class RegisterResponse(ProtoModel):
    """Generated model for RegisterResponse"""

    registered_id: Optional[int] = None
    descriptor_pool_id_list: Optional['DescriptorPoolIdList'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.RegisterResponse
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'registered_id': {
            'proto_field': 'registered_id',
            'is_message': False,
            'is_repeated': False,
        },
        'descriptor_pool_id_list': {
            'proto_field': 'descriptor_pool_id_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedASTRewriteOptions(ProtoModel):
    """Generated model for ResolvedASTRewriteOptions"""

    default_enabled: Optional[bool] = None
    in_development: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = public_options_pb2.ResolvedASTRewriteOptions
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'default_enabled': {
            'proto_field': 'default_enabled',
            'is_message': False,
            'is_repeated': False,
        },
        'in_development': {
            'proto_field': 'in_development',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAggregateHavingModifierEnums(ProtoModel):
    """Generated model for ResolvedAggregateHavingModifierEnums"""

    # Nested Enums
    class HavingModifierKind(IntEnum):
        """
        Auto-generated IntEnum for protobuf HavingModifierKind.
        
        Values are directly compatible with protobuf integer constants.
        """

        INVALID = resolved_ast_resolved_ast_enums_pb2.ResolvedAggregateHavingModifierEnums.INVALID  # 0
        MAX = resolved_ast_resolved_ast_enums_pb2.ResolvedAggregateHavingModifierEnums.MAX  # 1
        MIN = resolved_ast_resolved_ast_enums_pb2.ResolvedAggregateHavingModifierEnums.MIN  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedAggregateHavingModifierEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterIndexStmtEnums(ProtoModel):
    """Generated model for ResolvedAlterIndexStmtEnums"""

    # Nested Enums
    class AlterIndexType(IntEnum):
        """
        Auto-generated IntEnum for protobuf AlterIndexType.
        
        Values are directly compatible with protobuf integer constants.
        """

        INDEX_DEFAULT = resolved_ast_resolved_ast_enums_pb2.ResolvedAlterIndexStmtEnums.INDEX_DEFAULT  # 0
        INDEX_SEARCH = resolved_ast_resolved_ast_enums_pb2.ResolvedAlterIndexStmtEnums.INDEX_SEARCH  # 1
        INDEX_VECTOR = resolved_ast_resolved_ast_enums_pb2.ResolvedAlterIndexStmtEnums.INDEX_VECTOR  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedAlterIndexStmtEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedArgumentDefEnums(ProtoModel):
    """Generated model for ResolvedArgumentDefEnums"""

    # Nested Enums
    class ArgumentKind(IntEnum):
        """
        Auto-generated IntEnum for protobuf ArgumentKind.
        
        Values are directly compatible with protobuf integer constants.
        """

        SCALAR = resolved_ast_resolved_ast_enums_pb2.ResolvedArgumentDefEnums.SCALAR  # 0
        AGGREGATE = resolved_ast_resolved_ast_enums_pb2.ResolvedArgumentDefEnums.AGGREGATE  # 1
        NOT_AGGREGATE = resolved_ast_resolved_ast_enums_pb2.ResolvedArgumentDefEnums.NOT_AGGREGATE  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedArgumentDefEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAuxLoadDataStmtEnums(ProtoModel):
    """Generated model for ResolvedAuxLoadDataStmtEnums"""

    # Nested Enums
    class InsertionMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf InsertionMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        NONE = resolved_ast_resolved_ast_enums_pb2.ResolvedAuxLoadDataStmtEnums.NONE  # 0
        APPEND = resolved_ast_resolved_ast_enums_pb2.ResolvedAuxLoadDataStmtEnums.APPEND  # 1
        OVERWRITE = resolved_ast_resolved_ast_enums_pb2.ResolvedAuxLoadDataStmtEnums.OVERWRITE  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedAuxLoadDataStmtEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedBeginStmtEnums(ProtoModel):
    """Generated model for ResolvedBeginStmtEnums"""

    # Nested Enums
    class ReadWriteMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf ReadWriteMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        MODE_UNSPECIFIED = resolved_ast_resolved_ast_enums_pb2.ResolvedBeginStmtEnums.MODE_UNSPECIFIED  # 0
        MODE_READ_ONLY = resolved_ast_resolved_ast_enums_pb2.ResolvedBeginStmtEnums.MODE_READ_ONLY  # 1
        MODE_READ_WRITE = resolved_ast_resolved_ast_enums_pb2.ResolvedBeginStmtEnums.MODE_READ_WRITE  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedBeginStmtEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedCollation(ProtoModel):
    """Generated model for ResolvedCollationProto"""

    collation_name: Optional[str] = None
    child_list: List['ResolvedCollation'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.ResolvedCollationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'collation_name': {
            'proto_field': 'collation_name',
            'is_message': False,
            'is_repeated': False,
        },
        'child_list': {
            'proto_field': 'child_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedColumn(ProtoModel):
    """Generated model for ResolvedColumnProto"""

    column_id: Optional[int] = None
    table_name: Optional[str] = None
    name: Optional[str] = None
    type: Optional['Type'] = None
    annotation_map: Optional['AnnotationMap'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.ResolvedColumnProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_id': {
            'proto_field': 'column_id',
            'is_message': False,
            'is_repeated': False,
        },
        'table_name': {
            'proto_field': 'table_name',
            'is_message': False,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'annotation_map': {
            'proto_field': 'annotation_map',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCreateStatementEnums(ProtoModel):
    """Generated model for ResolvedCreateStatementEnums"""

    # Nested Enums
    class CreateScope(IntEnum):
        """
        Auto-generated IntEnum for protobuf CreateScope.
        
        Values are directly compatible with protobuf integer constants.
        """

        CREATE_DEFAULT_SCOPE = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.CREATE_DEFAULT_SCOPE  # 0
        CREATE_PRIVATE = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.CREATE_PRIVATE  # 1
        CREATE_PUBLIC = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.CREATE_PUBLIC  # 2
        CREATE_TEMP = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.CREATE_TEMP  # 3

    class CreateMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf CreateMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        CREATE_DEFAULT = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.CREATE_DEFAULT  # 0
        CREATE_OR_REPLACE = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.CREATE_OR_REPLACE  # 1
        CREATE_IF_NOT_EXISTS = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.CREATE_IF_NOT_EXISTS  # 2

    class SqlSecurity(IntEnum):
        """
        Auto-generated IntEnum for protobuf SqlSecurity.
        
        Values are directly compatible with protobuf integer constants.
        """

        SQL_SECURITY_UNSPECIFIED = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.SQL_SECURITY_UNSPECIFIED  # 0
        SQL_SECURITY_DEFINER = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.SQL_SECURITY_DEFINER  # 1
        SQL_SECURITY_INVOKER = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.SQL_SECURITY_INVOKER  # 2

    class DeterminismLevel(IntEnum):
        """
        Auto-generated IntEnum for protobuf DeterminismLevel.
        
        Values are directly compatible with protobuf integer constants.
        """

        DETERMINISM_UNSPECIFIED = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.DETERMINISM_UNSPECIFIED  # 0
        DETERMINISM_DETERMINISTIC = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.DETERMINISM_DETERMINISTIC  # 1
        DETERMINISM_NOT_DETERMINISTIC = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.DETERMINISM_NOT_DETERMINISTIC  # 2
        DETERMINISM_IMMUTABLE = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.DETERMINISM_IMMUTABLE  # 3
        DETERMINISM_STABLE = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.DETERMINISM_STABLE  # 4
        DETERMINISM_VOLATILE = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums.DETERMINISM_VOLATILE  # 5


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedCreateStatementEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedDropIndexStmtEnums(ProtoModel):
    """Generated model for ResolvedDropIndexStmtEnums"""

    # Nested Enums
    class IndexType(IntEnum):
        """
        Auto-generated IntEnum for protobuf IndexType.
        
        Values are directly compatible with protobuf integer constants.
        """

        INDEX_DEFAULT = resolved_ast_resolved_ast_enums_pb2.ResolvedDropIndexStmtEnums.INDEX_DEFAULT  # 0
        INDEX_SEARCH = resolved_ast_resolved_ast_enums_pb2.ResolvedDropIndexStmtEnums.INDEX_SEARCH  # 1
        INDEX_VECTOR = resolved_ast_resolved_ast_enums_pb2.ResolvedDropIndexStmtEnums.INDEX_VECTOR  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedDropIndexStmtEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedDropStmtEnums(ProtoModel):
    """Generated model for ResolvedDropStmtEnums"""

    # Nested Enums
    class DropMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf DropMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        DROP_MODE_UNSPECIFIED = resolved_ast_resolved_ast_enums_pb2.ResolvedDropStmtEnums.DROP_MODE_UNSPECIFIED  # 0
        RESTRICT = resolved_ast_resolved_ast_enums_pb2.ResolvedDropStmtEnums.RESTRICT  # 1
        CASCADE = resolved_ast_resolved_ast_enums_pb2.ResolvedDropStmtEnums.CASCADE  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedDropStmtEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedForeignKeyEnums(ProtoModel):
    """Generated model for ResolvedForeignKeyEnums"""

    # Nested Enums
    class MatchMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf MatchMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        SIMPLE = resolved_ast_resolved_ast_enums_pb2.ResolvedForeignKeyEnums.SIMPLE  # 0
        FULL = resolved_ast_resolved_ast_enums_pb2.ResolvedForeignKeyEnums.FULL  # 1
        NOT_DISTINCT = resolved_ast_resolved_ast_enums_pb2.ResolvedForeignKeyEnums.NOT_DISTINCT  # 2

    class ActionOperation(IntEnum):
        """
        Auto-generated IntEnum for protobuf ActionOperation.
        
        Values are directly compatible with protobuf integer constants.
        """

        NO_ACTION = resolved_ast_resolved_ast_enums_pb2.ResolvedForeignKeyEnums.NO_ACTION  # 0
        RESTRICT = resolved_ast_resolved_ast_enums_pb2.ResolvedForeignKeyEnums.RESTRICT  # 1
        CASCADE = resolved_ast_resolved_ast_enums_pb2.ResolvedForeignKeyEnums.CASCADE  # 2
        SET_NULL = resolved_ast_resolved_ast_enums_pb2.ResolvedForeignKeyEnums.SET_NULL  # 3


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedForeignKeyEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedFunctionCallBaseEnums(ProtoModel):
    """Generated model for ResolvedFunctionCallBaseEnums"""

    # Nested Enums
    class ErrorMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf ErrorMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        DEFAULT_ERROR_MODE = resolved_ast_resolved_ast_enums_pb2.ResolvedFunctionCallBaseEnums.DEFAULT_ERROR_MODE  # 0
        SAFE_ERROR_MODE = resolved_ast_resolved_ast_enums_pb2.ResolvedFunctionCallBaseEnums.SAFE_ERROR_MODE  # 1


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedFunctionCallBaseEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedFunctionCallInfo(ProtoModel):
    """Generated model for ResolvedFunctionCallInfoProto"""

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.ResolvedFunctionCallInfoProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedGeneratedColumnInfoEnums(ProtoModel):
    """Generated model for ResolvedGeneratedColumnInfoEnums"""

    # Nested Enums
    class StoredMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf StoredMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        NON_STORED = resolved_ast_resolved_ast_enums_pb2.ResolvedGeneratedColumnInfoEnums.NON_STORED  # 0
        STORED = resolved_ast_resolved_ast_enums_pb2.ResolvedGeneratedColumnInfoEnums.STORED  # 1
        STORED_VOLATILE = resolved_ast_resolved_ast_enums_pb2.ResolvedGeneratedColumnInfoEnums.STORED_VOLATILE  # 2

    class GeneratedMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf GeneratedMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        ALWAYS = resolved_ast_resolved_ast_enums_pb2.ResolvedGeneratedColumnInfoEnums.ALWAYS  # 0
        BY_DEFAULT = resolved_ast_resolved_ast_enums_pb2.ResolvedGeneratedColumnInfoEnums.BY_DEFAULT  # 1


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedGeneratedColumnInfoEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedGraphEdgeScanEnums(ProtoModel):
    """Generated model for ResolvedGraphEdgeScanEnums"""

    # Nested Enums
    class EdgeOrientation(IntEnum):
        """
        Auto-generated IntEnum for protobuf EdgeOrientation.
        
        Values are directly compatible with protobuf integer constants.
        """

        ANY = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphEdgeScanEnums.ANY  # 0
        LEFT = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphEdgeScanEnums.LEFT  # 1
        RIGHT = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphEdgeScanEnums.RIGHT  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphEdgeScanEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedGraphLabelNaryExprEnums(ProtoModel):
    """Generated model for ResolvedGraphLabelNaryExprEnums"""

    # Nested Enums
    class GraphLogicalOpType(IntEnum):
        """
        Auto-generated IntEnum for protobuf GraphLogicalOpType.
        
        Values are directly compatible with protobuf integer constants.
        """

        OPERATION_TYPE_UNSPECIFIED = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphLabelNaryExprEnums.OPERATION_TYPE_UNSPECIFIED  # 0
        NOT = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphLabelNaryExprEnums.NOT  # 1
        AND = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphLabelNaryExprEnums.AND  # 2
        OR = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphLabelNaryExprEnums.OR  # 3


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphLabelNaryExprEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedGraphPathModeEnums(ProtoModel):
    """Generated model for ResolvedGraphPathModeEnums"""

    # Nested Enums
    class PathMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf PathMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        PATH_MODE_UNSPECIFIED = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphPathModeEnums.PATH_MODE_UNSPECIFIED  # 0
        WALK = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphPathModeEnums.WALK  # 1
        TRAIL = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphPathModeEnums.TRAIL  # 2
        SIMPLE = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphPathModeEnums.SIMPLE  # 3
        ACYCLIC = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphPathModeEnums.ACYCLIC  # 4


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphPathModeEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedGraphPathSearchPrefixEnums(ProtoModel):
    """Generated model for ResolvedGraphPathSearchPrefixEnums"""

    # Nested Enums
    class PathSearchPrefixType(IntEnum):
        """
        Auto-generated IntEnum for protobuf PathSearchPrefixType.
        
        Values are directly compatible with protobuf integer constants.
        """

        PATH_SEARCH_PREFIX_TYPE_UNSPECIFIED = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphPathSearchPrefixEnums.PATH_SEARCH_PREFIX_TYPE_UNSPECIFIED  # 0
        ANY = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphPathSearchPrefixEnums.ANY  # 1
        SHORTEST = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphPathSearchPrefixEnums.SHORTEST  # 2
        CHEAPEST = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphPathSearchPrefixEnums.CHEAPEST  # 3


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedGraphPathSearchPrefixEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedImportStmtEnums(ProtoModel):
    """Generated model for ResolvedImportStmtEnums"""

    # Nested Enums
    class ImportKind(IntEnum):
        """
        Auto-generated IntEnum for protobuf ImportKind.
        
        Values are directly compatible with protobuf integer constants.
        """

        __ImportKind__switch_must_have_a_default__ = resolved_ast_resolved_ast_enums_pb2.ResolvedImportStmtEnums.__ImportKind__switch_must_have_a_default__  # -1
        MODULE = resolved_ast_resolved_ast_enums_pb2.ResolvedImportStmtEnums.MODULE  # 0
        PROTO = resolved_ast_resolved_ast_enums_pb2.ResolvedImportStmtEnums.PROTO  # 1


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedImportStmtEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedInsertStmtEnums(ProtoModel):
    """Generated model for ResolvedInsertStmtEnums"""

    # Nested Enums
    class InsertMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf InsertMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        OR_ERROR = resolved_ast_resolved_ast_enums_pb2.ResolvedInsertStmtEnums.OR_ERROR  # 0
        OR_IGNORE = resolved_ast_resolved_ast_enums_pb2.ResolvedInsertStmtEnums.OR_IGNORE  # 1
        OR_REPLACE = resolved_ast_resolved_ast_enums_pb2.ResolvedInsertStmtEnums.OR_REPLACE  # 2
        OR_UPDATE = resolved_ast_resolved_ast_enums_pb2.ResolvedInsertStmtEnums.OR_UPDATE  # 3


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedInsertStmtEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedJoinScanEnums(ProtoModel):
    """Generated model for ResolvedJoinScanEnums"""

    # Nested Enums
    class JoinType(IntEnum):
        """
        Auto-generated IntEnum for protobuf JoinType.
        
        Values are directly compatible with protobuf integer constants.
        """

        INNER = resolved_ast_resolved_ast_enums_pb2.ResolvedJoinScanEnums.INNER  # 0
        LEFT = resolved_ast_resolved_ast_enums_pb2.ResolvedJoinScanEnums.LEFT  # 1
        RIGHT = resolved_ast_resolved_ast_enums_pb2.ResolvedJoinScanEnums.RIGHT  # 2
        FULL = resolved_ast_resolved_ast_enums_pb2.ResolvedJoinScanEnums.FULL  # 3


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedJoinScanEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedLockModeEnums(ProtoModel):
    """Generated model for ResolvedLockModeEnums"""

    # Nested Enums
    class LockStrengthType(IntEnum):
        """
        Auto-generated IntEnum for protobuf LockStrengthType.
        
        Values are directly compatible with protobuf integer constants.
        """

        UPDATE = resolved_ast_resolved_ast_enums_pb2.ResolvedLockModeEnums.UPDATE  # 0


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedLockModeEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedMatchRecognizePatternAnchorEnums(ProtoModel):
    """Generated model for ResolvedMatchRecognizePatternAnchorEnums"""

    # Nested Enums
    class Mode(IntEnum):
        """
        Auto-generated IntEnum for protobuf Mode.
        
        Values are directly compatible with protobuf integer constants.
        """

        MODE_UNSPECIFIED = resolved_ast_resolved_ast_enums_pb2.ResolvedMatchRecognizePatternAnchorEnums.MODE_UNSPECIFIED  # 0
        START = resolved_ast_resolved_ast_enums_pb2.ResolvedMatchRecognizePatternAnchorEnums.START  # 1
        END = resolved_ast_resolved_ast_enums_pb2.ResolvedMatchRecognizePatternAnchorEnums.END  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedMatchRecognizePatternAnchorEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedMatchRecognizePatternOperationEnums(ProtoModel):
    """Generated model for ResolvedMatchRecognizePatternOperationEnums"""

    # Nested Enums
    class MatchRecognizePatternOperationType(IntEnum):
        """
        Auto-generated IntEnum for protobuf MatchRecognizePatternOperationType.
        
        Values are directly compatible with protobuf integer constants.
        """

        OPERATION_TYPE_UNSPECIFIED = resolved_ast_resolved_ast_enums_pb2.ResolvedMatchRecognizePatternOperationEnums.OPERATION_TYPE_UNSPECIFIED  # 0
        CONCAT = resolved_ast_resolved_ast_enums_pb2.ResolvedMatchRecognizePatternOperationEnums.CONCAT  # 1
        ALTERNATE = resolved_ast_resolved_ast_enums_pb2.ResolvedMatchRecognizePatternOperationEnums.ALTERNATE  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedMatchRecognizePatternOperationEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedMatchRecognizeScanEnums(ProtoModel):
    """Generated model for ResolvedMatchRecognizeScanEnums"""

    # Nested Enums
    class AfterMatchSkipMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf AfterMatchSkipMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        AFTER_MATCH_SKIP_MODE_UNSPECIFIED = resolved_ast_resolved_ast_enums_pb2.ResolvedMatchRecognizeScanEnums.AFTER_MATCH_SKIP_MODE_UNSPECIFIED  # 0
        END_OF_MATCH = resolved_ast_resolved_ast_enums_pb2.ResolvedMatchRecognizeScanEnums.END_OF_MATCH  # 1
        NEXT_ROW = resolved_ast_resolved_ast_enums_pb2.ResolvedMatchRecognizeScanEnums.NEXT_ROW  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedMatchRecognizeScanEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedMergeWhenEnums(ProtoModel):
    """Generated model for ResolvedMergeWhenEnums"""

    # Nested Enums
    class MatchType(IntEnum):
        """
        Auto-generated IntEnum for protobuf MatchType.
        
        Values are directly compatible with protobuf integer constants.
        """

        MATCHED = resolved_ast_resolved_ast_enums_pb2.ResolvedMergeWhenEnums.MATCHED  # 0
        NOT_MATCHED_BY_SOURCE = resolved_ast_resolved_ast_enums_pb2.ResolvedMergeWhenEnums.NOT_MATCHED_BY_SOURCE  # 1
        NOT_MATCHED_BY_TARGET = resolved_ast_resolved_ast_enums_pb2.ResolvedMergeWhenEnums.NOT_MATCHED_BY_TARGET  # 2

    class ActionType(IntEnum):
        """
        Auto-generated IntEnum for protobuf ActionType.
        
        Values are directly compatible with protobuf integer constants.
        """

        INSERT = resolved_ast_resolved_ast_enums_pb2.ResolvedMergeWhenEnums.INSERT  # 0
        UPDATE = resolved_ast_resolved_ast_enums_pb2.ResolvedMergeWhenEnums.UPDATE  # 1
        DELETE = resolved_ast_resolved_ast_enums_pb2.ResolvedMergeWhenEnums.DELETE  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedMergeWhenEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedNode(ProtoModel):
    """Generated model for ResolvedNodeProto"""

    parse_location_range: Optional['ParseLocationRange'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.ResolvedNodeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'parse_location_range': {
            'proto_field': 'parse_location_range',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedNonScalarFunctionCallBaseEnums(ProtoModel):
    """Generated model for ResolvedNonScalarFunctionCallBaseEnums"""

    # Nested Enums
    class NullHandlingModifier(IntEnum):
        """
        Auto-generated IntEnum for protobuf NullHandlingModifier.
        
        Values are directly compatible with protobuf integer constants.
        """

        DEFAULT_NULL_HANDLING = resolved_ast_resolved_ast_enums_pb2.ResolvedNonScalarFunctionCallBaseEnums.DEFAULT_NULL_HANDLING  # 0
        IGNORE_NULLS = resolved_ast_resolved_ast_enums_pb2.ResolvedNonScalarFunctionCallBaseEnums.IGNORE_NULLS  # 1
        RESPECT_NULLS = resolved_ast_resolved_ast_enums_pb2.ResolvedNonScalarFunctionCallBaseEnums.RESPECT_NULLS  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedNonScalarFunctionCallBaseEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedOnConflictClauseEnums(ProtoModel):
    """Generated model for ResolvedOnConflictClauseEnums"""

    # Nested Enums
    class ConflictAction(IntEnum):
        """
        Auto-generated IntEnum for protobuf ConflictAction.
        
        Values are directly compatible with protobuf integer constants.
        """

        NOTHING = resolved_ast_resolved_ast_enums_pb2.ResolvedOnConflictClauseEnums.NOTHING  # 0
        UPDATE = resolved_ast_resolved_ast_enums_pb2.ResolvedOnConflictClauseEnums.UPDATE  # 1


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedOnConflictClauseEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedOptionEnums(ProtoModel):
    """Generated model for ResolvedOptionEnums"""

    # Nested Enums
    class AssignmentOp(IntEnum):
        """
        Auto-generated IntEnum for protobuf AssignmentOp.
        
        Values are directly compatible with protobuf integer constants.
        """

        DEFAULT_ASSIGN = resolved_ast_resolved_ast_enums_pb2.ResolvedOptionEnums.DEFAULT_ASSIGN  # 0
        ADD_ASSIGN = resolved_ast_resolved_ast_enums_pb2.ResolvedOptionEnums.ADD_ASSIGN  # 1
        SUB_ASSIGN = resolved_ast_resolved_ast_enums_pb2.ResolvedOptionEnums.SUB_ASSIGN  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedOptionEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedOrderByItemEnums(ProtoModel):
    """Generated model for ResolvedOrderByItemEnums"""

    # Nested Enums
    class NullOrderMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf NullOrderMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        ORDER_UNSPECIFIED = resolved_ast_resolved_ast_enums_pb2.ResolvedOrderByItemEnums.ORDER_UNSPECIFIED  # 0
        NULLS_FIRST = resolved_ast_resolved_ast_enums_pb2.ResolvedOrderByItemEnums.NULLS_FIRST  # 1
        NULLS_LAST = resolved_ast_resolved_ast_enums_pb2.ResolvedOrderByItemEnums.NULLS_LAST  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedOrderByItemEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedRecursiveScanEnums(ProtoModel):
    """Generated model for ResolvedRecursiveScanEnums"""

    # Nested Enums
    class RecursiveSetOperationType(IntEnum):
        """
        Auto-generated IntEnum for protobuf RecursiveSetOperationType.
        
        Values are directly compatible with protobuf integer constants.
        """

        UNION_ALL = resolved_ast_resolved_ast_enums_pb2.ResolvedRecursiveScanEnums.UNION_ALL  # 0
        UNION_DISTINCT = resolved_ast_resolved_ast_enums_pb2.ResolvedRecursiveScanEnums.UNION_DISTINCT  # 1


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedRecursiveScanEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedSampleScanEnums(ProtoModel):
    """Generated model for ResolvedSampleScanEnums"""

    # Nested Enums
    class SampleUnit(IntEnum):
        """
        Auto-generated IntEnum for protobuf SampleUnit.
        
        Values are directly compatible with protobuf integer constants.
        """

        ROWS = resolved_ast_resolved_ast_enums_pb2.ResolvedSampleScanEnums.ROWS  # 0
        PERCENT = resolved_ast_resolved_ast_enums_pb2.ResolvedSampleScanEnums.PERCENT  # 1


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedSampleScanEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedSetOperationScanEnums(ProtoModel):
    """Generated model for ResolvedSetOperationScanEnums"""

    # Nested Enums
    class SetOperationType(IntEnum):
        """
        Auto-generated IntEnum for protobuf SetOperationType.
        
        Values are directly compatible with protobuf integer constants.
        """

        UNION_ALL = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums.UNION_ALL  # 0
        UNION_DISTINCT = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums.UNION_DISTINCT  # 1
        INTERSECT_ALL = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums.INTERSECT_ALL  # 2
        INTERSECT_DISTINCT = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums.INTERSECT_DISTINCT  # 3
        EXCEPT_ALL = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums.EXCEPT_ALL  # 4
        EXCEPT_DISTINCT = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums.EXCEPT_DISTINCT  # 5

    class SetOperationColumnMatchMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf SetOperationColumnMatchMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        BY_POSITION = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums.BY_POSITION  # 0
        CORRESPONDING = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums.CORRESPONDING  # 1
        CORRESPONDING_BY = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums.CORRESPONDING_BY  # 2

    class SetOperationColumnPropagationMode(IntEnum):
        """
        Auto-generated IntEnum for protobuf SetOperationColumnPropagationMode.
        
        Values are directly compatible with protobuf integer constants.
        """

        STRICT = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums.STRICT  # 0
        INNER = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums.INNER  # 1
        LEFT = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums.LEFT  # 2
        FULL = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums.FULL  # 3


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedSetOperationScanEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedStatementEnums(ProtoModel):
    """Generated model for ResolvedStatementEnums"""

    # Nested Enums
    class ObjectAccess(IntEnum):
        """
        Auto-generated IntEnum for protobuf ObjectAccess.
        
        Values are directly compatible with protobuf integer constants.
        """

        NONE = resolved_ast_resolved_ast_enums_pb2.ResolvedStatementEnums.NONE  # 0
        READ = resolved_ast_resolved_ast_enums_pb2.ResolvedStatementEnums.READ  # 1
        WRITE = resolved_ast_resolved_ast_enums_pb2.ResolvedStatementEnums.WRITE  # 2
        READ_WRITE = resolved_ast_resolved_ast_enums_pb2.ResolvedStatementEnums.READ_WRITE  # 3


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedStatementEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedSubqueryExprEnums(ProtoModel):
    """Generated model for ResolvedSubqueryExprEnums"""

    # Nested Enums
    class SubqueryType(IntEnum):
        """
        Auto-generated IntEnum for protobuf SubqueryType.
        
        Values are directly compatible with protobuf integer constants.
        """

        SCALAR = resolved_ast_resolved_ast_enums_pb2.ResolvedSubqueryExprEnums.SCALAR  # 0
        ARRAY = resolved_ast_resolved_ast_enums_pb2.ResolvedSubqueryExprEnums.ARRAY  # 1
        EXISTS = resolved_ast_resolved_ast_enums_pb2.ResolvedSubqueryExprEnums.EXISTS  # 2
        IN = resolved_ast_resolved_ast_enums_pb2.ResolvedSubqueryExprEnums.IN  # 3
        LIKE_ANY = resolved_ast_resolved_ast_enums_pb2.ResolvedSubqueryExprEnums.LIKE_ANY  # 4
        LIKE_ALL = resolved_ast_resolved_ast_enums_pb2.ResolvedSubqueryExprEnums.LIKE_ALL  # 5
        NOT_LIKE_ANY = resolved_ast_resolved_ast_enums_pb2.ResolvedSubqueryExprEnums.NOT_LIKE_ANY  # 6
        NOT_LIKE_ALL = resolved_ast_resolved_ast_enums_pb2.ResolvedSubqueryExprEnums.NOT_LIKE_ALL  # 7


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedSubqueryExprEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedUpdateFieldItemEnums(ProtoModel):
    """Generated model for ResolvedUpdateFieldItemEnums"""

    # Nested Enums
    class Operation(IntEnum):
        """
        Auto-generated IntEnum for protobuf Operation.
        
        Values are directly compatible with protobuf integer constants.
        """

        UPDATE_SINGLE = resolved_ast_resolved_ast_enums_pb2.ResolvedUpdateFieldItemEnums.UPDATE_SINGLE  # 0
        UPDATE_MANY = resolved_ast_resolved_ast_enums_pb2.ResolvedUpdateFieldItemEnums.UPDATE_MANY  # 1
        UPDATE_SINGLE_NO_CREATION = resolved_ast_resolved_ast_enums_pb2.ResolvedUpdateFieldItemEnums.UPDATE_SINGLE_NO_CREATION  # 2


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedUpdateFieldItemEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedWindowFrameEnums(ProtoModel):
    """Generated model for ResolvedWindowFrameEnums"""

    # Nested Enums
    class FrameUnit(IntEnum):
        """
        Auto-generated IntEnum for protobuf FrameUnit.
        
        Values are directly compatible with protobuf integer constants.
        """

        ROWS = resolved_ast_resolved_ast_enums_pb2.ResolvedWindowFrameEnums.ROWS  # 0
        RANGE = resolved_ast_resolved_ast_enums_pb2.ResolvedWindowFrameEnums.RANGE  # 1


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedWindowFrameEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedWindowFrameExprEnums(ProtoModel):
    """Generated model for ResolvedWindowFrameExprEnums"""

    # Nested Enums
    class BoundaryType(IntEnum):
        """
        Auto-generated IntEnum for protobuf BoundaryType.
        
        Values are directly compatible with protobuf integer constants.
        """

        UNBOUNDED_PRECEDING = resolved_ast_resolved_ast_enums_pb2.ResolvedWindowFrameExprEnums.UNBOUNDED_PRECEDING  # 0
        OFFSET_PRECEDING = resolved_ast_resolved_ast_enums_pb2.ResolvedWindowFrameExprEnums.OFFSET_PRECEDING  # 1
        CURRENT_ROW = resolved_ast_resolved_ast_enums_pb2.ResolvedWindowFrameExprEnums.CURRENT_ROW  # 2
        OFFSET_FOLLOWING = resolved_ast_resolved_ast_enums_pb2.ResolvedWindowFrameExprEnums.OFFSET_FOLLOWING  # 3
        UNBOUNDED_FOLLOWING = resolved_ast_resolved_ast_enums_pb2.ResolvedWindowFrameExprEnums.UNBOUNDED_FOLLOWING  # 4


    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_enums_pb2.ResolvedWindowFrameExprEnums
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResultTable(ProtoModel):
    """Generated model for ResultTable"""

    column: List['Column'] = field(default_factory=list)
    pseudo_column: List['Column'] = field(default_factory=list)
    table_alias: List['TableAlias'] = field(default_factory=list)
    common_table_expression: List['TableAlias'] = field(default_factory=list)
    is_value_table: Optional[bool] = None
    is_ordered: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = common_reflection_pb2.ResultTable
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': True,
        },
        'pseudo_column': {
            'proto_field': 'pseudo_column',
            'is_message': True,
            'is_repeated': True,
        },
        'table_alias': {
            'proto_field': 'table_alias',
            'is_message': True,
            'is_repeated': True,
        },
        'common_table_expression': {
            'proto_field': 'common_table_expression',
            'is_message': True,
            'is_repeated': True,
        },
        'is_value_table': {
            'proto_field': 'is_value_table',
            'is_message': False,
            'is_repeated': False,
        },
        'is_ordered': {
            'proto_field': 'is_ordered',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class RewriteOptions(ProtoModel):
    """Generated model for RewriteOptions"""

    grouping_set_rewrite_options: Optional['GroupingSetRewriteOptions'] = None

    _PROTO_CLASS: ClassVar[type] = public_options_pb2.RewriteOptions
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'grouping_set_rewrite_options': {
            'proto_field': 'grouping_set_rewrite_options',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ScriptException(ProtoModel):
    """Generated model for ScriptException"""

    message: Optional[str] = None
    internal: Optional['ScriptException.Internal'] = None

    _PROTO_CLASS: ClassVar[type] = proto_script_exception_pb2.ScriptException
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'message': {
            'proto_field': 'message',
            'is_message': False,
            'is_repeated': False,
        },
        'internal': {
            'proto_field': 'internal',
            'is_message': True,
            'is_repeated': False,
        },
    }

    @dataclass
    class Internal(ProtoModel):
        """Generated model for Internal"""

        statement_text: Optional[str] = None
        stack_trace: List['ScriptException.StackTraceFrame'] = field(default_factory=list)

        _PROTO_CLASS: ClassVar[type] = proto_script_exception_pb2.ScriptException.Internal
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'statement_text': {
                'proto_field': 'statement_text',
                'is_message': False,
                'is_repeated': False,
            },
            'stack_trace': {
                'proto_field': 'stack_trace',
                'is_message': True,
                'is_repeated': True,
            },
        }

    @dataclass
    class StackTraceFrame(ProtoModel):
        """Generated model for StackTraceFrame"""

        line: Optional[int] = None
        column: Optional[int] = None
        filename: Optional[str] = None
        location: Optional[str] = None

        _PROTO_CLASS: ClassVar[type] = proto_script_exception_pb2.ScriptException.StackTraceFrame
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'line': {
                'proto_field': 'line',
                'is_message': False,
                'is_repeated': False,
            },
            'column': {
                'proto_field': 'column',
                'is_message': False,
                'is_repeated': False,
            },
            'filename': {
                'proto_field': 'filename',
                'is_message': False,
                'is_repeated': False,
            },
            'location': {
                'proto_field': 'location',
                'is_message': False,
                'is_repeated': False,
            },
        }


@dataclass
class ScriptExecutorState(ProtoModel):
    """Generated model for ScriptExecutorStateProto"""

    # Nested Enums
    class ScriptFeature(IntEnum):
        """
        Auto-generated IntEnum for protobuf ScriptFeature.
        
        Values are directly compatible with protobuf integer constants.
        """

        INVALID = scripting_script_executor_state_pb2.ScriptExecutorStateProto.INVALID  # 0
        EXCEPTION_CAUGHT = scripting_script_executor_state_pb2.ScriptExecutorStateProto.EXCEPTION_CAUGHT  # 1
        CALL_STATEMENT = scripting_script_executor_state_pb2.ScriptExecutorStateProto.CALL_STATEMENT  # 2
        EXECUTE_IMMEDIATE_STATEMENT = scripting_script_executor_state_pb2.ScriptExecutorStateProto.EXECUTE_IMMEDIATE_STATEMENT  # 3


    callstack: List['ScriptExecutorState.StackFrame'] = field(default_factory=list)
    pending_exceptions: List['ScriptException'] = field(default_factory=list)
    triggered_features: List['ScriptExecutorState.ScriptFeature'] = field(default_factory=list)
    timezone: Optional[str] = None
    case_stmt_true_branch_index: Optional[int] = None
    case_stmt_current_branch_index: Optional[int] = None
    sql_feature_usage: Optional['ScriptExecutorState.ScriptFeatureUsage'] = None

    _PROTO_CLASS: ClassVar[type] = scripting_script_executor_state_pb2.ScriptExecutorStateProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'callstack': {
            'proto_field': 'callstack',
            'is_message': True,
            'is_repeated': True,
        },
        'pending_exceptions': {
            'proto_field': 'pending_exceptions',
            'is_message': True,
            'is_repeated': True,
        },
        'triggered_features': {
            'proto_field': 'triggered_features',
            'is_message': False,
            'is_repeated': True,
            'is_enum': True,
            'enum_type_name': 'ScriptFeature',
            'enum_parent_message': 'ScriptExecutorStateProto',
        },
        'timezone': {
            'proto_field': 'timezone',
            'is_message': False,
            'is_repeated': False,
        },
        'case_stmt_true_branch_index': {
            'proto_field': 'case_stmt_true_branch_index',
            'is_message': False,
            'is_repeated': False,
        },
        'case_stmt_current_branch_index': {
            'proto_field': 'case_stmt_current_branch_index',
            'is_message': False,
            'is_repeated': False,
        },
        'sql_feature_usage': {
            'proto_field': 'sql_feature_usage',
            'is_message': True,
            'is_repeated': False,
        },
    }

    @dataclass
    class ProcedureDefinition(ProtoModel):
        """Generated model for ProcedureDefinition"""

        name: Optional[str] = None
        signature: Optional['FunctionSignature'] = None
        argument_name_list: List[str] = field(default_factory=list)
        body: Optional[str] = None
        is_dynamic_sql: Optional[bool] = None
        extension: Optional['ProcedureExtension'] = None

        _PROTO_CLASS: ClassVar[type] = scripting_script_executor_state_pb2.ScriptExecutorStateProto.ProcedureDefinition
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'name': {
                'proto_field': 'name',
                'is_message': False,
                'is_repeated': False,
            },
            'signature': {
                'proto_field': 'signature',
                'is_message': True,
                'is_repeated': False,
            },
            'argument_name_list': {
                'proto_field': 'argument_name_list',
                'is_message': False,
                'is_repeated': True,
            },
            'body': {
                'proto_field': 'body',
                'is_message': False,
                'is_repeated': False,
            },
            'is_dynamic_sql': {
                'proto_field': 'is_dynamic_sql',
                'is_message': False,
                'is_repeated': False,
            },
            'extension': {
                'proto_field': 'extension',
                'is_message': True,
                'is_repeated': False,
            },
        }

    @dataclass
    class ScriptFeatureUsage(ProtoModel):
        """Generated model for ScriptFeatureUsage"""

        exception: Optional[int] = None
        call_stmt: Optional[int] = None
        execute_immediate_stmt: Optional[int] = None

        _PROTO_CLASS: ClassVar[type] = scripting_script_executor_state_pb2.ScriptExecutorStateProto.ScriptFeatureUsage
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'exception': {
                'proto_field': 'exception',
                'is_message': False,
                'is_repeated': False,
            },
            'call_stmt': {
                'proto_field': 'call_stmt',
                'is_message': False,
                'is_repeated': False,
            },
            'execute_immediate_stmt': {
                'proto_field': 'execute_immediate_stmt',
                'is_message': False,
                'is_repeated': False,
            },
        }

    @dataclass
    class StackFrame(ProtoModel):
        """Generated model for StackFrame"""

        procedure_definition: Optional['ScriptExecutorState.ProcedureDefinition'] = None
        variables: List['Variable'] = field(default_factory=list)
        current_location_byte_offset: Optional[int] = None
        control_flow_node_kind: Optional[int] = None
        parameters: Optional['ScriptExecutorState.StackFrame.Parameters'] = None
        for_loop_stack: List[any_pb2.Any] = field(default_factory=list)

        _PROTO_CLASS: ClassVar[type] = scripting_script_executor_state_pb2.ScriptExecutorStateProto.StackFrame
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'procedure_definition': {
                'proto_field': 'procedure_definition',
                'is_message': True,
                'is_repeated': False,
            },
            'variables': {
                'proto_field': 'variables',
                'is_message': True,
                'is_repeated': True,
            },
            'current_location_byte_offset': {
                'proto_field': 'current_location_byte_offset',
                'is_message': False,
                'is_repeated': False,
            },
            'control_flow_node_kind': {
                'proto_field': 'control_flow_node_kind',
                'is_message': False,
                'is_repeated': False,
            },
            'parameters': {
                'proto_field': 'parameters',
                'is_message': True,
                'is_repeated': False,
            },
            'for_loop_stack': {
                'proto_field': 'for_loop_stack',
                'is_message': True,
                'is_repeated': True,
            },
        }

        @dataclass
        class Parameters(ProtoModel):
            """Generated model for Parameters"""

            # Nested Enums
            class ParameterMode(IntEnum):
                """
                Auto-generated IntEnum for protobuf ParameterMode.
                
                Values are directly compatible with protobuf integer constants.
                """

                NONE = scripting_script_executor_state_pb2.ScriptExecutorStateProto.StackFrame.Parameters.NONE  # 0
                NAMED = scripting_script_executor_state_pb2.ScriptExecutorStateProto.StackFrame.Parameters.NAMED  # 1
                POSITIONAL = scripting_script_executor_state_pb2.ScriptExecutorStateProto.StackFrame.Parameters.POSITIONAL  # 2


            mode: Optional['Parameters.ParameterMode'] = None
            variables: List['Variable'] = field(default_factory=list)

            _PROTO_CLASS: ClassVar[type] = scripting_script_executor_state_pb2.ScriptExecutorStateProto.StackFrame.Parameters
            _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
                'mode': {
                    'proto_field': 'mode',
                    'is_message': False,
                    'is_repeated': False,
                    'is_enum': True,
                    'enum_type_name': 'ParameterMode',
                    'enum_parent_message': 'Parameters',
                },
                'variables': {
                    'proto_field': 'variables',
                    'is_message': True,
                    'is_repeated': True,
                },
            }


@dataclass
class SequenceRef(ProtoModel):
    """Generated model for SequenceRefProto"""

    name: Optional[str] = None
    full_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.SequenceRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'full_name': {
            'proto_field': 'full_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class SimpleAnonymizationInfo(ProtoModel):
    """Generated model for SimpleAnonymizationInfoProto"""

    userid_column_name: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_simple_table_pb2.SimpleAnonymizationInfoProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'userid_column_name': {
            'proto_field': 'userid_column_name',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class SimpleCatalog(ProtoModel):
    """Generated model for SimpleCatalogProto"""

    name: Optional[str] = None
    table: List['SimpleTable'] = field(default_factory=list)
    named_type: List['SimpleCatalog.NamedType'] = field(default_factory=list)
    catalog: List['SimpleCatalog'] = field(default_factory=list)
    builtin_function_options: Optional['ZetaSQLBuiltinFunctionOptions'] = None
    custom_function: List['Function'] = field(default_factory=list)
    custom_tvf: List['TableValuedFunction'] = field(default_factory=list)
    file_descriptor_set_index: Optional[int] = None
    procedure: List['Procedure'] = field(default_factory=list)
    constant: List['SimpleConstant'] = field(default_factory=list)
    property_graph: List['SimplePropertyGraph'] = field(default_factory=list)
    connection: List['SimpleConnection'] = field(default_factory=list)
    model: List['SimpleModel'] = field(default_factory=list)
    sequence: List['SimpleSequence'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_simple_catalog_pb2.SimpleCatalogProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'table': {
            'proto_field': 'table',
            'is_message': True,
            'is_repeated': True,
        },
        'named_type': {
            'proto_field': 'named_type',
            'is_message': True,
            'is_repeated': True,
        },
        'catalog': {
            'proto_field': 'catalog',
            'is_message': True,
            'is_repeated': True,
        },
        'builtin_function_options': {
            'proto_field': 'builtin_function_options',
            'is_message': True,
            'is_repeated': False,
        },
        'custom_function': {
            'proto_field': 'custom_function',
            'is_message': True,
            'is_repeated': True,
        },
        'custom_tvf': {
            'proto_field': 'custom_tvf',
            'is_message': True,
            'is_repeated': True,
        },
        'file_descriptor_set_index': {
            'proto_field': 'file_descriptor_set_index',
            'is_message': False,
            'is_repeated': False,
        },
        'procedure': {
            'proto_field': 'procedure',
            'is_message': True,
            'is_repeated': True,
        },
        'constant': {
            'proto_field': 'constant',
            'is_message': True,
            'is_repeated': True,
        },
        'property_graph': {
            'proto_field': 'property_graph',
            'is_message': True,
            'is_repeated': True,
        },
        'connection': {
            'proto_field': 'connection',
            'is_message': True,
            'is_repeated': True,
        },
        'model': {
            'proto_field': 'model',
            'is_message': True,
            'is_repeated': True,
        },
        'sequence': {
            'proto_field': 'sequence',
            'is_message': True,
            'is_repeated': True,
        },
    }

    @dataclass
    class NamedType(ProtoModel):
        """Generated model for NamedTypeProto"""

        name: Optional[str] = None
        type: Optional['Type'] = None

        _PROTO_CLASS: ClassVar[type] = proto_simple_catalog_pb2.SimpleCatalogProto.NamedTypeProto
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'name': {
                'proto_field': 'name',
                'is_message': False,
                'is_repeated': False,
            },
            'type': {
                'proto_field': 'type',
                'is_message': True,
                'is_repeated': False,
            },
        }


@dataclass
class SimpleColumn(ProtoModel):
    """Generated model for SimpleColumnProto"""

    name: Optional[str] = None
    type: Optional['Type'] = None
    is_pseudo_column: Optional[bool] = None
    is_writable_column: Optional[bool] = None
    can_update_unwritable_to_default: Optional[bool] = None
    annotation_map: Optional['AnnotationMap'] = None
    has_default_value: Optional[bool] = None
    column_expression: Optional['ExpressionAttribute'] = None

    _PROTO_CLASS: ClassVar[type] = public_simple_table_pb2.SimpleColumnProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'is_pseudo_column': {
            'proto_field': 'is_pseudo_column',
            'is_message': False,
            'is_repeated': False,
        },
        'is_writable_column': {
            'proto_field': 'is_writable_column',
            'is_message': False,
            'is_repeated': False,
        },
        'can_update_unwritable_to_default': {
            'proto_field': 'can_update_unwritable_to_default',
            'is_message': False,
            'is_repeated': False,
        },
        'annotation_map': {
            'proto_field': 'annotation_map',
            'is_message': True,
            'is_repeated': False,
        },
        'has_default_value': {
            'proto_field': 'has_default_value',
            'is_message': False,
            'is_repeated': False,
        },
        'column_expression': {
            'proto_field': 'column_expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class SimpleConnection(ProtoModel):
    """Generated model for SimpleConnectionProto"""

    name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = public_simple_connection_pb2.SimpleConnectionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class SimpleConstant(ProtoModel):
    """Generated model for SimpleConstantProto"""

    name_path: List[str] = field(default_factory=list)
    type: Optional['Type'] = None
    value: Optional['Value'] = None

    _PROTO_CLASS: ClassVar[type] = public_simple_constant_pb2.SimpleConstantProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class SimpleGraphElementDynamicLabel(ProtoModel):
    """Generated model for SimpleGraphElementDynamicLabelProto"""

    label_expression: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = proto_simple_property_graph_pb2.SimpleGraphElementDynamicLabelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'label_expression': {
            'proto_field': 'label_expression',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class SimpleGraphElementDynamicProperties(ProtoModel):
    """Generated model for SimpleGraphElementDynamicPropertiesProto"""

    properties_expression: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = proto_simple_property_graph_pb2.SimpleGraphElementDynamicPropertiesProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'properties_expression': {
            'proto_field': 'properties_expression',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class SimpleGraphElementLabel(ProtoModel):
    """Generated model for SimpleGraphElementLabelProto"""

    name: Optional[str] = None
    property_graph_name_path: List[str] = field(default_factory=list)
    property_declaration_names: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_simple_property_graph_pb2.SimpleGraphElementLabelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'property_graph_name_path': {
            'proto_field': 'property_graph_name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'property_declaration_names': {
            'proto_field': 'property_declaration_names',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class SimpleGraphElementTable(ProtoModel):
    """Generated model for SimpleGraphElementTableProto"""

    # Nested Enums
    class Kind(IntEnum):
        """
        Auto-generated IntEnum for protobuf Kind.
        
        Values are directly compatible with protobuf integer constants.
        """

        KIND_UNSPECIFIED = proto_simple_property_graph_pb2.SimpleGraphElementTableProto.KIND_UNSPECIFIED  # 0
        NODE = proto_simple_property_graph_pb2.SimpleGraphElementTableProto.NODE  # 1
        EDGE = proto_simple_property_graph_pb2.SimpleGraphElementTableProto.EDGE  # 2


    name: Optional[str] = None
    property_graph_name_path: List[str] = field(default_factory=list)
    kind: Optional['SimpleGraphElementTable.Kind'] = None
    input_table_name: Optional[str] = None
    key_columns: List[int] = field(default_factory=list)
    label_names: List[str] = field(default_factory=list)
    property_definitions: List['SimpleGraphPropertyDefinition'] = field(default_factory=list)
    source_node_table: Optional['SimpleGraphNodeTableReference'] = None
    dest_node_table: Optional['SimpleGraphNodeTableReference'] = None
    dynamic_properties: Optional['SimpleGraphElementDynamicProperties'] = None
    dynamic_label: Optional['SimpleGraphElementDynamicLabel'] = None

    _PROTO_CLASS: ClassVar[type] = proto_simple_property_graph_pb2.SimpleGraphElementTableProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'property_graph_name_path': {
            'proto_field': 'property_graph_name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'kind': {
            'proto_field': 'kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Kind',
            'enum_parent_message': 'SimpleGraphElementTableProto',
        },
        'input_table_name': {
            'proto_field': 'input_table_name',
            'is_message': False,
            'is_repeated': False,
        },
        'key_columns': {
            'proto_field': 'key_columns',
            'is_message': False,
            'is_repeated': True,
        },
        'label_names': {
            'proto_field': 'label_names',
            'is_message': False,
            'is_repeated': True,
        },
        'property_definitions': {
            'proto_field': 'property_definitions',
            'is_message': True,
            'is_repeated': True,
        },
        'source_node_table': {
            'proto_field': 'source_node_table',
            'is_message': True,
            'is_repeated': False,
        },
        'dest_node_table': {
            'proto_field': 'dest_node_table',
            'is_message': True,
            'is_repeated': False,
        },
        'dynamic_properties': {
            'proto_field': 'dynamic_properties',
            'is_message': True,
            'is_repeated': False,
        },
        'dynamic_label': {
            'proto_field': 'dynamic_label',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class SimpleGraphNodeTableReference(ProtoModel):
    """Generated model for SimpleGraphNodeTableReferenceProto"""

    node_table_name: Optional[str] = None
    edge_table_columns: List[int] = field(default_factory=list)
    node_table_columns: List[int] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_simple_property_graph_pb2.SimpleGraphNodeTableReferenceProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'node_table_name': {
            'proto_field': 'node_table_name',
            'is_message': False,
            'is_repeated': False,
        },
        'edge_table_columns': {
            'proto_field': 'edge_table_columns',
            'is_message': False,
            'is_repeated': True,
        },
        'node_table_columns': {
            'proto_field': 'node_table_columns',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class SimpleGraphPropertyDeclaration(ProtoModel):
    """Generated model for SimpleGraphPropertyDeclarationProto"""

    name: Optional[str] = None
    property_graph_name_path: List[str] = field(default_factory=list)
    type: Optional['Type'] = None

    _PROTO_CLASS: ClassVar[type] = proto_simple_property_graph_pb2.SimpleGraphPropertyDeclarationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'property_graph_name_path': {
            'proto_field': 'property_graph_name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class SimpleGraphPropertyDefinition(ProtoModel):
    """Generated model for SimpleGraphPropertyDefinitionProto"""

    property_declaration_name: Optional[str] = None
    value_expression_sql: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = proto_simple_property_graph_pb2.SimpleGraphPropertyDefinitionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'property_declaration_name': {
            'proto_field': 'property_declaration_name',
            'is_message': False,
            'is_repeated': False,
        },
        'value_expression_sql': {
            'proto_field': 'value_expression_sql',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class SimpleModel(ProtoModel):
    """Generated model for SimpleModelProto"""

    id: Optional[int] = None
    name: Optional[str] = None
    input: List['SimpleColumn'] = field(default_factory=list)
    output: List['SimpleColumn'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_simple_model_pb2.SimpleModelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'id': {
            'proto_field': 'id',
            'is_message': False,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'input': {
            'proto_field': 'input',
            'is_message': True,
            'is_repeated': True,
        },
        'output': {
            'proto_field': 'output',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class SimplePropertyGraph(ProtoModel):
    """Generated model for SimplePropertyGraphProto"""

    name: Optional[str] = None
    name_path: List[str] = field(default_factory=list)
    node_tables: List['SimpleGraphElementTable'] = field(default_factory=list)
    edge_tables: List['SimpleGraphElementTable'] = field(default_factory=list)
    labels: List['SimpleGraphElementLabel'] = field(default_factory=list)
    property_declarations: List['SimpleGraphPropertyDeclaration'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_simple_property_graph_pb2.SimplePropertyGraphProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'node_tables': {
            'proto_field': 'node_tables',
            'is_message': True,
            'is_repeated': True,
        },
        'edge_tables': {
            'proto_field': 'edge_tables',
            'is_message': True,
            'is_repeated': True,
        },
        'labels': {
            'proto_field': 'labels',
            'is_message': True,
            'is_repeated': True,
        },
        'property_declarations': {
            'proto_field': 'property_declarations',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class SimpleSequence(ProtoModel):
    """Generated model for SimpleSequenceProto"""

    name: Optional[str] = None
    full_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = public_simple_sequence_pb2.SimpleSequenceProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'full_name': {
            'proto_field': 'full_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class SimpleTable(ProtoModel):
    """Generated model for SimpleTableProto"""

    name: Optional[str] = None
    serialization_id: Optional[int] = None
    is_value_table: Optional[bool] = None
    column: List['SimpleColumn'] = field(default_factory=list)
    primary_key_column_index: List[int] = field(default_factory=list)
    row_identity_column_index: List[int] = field(default_factory=list)
    name_in_catalog: Optional[str] = None
    allow_anonymous_column_name: Optional[bool] = None
    allow_duplicate_column_names: Optional[bool] = None
    anonymization_info: Optional['SimpleAnonymizationInfo'] = None
    full_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = public_simple_table_pb2.SimpleTableProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'serialization_id': {
            'proto_field': 'serialization_id',
            'is_message': False,
            'is_repeated': False,
        },
        'is_value_table': {
            'proto_field': 'is_value_table',
            'is_message': False,
            'is_repeated': False,
        },
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': True,
        },
        'primary_key_column_index': {
            'proto_field': 'primary_key_column_index',
            'is_message': False,
            'is_repeated': True,
        },
        'row_identity_column_index': {
            'proto_field': 'row_identity_column_index',
            'is_message': False,
            'is_repeated': True,
        },
        'name_in_catalog': {
            'proto_field': 'name_in_catalog',
            'is_message': False,
            'is_repeated': False,
        },
        'allow_anonymous_column_name': {
            'proto_field': 'allow_anonymous_column_name',
            'is_message': False,
            'is_repeated': False,
        },
        'allow_duplicate_column_names': {
            'proto_field': 'allow_duplicate_column_names',
            'is_message': False,
            'is_repeated': False,
        },
        'anonymization_info': {
            'proto_field': 'anonymization_info',
            'is_message': True,
            'is_repeated': False,
        },
        'full_name': {
            'proto_field': 'full_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class SimpleTokenList(ProtoModel):
    """Generated model for SimpleTokenListProto"""

    text_token: List['TextToken'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_simple_token_list_pb2.SimpleTokenListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'text_token': {
            'proto_field': 'text_token',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class SimpleValue(ProtoModel):
    """Generated model for SimpleValueProto"""

    int64_value: Optional[int] = None
    string_value: Optional[str] = None
    bool_value: Optional[bool] = None
    double_value: Optional[float] = None
    bytes_value: Optional[bytes] = None

    _PROTO_CLASS: ClassVar[type] = public_simple_value_pb2.SimpleValueProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'int64_value': {
            'proto_field': 'int64_value',
            'is_message': False,
            'is_repeated': False,
        },
        'string_value': {
            'proto_field': 'string_value',
            'is_message': False,
            'is_repeated': False,
        },
        'bool_value': {
            'proto_field': 'bool_value',
            'is_message': False,
            'is_repeated': False,
        },
        'double_value': {
            'proto_field': 'double_value',
            'is_message': False,
            'is_repeated': False,
        },
        'bytes_value': {
            'proto_field': 'bytes_value',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class StateMachine(ProtoModel):
    """Generated model for StateMachineProto"""

    nfa: Optional['StateMachine.CompiledNFA'] = None
    after_match_skip_mode: Optional['ResolvedMatchRecognizeScanEnums.AfterMatchSkipMode'] = None
    longest_match_mode: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = match_recognize_compiled_pattern_pb2.StateMachineProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'nfa': {
            'proto_field': 'nfa',
            'is_message': True,
            'is_repeated': False,
        },
        'after_match_skip_mode': {
            'proto_field': 'after_match_skip_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'AfterMatchSkipMode',
            'enum_parent_message': 'ResolvedMatchRecognizeScanEnums',
        },
        'longest_match_mode': {
            'proto_field': 'longest_match_mode',
            'is_message': False,
            'is_repeated': False,
        },
    }

    @dataclass
    class CompiledNFA(ProtoModel):
        """Generated model for CompiledNFAProto"""

        states: List['StateMachine.CompiledNFA.State'] = field(default_factory=list)
        start_state: Optional[int] = None
        final_state: Optional[int] = None
        num_pattern_variables: Optional[int] = None

        _PROTO_CLASS: ClassVar[type] = match_recognize_compiled_pattern_pb2.StateMachineProto.CompiledNFAProto
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'states': {
                'proto_field': 'states',
                'is_message': True,
                'is_repeated': True,
            },
            'start_state': {
                'proto_field': 'start_state',
                'is_message': False,
                'is_repeated': False,
            },
            'final_state': {
                'proto_field': 'final_state',
                'is_message': False,
                'is_repeated': False,
            },
            'num_pattern_variables': {
                'proto_field': 'num_pattern_variables',
                'is_message': False,
                'is_repeated': False,
            },
        }

        @dataclass
        class Edge(ProtoModel):
            """Generated model for EdgeProto"""

            to_state: Optional[int] = None
            pattern_variable: Optional[int] = None
            is_head_anchored: Optional[bool] = None
            is_tail_anchored: Optional[bool] = None

            _PROTO_CLASS: ClassVar[type] = match_recognize_compiled_pattern_pb2.StateMachineProto.CompiledNFAProto.EdgeProto
            _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
                'to_state': {
                    'proto_field': 'to_state',
                    'is_message': False,
                    'is_repeated': False,
                },
                'pattern_variable': {
                    'proto_field': 'pattern_variable',
                    'is_message': False,
                    'is_repeated': False,
                },
                'is_head_anchored': {
                    'proto_field': 'is_head_anchored',
                    'is_message': False,
                    'is_repeated': False,
                },
                'is_tail_anchored': {
                    'proto_field': 'is_tail_anchored',
                    'is_message': False,
                    'is_repeated': False,
                },
            }

        @dataclass
        class State(ProtoModel):
            """Generated model for StateProto"""

            edges: List['StateMachine.CompiledNFA.Edge'] = field(default_factory=list)

            _PROTO_CLASS: ClassVar[type] = match_recognize_compiled_pattern_pb2.StateMachineProto.CompiledNFAProto.StateProto
            _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
                'edges': {
                    'proto_field': 'edges',
                    'is_message': True,
                    'is_repeated': True,
                },
            }


@dataclass
class StringTypeParameters(ProtoModel):
    """Generated model for StringTypeParametersProto"""

    max_length: Optional[int] = None
    is_max_length: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = public_type_parameters_pb2.StringTypeParametersProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'max_length': {
            'proto_field': 'max_length',
            'is_message': False,
            'is_repeated': False,
        },
        'is_max_length': {
            'proto_field': 'is_max_length',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class StructField(ProtoModel):
    """Generated model for StructFieldProto"""

    field_name: Optional[str] = None
    field_type: Optional['Type'] = None

    _PROTO_CLASS: ClassVar[type] = public_type_pb2.StructFieldProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'field_name': {
            'proto_field': 'field_name',
            'is_message': False,
            'is_repeated': False,
        },
        'field_type': {
            'proto_field': 'field_type',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class StructType(ProtoModel):
    """Generated model for StructTypeProto"""

    field: List['StructField'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_type_pb2.StructTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'field': {
            'proto_field': 'field',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class TVFArgument(ProtoModel):
    """Generated model for TVFArgumentProto"""

    scalar_argument: Optional['ValueWithType'] = None
    relation_argument: Optional['TVFRelation'] = None
    model_argument: Optional['TVFModel'] = None
    connection_argument: Optional['TVFConnection'] = None
    descriptor_argument: Optional['TVFDescriptor'] = None
    graph_argument: Optional['TVFGraph'] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.TVFArgumentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'scalar_argument': {
            'proto_field': 'scalar_argument',
            'is_message': True,
            'is_repeated': False,
        },
        'relation_argument': {
            'proto_field': 'relation_argument',
            'is_message': True,
            'is_repeated': False,
        },
        'model_argument': {
            'proto_field': 'model_argument',
            'is_message': True,
            'is_repeated': False,
        },
        'connection_argument': {
            'proto_field': 'connection_argument',
            'is_message': True,
            'is_repeated': False,
        },
        'descriptor_argument': {
            'proto_field': 'descriptor_argument',
            'is_message': True,
            'is_repeated': False,
        },
        'graph_argument': {
            'proto_field': 'graph_argument',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class TVFConnection(ProtoModel):
    """Generated model for TVFConnectionProto"""

    name: Optional[str] = None
    full_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.TVFConnectionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'full_name': {
            'proto_field': 'full_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class TVFDescriptor(ProtoModel):
    """Generated model for TVFDescriptorProto"""

    column_name: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.TVFDescriptorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_name': {
            'proto_field': 'column_name',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class TVFGraph(ProtoModel):
    """Generated model for TVFGraphProto"""

    name: Optional[str] = None
    full_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.TVFGraphProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'full_name': {
            'proto_field': 'full_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class TVFModel(ProtoModel):
    """Generated model for TVFModelProto"""

    name: Optional[str] = None
    full_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.TVFModelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'full_name': {
            'proto_field': 'full_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class TVFRelation(ProtoModel):
    """Generated model for TVFRelationProto"""

    column: List['TVFRelationColumn'] = field(default_factory=list)
    is_value_table: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.TVFRelationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': True,
        },
        'is_value_table': {
            'proto_field': 'is_value_table',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class TVFRelationColumn(ProtoModel):
    """Generated model for TVFRelationColumnProto"""

    name: Optional[str] = None
    type: Optional['Type'] = None
    is_pseudo_column: Optional[bool] = None
    annotation_map: Optional['AnnotationMap'] = None
    name_parse_location_range: Optional['ParseLocationRange'] = None
    type_parse_location_range: Optional['ParseLocationRange'] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.TVFRelationColumnProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'is_pseudo_column': {
            'proto_field': 'is_pseudo_column',
            'is_message': False,
            'is_repeated': False,
        },
        'annotation_map': {
            'proto_field': 'annotation_map',
            'is_message': True,
            'is_repeated': False,
        },
        'name_parse_location_range': {
            'proto_field': 'name_parse_location_range',
            'is_message': True,
            'is_repeated': False,
        },
        'type_parse_location_range': {
            'proto_field': 'type_parse_location_range',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class TVFSignature(ProtoModel):
    """Generated model for TVFSignatureProto"""

    argument: List['TVFArgument'] = field(default_factory=list)
    options: Optional['TVFSignatureOptions'] = None
    output_schema: Optional['TVFRelation'] = None
    output_table_schema: Optional['TableRef'] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.TVFSignatureProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'argument': {
            'proto_field': 'argument',
            'is_message': True,
            'is_repeated': True,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
        'output_schema': {
            'proto_field': 'output_schema',
            'is_message': True,
            'is_repeated': False,
        },
        'output_table_schema': {
            'proto_field': 'output_table_schema',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class TVFSignatureOptions(ProtoModel):
    """Generated model for TVFSignatureOptionsProto"""

    additional_deprecation_warning: List['FreestandingDeprecationWarning'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.TVFSignatureOptionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'additional_deprecation_warning': {
            'proto_field': 'additional_deprecation_warning',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class TableAlias(ProtoModel):
    """Generated model for TableAlias"""

    name: Optional[str] = None
    column_name: List[str] = field(default_factory=list)
    pseudo_column_name: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = common_reflection_pb2.TableAlias
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'column_name': {
            'proto_field': 'column_name',
            'is_message': False,
            'is_repeated': True,
        },
        'pseudo_column_name': {
            'proto_field': 'pseudo_column_name',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class TableContent(ProtoModel):
    """Generated model for TableContent"""

    table_data: Optional['TableData'] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.TableContent
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_data': {
            'proto_field': 'table_data',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class TableData(ProtoModel):
    """Generated model for TableData"""

    row: List['TableData.Row'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.TableData
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'row': {
            'proto_field': 'row',
            'is_message': True,
            'is_repeated': True,
        },
    }

    @dataclass
    class Row(ProtoModel):
        """Generated model for Row"""

        # Nested Enums
        class Operation(IntEnum):
            """
            Auto-generated IntEnum for protobuf Operation.
            
            Values are directly compatible with protobuf integer constants.
            """

            UNKNOWN = local_service_local_service_pb2.EvaluateModifyResponse.Row.UNKNOWN  # 0
            INSERT = local_service_local_service_pb2.EvaluateModifyResponse.Row.INSERT  # 1
            DELETE = local_service_local_service_pb2.EvaluateModifyResponse.Row.DELETE  # 2
            UPDATE = local_service_local_service_pb2.EvaluateModifyResponse.Row.UPDATE  # 3


        cell: List['Value'] = field(default_factory=list)

        _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.TableData.Row
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'cell': {
                'proto_field': 'cell',
                'is_message': True,
                'is_repeated': True,
            },
        }


@dataclass
class TableFromProtoRequest(ProtoModel):
    """Generated model for TableFromProtoRequest"""

    proto: Optional['ProtoType'] = None
    file_descriptor_set: Optional[descriptor_pb2.FileDescriptorSet] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.TableFromProtoRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'proto': {
            'proto_field': 'proto',
            'is_message': True,
            'is_repeated': False,
        },
        'file_descriptor_set': {
            'proto_field': 'file_descriptor_set',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class TableRef(ProtoModel):
    """Generated model for TableRefProto"""

    name: Optional[str] = None
    serialization_id: Optional[int] = None
    full_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.TableRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'serialization_id': {
            'proto_field': 'serialization_id',
            'is_message': False,
            'is_repeated': False,
        },
        'full_name': {
            'proto_field': 'full_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class TableValuedFunction(ProtoModel):
    """Generated model for TableValuedFunctionProto"""

    name_path: List[str] = field(default_factory=list)
    signature: Optional['FunctionSignature'] = None
    signatures: List['FunctionSignature'] = field(default_factory=list)
    options: Optional['TableValuedFunctionOptions'] = None
    type: Optional['FunctionEnums.TableValuedFunctionType'] = None
    volatility: Optional['FunctionEnums.Volatility'] = None
    parse_resume_location: Optional['ParseResumeLocation'] = None
    argument_name: List[str] = field(default_factory=list)
    custom_context: Optional[str] = None
    anonymization_info: Optional['SimpleAnonymizationInfo'] = None
    statement_context: Optional['StatementContext'] = None
    group: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.TableValuedFunctionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'signature': {
            'proto_field': 'signature',
            'is_message': True,
            'is_repeated': False,
        },
        'signatures': {
            'proto_field': 'signatures',
            'is_message': True,
            'is_repeated': True,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'TableValuedFunctionType',
            'enum_parent_message': 'FunctionEnums',
        },
        'volatility': {
            'proto_field': 'volatility',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Volatility',
            'enum_parent_message': 'FunctionEnums',
        },
        'parse_resume_location': {
            'proto_field': 'parse_resume_location',
            'is_message': True,
            'is_repeated': False,
        },
        'argument_name': {
            'proto_field': 'argument_name',
            'is_message': False,
            'is_repeated': True,
        },
        'custom_context': {
            'proto_field': 'custom_context',
            'is_message': False,
            'is_repeated': False,
        },
        'anonymization_info': {
            'proto_field': 'anonymization_info',
            'is_message': True,
            'is_repeated': False,
        },
        'statement_context': {
            'proto_field': 'statement_context',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'StatementContext',
        },
        'group': {
            'proto_field': 'group',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class TableValuedFunctionOptions(ProtoModel):
    """Generated model for TableValuedFunctionOptionsProto"""

    uses_upper_case_sql_name: Optional[bool] = None
    required_language_feature: List['LanguageFeature'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_function_pb2.TableValuedFunctionOptionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'uses_upper_case_sql_name': {
            'proto_field': 'uses_upper_case_sql_name',
            'is_message': False,
            'is_repeated': False,
        },
        'required_language_feature': {
            'proto_field': 'required_language_feature',
            'is_message': False,
            'is_repeated': True,
            'is_enum': True,
            'enum_type_name': 'LanguageFeature',
        },
    }


@dataclass
class TableValuedFunctionRef(ProtoModel):
    """Generated model for TableValuedFunctionRefProto"""

    name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.TableValuedFunctionRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class TextEdit(ProtoModel):
    """Generated model for TextEdit"""

    range: Optional['FixRange'] = None
    new_text: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = public_fix_suggestion_pb2.TextEdit
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'range': {
            'proto_field': 'range',
            'is_message': True,
            'is_repeated': False,
        },
        'new_text': {
            'proto_field': 'new_text',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class TextToken(ProtoModel):
    """Generated model for TextTokenProto"""

    text: Optional[str] = None
    attribute: Optional[int] = None
    index_token: List['Token'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_simple_token_list_pb2.TextTokenProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'text': {
            'proto_field': 'text',
            'is_message': False,
            'is_repeated': False,
        },
        'attribute': {
            'proto_field': 'attribute',
            'is_message': False,
            'is_repeated': False,
        },
        'index_token': {
            'proto_field': 'index_token',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class TimestampTypeParameters(ProtoModel):
    """Generated model for TimestampTypeParametersProto"""

    precision: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = public_type_parameters_pb2.TimestampTypeParametersProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'precision': {
            'proto_field': 'precision',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class Token(ProtoModel):
    """Generated model for TokenProto"""

    text: Optional[str] = None
    attribute: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = public_simple_token_list_pb2.TokenProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'text': {
            'proto_field': 'text',
            'is_message': False,
            'is_repeated': False,
        },
        'attribute': {
            'proto_field': 'attribute',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class Type(ProtoModel):
    """Generated model for TypeProto"""

    type_kind: Optional['TypeKind'] = None
    array_type: Optional['ArrayType'] = None
    struct_type: Optional['StructType'] = None
    proto_type: Optional['ProtoType'] = None
    enum_type: Optional['EnumType'] = None
    range_type: Optional['RangeType'] = None
    graph_element_type: Optional['GraphElementType'] = None
    graph_path_type: Optional['GraphPathType'] = None
    map_type: Optional['MapType'] = None
    measure_type: Optional['MeasureType'] = None
    file_descriptor_set: List[descriptor_pb2.FileDescriptorSet] = field(default_factory=list)
    extended_type_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = public_type_pb2.TypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type_kind': {
            'proto_field': 'type_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'TypeKind',
        },
        'array_type': {
            'proto_field': 'array_type',
            'is_message': True,
            'is_repeated': False,
        },
        'struct_type': {
            'proto_field': 'struct_type',
            'is_message': True,
            'is_repeated': False,
        },
        'proto_type': {
            'proto_field': 'proto_type',
            'is_message': True,
            'is_repeated': False,
        },
        'enum_type': {
            'proto_field': 'enum_type',
            'is_message': True,
            'is_repeated': False,
        },
        'range_type': {
            'proto_field': 'range_type',
            'is_message': True,
            'is_repeated': False,
        },
        'graph_element_type': {
            'proto_field': 'graph_element_type',
            'is_message': True,
            'is_repeated': False,
        },
        'graph_path_type': {
            'proto_field': 'graph_path_type',
            'is_message': True,
            'is_repeated': False,
        },
        'map_type': {
            'proto_field': 'map_type',
            'is_message': True,
            'is_repeated': False,
        },
        'measure_type': {
            'proto_field': 'measure_type',
            'is_message': True,
            'is_repeated': False,
        },
        'file_descriptor_set': {
            'proto_field': 'file_descriptor_set',
            'is_message': True,
            'is_repeated': True,
        },
        'extended_type_name': {
            'proto_field': 'extended_type_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class TypeModifiers(ProtoModel):
    """Generated model for TypeModifiersProto"""

    type_parameters: Optional['TypeParameters'] = None
    collation: Optional['Collation'] = None

    _PROTO_CLASS: ClassVar[type] = public_type_modifiers_pb2.TypeModifiersProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type_parameters': {
            'proto_field': 'type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'collation': {
            'proto_field': 'collation',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class TypeParameters(ProtoModel):
    """Generated model for TypeParametersProto"""

    string_type_parameters: Optional['StringTypeParameters'] = None
    numeric_type_parameters: Optional['NumericTypeParameters'] = None
    extended_type_parameters: Optional['ExtendedTypeParameters'] = None
    timestamp_type_parameters: Optional['TimestampTypeParameters'] = None
    child_list: List['TypeParameters'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = public_type_parameters_pb2.TypeParametersProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'string_type_parameters': {
            'proto_field': 'string_type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'numeric_type_parameters': {
            'proto_field': 'numeric_type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'extended_type_parameters': {
            'proto_field': 'extended_type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'timestamp_type_parameters': {
            'proto_field': 'timestamp_type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'child_list': {
            'proto_field': 'child_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class UnprepareModifyRequest(ProtoModel):
    """Generated model for UnprepareModifyRequest"""

    prepared_modify_id: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.UnprepareModifyRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'prepared_modify_id': {
            'proto_field': 'prepared_modify_id',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class UnprepareQueryRequest(ProtoModel):
    """Generated model for UnprepareQueryRequest"""

    prepared_query_id: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.UnprepareQueryRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'prepared_query_id': {
            'proto_field': 'prepared_query_id',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class UnprepareRequest(ProtoModel):
    """Generated model for UnprepareRequest"""

    prepared_expression_id: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.UnprepareRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'prepared_expression_id': {
            'proto_field': 'prepared_expression_id',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class UnregisterRequest(ProtoModel):
    """Generated model for UnregisterRequest"""

    registered_id: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = local_service_local_service_pb2.UnregisterRequest
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'registered_id': {
            'proto_field': 'registered_id',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class UnsupportedFieldsEnum(ProtoModel):
    """Generated model for UnsupportedFieldsEnum"""

    # Nested Enums
    class UnsupportedFields(IntEnum):
        """
        Auto-generated IntEnum for protobuf UnsupportedFields.
        
        Values are directly compatible with protobuf integer constants.
        """

        UNSUPPORTED_FIELDS_INVALID = functions_unsupported_fields_pb2.UnsupportedFieldsEnum.UNSUPPORTED_FIELDS_INVALID  # 0
        FAIL = functions_unsupported_fields_pb2.UnsupportedFieldsEnum.FAIL  # 1
        IGNORE = functions_unsupported_fields_pb2.UnsupportedFieldsEnum.IGNORE  # 2
        PLACEHOLDER = functions_unsupported_fields_pb2.UnsupportedFieldsEnum.PLACEHOLDER  # 3


    _PROTO_CLASS: ClassVar[type] = functions_unsupported_fields_pb2.UnsupportedFieldsEnum
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class Value(ProtoModel):
    """Generated model for ValueProto"""

    int32_value: Optional[int] = None
    int64_value: Optional[int] = None
    uint32_value: Optional[int] = None
    uint64_value: Optional[int] = None
    bool_value: Optional[bool] = None
    float_value: Optional[float] = None
    double_value: Optional[float] = None
    string_value: Optional[str] = None
    bytes_value: Optional[bytes] = None
    date_value: Optional[int] = None
    enum_value: Optional[int] = None
    array_value: Optional['Value.Array'] = None
    struct_value: Optional['Value.Struct'] = None
    proto_value: Optional[bytes] = None
    timestamp_value: Optional[datetime.datetime] = None
    timestamp_pico_value: Optional[bytes] = None
    timestamp_picos_value: Optional['Value.TimestampPicos'] = None
    datetime_value: Optional['Value.Datetime'] = None
    time_value: Optional[int] = None
    geography_value: Optional[bytes] = None
    numeric_value: Optional[bytes] = None
    bignumeric_value: Optional[bytes] = None
    json_value: Optional[str] = None
    interval_value: Optional[bytes] = None
    tokenlist_value: Optional[bytes] = None
    range_value: Optional['Value.Range'] = None
    uuid_value: Optional[bytes] = None
    map_value: Optional['Value.Map'] = None

    _PROTO_CLASS: ClassVar[type] = public_value_pb2.ValueProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'int32_value': {
            'proto_field': 'int32_value',
            'is_message': False,
            'is_repeated': False,
        },
        'int64_value': {
            'proto_field': 'int64_value',
            'is_message': False,
            'is_repeated': False,
        },
        'uint32_value': {
            'proto_field': 'uint32_value',
            'is_message': False,
            'is_repeated': False,
        },
        'uint64_value': {
            'proto_field': 'uint64_value',
            'is_message': False,
            'is_repeated': False,
        },
        'bool_value': {
            'proto_field': 'bool_value',
            'is_message': False,
            'is_repeated': False,
        },
        'float_value': {
            'proto_field': 'float_value',
            'is_message': False,
            'is_repeated': False,
        },
        'double_value': {
            'proto_field': 'double_value',
            'is_message': False,
            'is_repeated': False,
        },
        'string_value': {
            'proto_field': 'string_value',
            'is_message': False,
            'is_repeated': False,
        },
        'bytes_value': {
            'proto_field': 'bytes_value',
            'is_message': False,
            'is_repeated': False,
        },
        'date_value': {
            'proto_field': 'date_value',
            'is_message': False,
            'is_repeated': False,
        },
        'enum_value': {
            'proto_field': 'enum_value',
            'is_message': False,
            'is_repeated': False,
        },
        'array_value': {
            'proto_field': 'array_value',
            'is_message': True,
            'is_repeated': False,
        },
        'struct_value': {
            'proto_field': 'struct_value',
            'is_message': True,
            'is_repeated': False,
        },
        'proto_value': {
            'proto_field': 'proto_value',
            'is_message': False,
            'is_repeated': False,
        },
        'timestamp_value': {
            'proto_field': 'timestamp_value',
            'is_message': True,
            'is_repeated': False,
        },
        'timestamp_pico_value': {
            'proto_field': 'timestamp_pico_value',
            'is_message': False,
            'is_repeated': False,
        },
        'timestamp_picos_value': {
            'proto_field': 'timestamp_picos_value',
            'is_message': True,
            'is_repeated': False,
        },
        'datetime_value': {
            'proto_field': 'datetime_value',
            'is_message': True,
            'is_repeated': False,
        },
        'time_value': {
            'proto_field': 'time_value',
            'is_message': False,
            'is_repeated': False,
        },
        'geography_value': {
            'proto_field': 'geography_value',
            'is_message': False,
            'is_repeated': False,
        },
        'numeric_value': {
            'proto_field': 'numeric_value',
            'is_message': False,
            'is_repeated': False,
        },
        'bignumeric_value': {
            'proto_field': 'bignumeric_value',
            'is_message': False,
            'is_repeated': False,
        },
        'json_value': {
            'proto_field': 'json_value',
            'is_message': False,
            'is_repeated': False,
        },
        'interval_value': {
            'proto_field': 'interval_value',
            'is_message': False,
            'is_repeated': False,
        },
        'tokenlist_value': {
            'proto_field': 'tokenlist_value',
            'is_message': False,
            'is_repeated': False,
        },
        'range_value': {
            'proto_field': 'range_value',
            'is_message': True,
            'is_repeated': False,
        },
        'uuid_value': {
            'proto_field': 'uuid_value',
            'is_message': False,
            'is_repeated': False,
        },
        'map_value': {
            'proto_field': 'map_value',
            'is_message': True,
            'is_repeated': False,
        },
    }

    @dataclass
    class Array(ProtoModel):
        """Generated model for Array"""

        element: List['Value'] = field(default_factory=list)

        _PROTO_CLASS: ClassVar[type] = public_value_pb2.ValueProto.Array
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'element': {
                'proto_field': 'element',
                'is_message': True,
                'is_repeated': True,
            },
        }

    @dataclass
    class Datetime(ProtoModel):
        """Generated model for Datetime"""

        bit_field_datetime_seconds: Optional[int] = None
        nanos: Optional[int] = None

        _PROTO_CLASS: ClassVar[type] = public_value_pb2.ValueProto.Datetime
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'bit_field_datetime_seconds': {
                'proto_field': 'bit_field_datetime_seconds',
                'is_message': False,
                'is_repeated': False,
            },
            'nanos': {
                'proto_field': 'nanos',
                'is_message': False,
                'is_repeated': False,
            },
        }

    @dataclass
    class Map(ProtoModel):
        """Generated model for Map"""

        entry: List['Value.MapEntry'] = field(default_factory=list)

        _PROTO_CLASS: ClassVar[type] = public_value_pb2.ValueProto.Map
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'entry': {
                'proto_field': 'entry',
                'is_message': True,
                'is_repeated': True,
            },
        }

    @dataclass
    class MapEntry(ProtoModel):
        """Generated model for MapEntry"""

        key: Optional['Value'] = None
        value: Optional['Value'] = None

        _PROTO_CLASS: ClassVar[type] = public_value_pb2.ValueProto.MapEntry
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'key': {
                'proto_field': 'key',
                'is_message': True,
                'is_repeated': False,
            },
            'value': {
                'proto_field': 'value',
                'is_message': True,
                'is_repeated': False,
            },
        }

    @dataclass
    class Range(ProtoModel):
        """Generated model for Range"""

        start: Optional['Value'] = None
        end: Optional['Value'] = None

        _PROTO_CLASS: ClassVar[type] = public_value_pb2.ValueProto.Range
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'start': {
                'proto_field': 'start',
                'is_message': True,
                'is_repeated': False,
            },
            'end': {
                'proto_field': 'end',
                'is_message': True,
                'is_repeated': False,
            },
        }

    @dataclass
    class Struct(ProtoModel):
        """Generated model for Struct"""

        field: List['Value'] = field(default_factory=list)

        _PROTO_CLASS: ClassVar[type] = public_value_pb2.ValueProto.Struct
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'field': {
                'proto_field': 'field',
                'is_message': True,
                'is_repeated': True,
            },
        }

    @dataclass
    class TimestampPicos(ProtoModel):
        """Generated model for TimestampPicos"""

        seconds: Optional[int] = None
        picos: Optional[int] = None

        _PROTO_CLASS: ClassVar[type] = public_value_pb2.ValueProto.TimestampPicos
        _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
            'seconds': {
                'proto_field': 'seconds',
                'is_message': False,
                'is_repeated': False,
            },
            'picos': {
                'proto_field': 'picos',
                'is_message': False,
                'is_repeated': False,
            },
        }


@dataclass
class ValueWithType(ProtoModel):
    """Generated model for ValueWithTypeProto"""

    type: Optional['Type'] = None
    value: Optional['Value'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_serialization_pb2.ValueWithTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class Variable(ProtoModel):
    """Generated model for Variable"""

    name: Optional[str] = None
    type: Optional['Type'] = None
    value: Optional['Value'] = None
    type_params: Optional['TypeParameters'] = None

    _PROTO_CLASS: ClassVar[type] = scripting_variable_pb2.Variable
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
        'type_params': {
            'proto_field': 'type_params',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class WireFormatAnnotationEmptyMessage(ProtoModel):
    """Generated model for WireFormatAnnotationEmptyMessage"""

    _PROTO_CLASS: ClassVar[type] = proto_wire_format_annotation_pb2.WireFormatAnnotationEmptyMessage
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ZetaSQLBuiltinFunctionOptions(ProtoModel):
    """Generated model for ZetaSQLBuiltinFunctionOptionsProto"""

    language_options: Optional['LanguageOptions'] = None
    include_function_ids: List['FunctionSignatureId'] = field(default_factory=list)
    exclude_function_ids: List['FunctionSignatureId'] = field(default_factory=list)
    enabled_rewrites_map_entry: List['EnabledRewrite'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = proto_options_pb2.ZetaSQLBuiltinFunctionOptionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'language_options': {
            'proto_field': 'language_options',
            'is_message': True,
            'is_repeated': False,
        },
        'include_function_ids': {
            'proto_field': 'include_function_ids',
            'is_message': False,
            'is_repeated': True,
            'is_enum': True,
            'enum_type_name': 'FunctionSignatureId',
        },
        'exclude_function_ids': {
            'proto_field': 'exclude_function_ids',
            'is_message': False,
            'is_repeated': True,
            'is_enum': True,
            'enum_type_name': 'FunctionSignatureId',
        },
        'enabled_rewrites_map_entry': {
            'proto_field': 'enabled_rewrites_map_entry',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTAfterMatchSkipClause(ASTNode):
    """Generated model for ASTAfterMatchSkipClauseProto"""

    target_type: Optional['ASTAfterMatchSkipClauseEnums.AfterMatchSkipTargetType'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAfterMatchSkipClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'target_type': {
            'proto_field': 'target_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'AfterMatchSkipTargetType',
            'enum_parent_message': 'ASTAfterMatchSkipClauseEnums',
        },
    }


@dataclass
class ASTAlias(ASTNode):
    """Generated model for ASTAliasProto"""

    identifier: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAliasProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifier': {
            'proto_field': 'identifier',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAliasedQuery(ASTNode):
    """Generated model for ASTAliasedQueryProto"""

    alias: Optional['ASTIdentifier'] = None
    query: Optional['ASTQuery'] = None
    modifiers: Optional['ASTAliasedQueryModifiers'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAliasedQueryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'modifiers': {
            'proto_field': 'modifiers',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAliasedQueryList(ASTNode):
    """Generated model for ASTAliasedQueryListProto"""

    aliased_query_list: List['ASTAliasedQuery'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAliasedQueryListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'aliased_query_list': {
            'proto_field': 'aliased_query_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTAliasedQueryModifiers(ASTNode):
    """Generated model for ASTAliasedQueryModifiersProto"""

    recursion_depth_modifier: Optional['ASTRecursionDepthModifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAliasedQueryModifiersProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'recursion_depth_modifier': {
            'proto_field': 'recursion_depth_modifier',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterAction(ASTNode):
    """Generated model for ASTAlterActionProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAlterActionList(ASTNode):
    """Generated model for ASTAlterActionListProto"""

    actions: List['ASTAlterAction'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterActionListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'actions': {
            'proto_field': 'actions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTAnySomeAllOp(ASTNode):
    """Generated model for ASTAnySomeAllOpProto"""

    op: Optional['ASTAnySomeAllOpEnums.Op'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAnySomeAllOpProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'op': {
            'proto_field': 'op',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Op',
            'enum_parent_message': 'ASTAnySomeAllOpEnums',
        },
    }


@dataclass
class ASTAssertRowsModified(ASTNode):
    """Generated model for ASTAssertRowsModifiedProto"""

    num_rows: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAssertRowsModifiedProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'num_rows': {
            'proto_field': 'num_rows',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAuxLoadDataFromFilesOptionsList(ASTNode):
    """Generated model for ASTAuxLoadDataFromFilesOptionsListProto"""

    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAuxLoadDataFromFilesOptionsListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAuxLoadDataPartitionsClause(ASTNode):
    """Generated model for ASTAuxLoadDataPartitionsClauseProto"""

    partition_filter: Optional['ASTExpression'] = None
    is_overwrite: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAuxLoadDataPartitionsClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'partition_filter': {
            'proto_field': 'partition_filter',
            'is_message': True,
            'is_repeated': False,
        },
        'is_overwrite': {
            'proto_field': 'is_overwrite',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTBracedConstructorField(ASTNode):
    """Generated model for ASTBracedConstructorFieldProto"""

    value: Optional['ASTBracedConstructorFieldValue'] = None
    comma_separated: Optional[bool] = None
    braced_constructor_lhs: Optional['ASTBracedConstructorLhs'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBracedConstructorFieldProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
        'comma_separated': {
            'proto_field': 'comma_separated',
            'is_message': False,
            'is_repeated': False,
        },
        'braced_constructor_lhs': {
            'proto_field': 'braced_constructor_lhs',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTBracedConstructorFieldValue(ASTNode):
    """Generated model for ASTBracedConstructorFieldValueProto"""

    expression: Optional['ASTExpression'] = None
    colon_prefixed: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBracedConstructorFieldValueProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'colon_prefixed': {
            'proto_field': 'colon_prefixed',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTChainedBaseExpr(ASTNode):
    """Generated model for ASTChainedBaseExprProto"""

    expr: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTChainedBaseExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTClampedBetweenModifier(ASTNode):
    """Generated model for ASTClampedBetweenModifierProto"""

    low: Optional['ASTExpression'] = None
    high: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTClampedBetweenModifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'low': {
            'proto_field': 'low',
            'is_message': True,
            'is_repeated': False,
        },
        'high': {
            'proto_field': 'high',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCloneDataSourceList(ASTNode):
    """Generated model for ASTCloneDataSourceListProto"""

    data_sources: List['ASTCloneDataSource'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCloneDataSourceListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'data_sources': {
            'proto_field': 'data_sources',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTClusterBy(ASTNode):
    """Generated model for ASTClusterByProto"""

    clustering_expressions: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTClusterByProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'clustering_expressions': {
            'proto_field': 'clustering_expressions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTCollate(ASTNode):
    """Generated model for ASTCollateProto"""

    collation_name: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCollateProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'collation_name': {
            'proto_field': 'collation_name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTColumnAttribute(ASTNode):
    """Generated model for ASTColumnAttributeProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTColumnAttributeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTColumnAttributeList(ASTNode):
    """Generated model for ASTColumnAttributeListProto"""

    values: List['ASTColumnAttribute'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTColumnAttributeListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'values': {
            'proto_field': 'values',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTColumnList(ASTNode):
    """Generated model for ASTColumnListProto"""

    identifiers: List['ASTIdentifier'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTColumnListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifiers': {
            'proto_field': 'identifiers',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTColumnPosition(ASTNode):
    """Generated model for ASTColumnPositionProto"""

    identifier: Optional['ASTIdentifier'] = None
    type: Optional['ASTColumnPositionEnums.RelativePositionType'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTColumnPositionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifier': {
            'proto_field': 'identifier',
            'is_message': True,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'RelativePositionType',
            'enum_parent_message': 'ASTColumnPositionEnums',
        },
    }


@dataclass
class ASTColumnSchema(ASTNode):
    """Generated model for ASTColumnSchemaProto"""

    type_parameters: Optional['ASTTypeParameterList'] = None
    generated_column_info: Optional['ASTGeneratedColumnInfo'] = None
    default_expression: Optional['ASTExpression'] = None
    collate: Optional['ASTCollate'] = None
    attributes: Optional['ASTColumnAttributeList'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTColumnSchemaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type_parameters': {
            'proto_field': 'type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'generated_column_info': {
            'proto_field': 'generated_column_info',
            'is_message': True,
            'is_repeated': False,
        },
        'default_expression': {
            'proto_field': 'default_expression',
            'is_message': True,
            'is_repeated': False,
        },
        'collate': {
            'proto_field': 'collate',
            'is_message': True,
            'is_repeated': False,
        },
        'attributes': {
            'proto_field': 'attributes',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTColumnWithOptions(ASTNode):
    """Generated model for ASTColumnWithOptionsProto"""

    name: Optional['ASTIdentifier'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTColumnWithOptionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTColumnWithOptionsList(ASTNode):
    """Generated model for ASTColumnWithOptionsListProto"""

    column_with_options: List['ASTColumnWithOptions'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTColumnWithOptionsListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_with_options': {
            'proto_field': 'column_with_options',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTConnectionClause(ASTNode):
    """Generated model for ASTConnectionClauseProto"""

    connection_path: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTConnectionClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'connection_path': {
            'proto_field': 'connection_path',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCube(ASTNode):
    """Generated model for ASTCubeProto"""

    expressions: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCubeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expressions': {
            'proto_field': 'expressions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTDescriptor(ASTNode):
    """Generated model for ASTDescriptorProto"""

    columns: Optional['ASTDescriptorColumnList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDescriptorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'columns': {
            'proto_field': 'columns',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDescriptorColumn(ASTNode):
    """Generated model for ASTDescriptorColumnProto"""

    name: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDescriptorColumnProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDescriptorColumnList(ASTNode):
    """Generated model for ASTDescriptorColumnListProto"""

    descriptor_column_list: List['ASTDescriptorColumn'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDescriptorColumnListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'descriptor_column_list': {
            'proto_field': 'descriptor_column_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTElseifClause(ASTNode):
    """Generated model for ASTElseifClauseProto"""

    condition: Optional['ASTExpression'] = None
    body: Optional['ASTStatementList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTElseifClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'condition': {
            'proto_field': 'condition',
            'is_message': True,
            'is_repeated': False,
        },
        'body': {
            'proto_field': 'body',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTElseifClauseList(ASTNode):
    """Generated model for ASTElseifClauseListProto"""

    elseif_clauses: List['ASTElseifClause'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTElseifClauseListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'elseif_clauses': {
            'proto_field': 'elseif_clauses',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTExceptionHandler(ASTNode):
    """Generated model for ASTExceptionHandlerProto"""

    statement_list: Optional['ASTStatementList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExceptionHandlerProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'statement_list': {
            'proto_field': 'statement_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTExceptionHandlerList(ASTNode):
    """Generated model for ASTExceptionHandlerListProto"""

    exception_handler_list: List['ASTExceptionHandler'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExceptionHandlerListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'exception_handler_list': {
            'proto_field': 'exception_handler_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTExecuteIntoClause(ASTNode):
    """Generated model for ASTExecuteIntoClauseProto"""

    identifiers: Optional['ASTIdentifierList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExecuteIntoClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifiers': {
            'proto_field': 'identifiers',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTExecuteUsingArgument(ASTNode):
    """Generated model for ASTExecuteUsingArgumentProto"""

    expression: Optional['ASTExpression'] = None
    alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExecuteUsingArgumentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTExecuteUsingClause(ASTNode):
    """Generated model for ASTExecuteUsingClauseProto"""

    arguments: List['ASTExecuteUsingArgument'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExecuteUsingClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'arguments': {
            'proto_field': 'arguments',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTExpression(ASTNode):
    """Generated model for ASTExpressionProto"""

    parenthesized: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'parenthesized': {
            'proto_field': 'parenthesized',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTExpressionWithOptAlias(ASTNode):
    """Generated model for ASTExpressionWithOptAliasProto"""

    expression: Optional['ASTExpression'] = None
    optional_alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExpressionWithOptAliasProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'optional_alias': {
            'proto_field': 'optional_alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTFilterFieldsArg(ASTNode):
    """Generated model for ASTFilterFieldsArgProto"""

    path_expression: Optional['ASTGeneralizedPathExpression'] = None
    filter_type: Optional['ASTFilterFieldsArgEnums.FilterType'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTFilterFieldsArgProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'path_expression': {
            'proto_field': 'path_expression',
            'is_message': True,
            'is_repeated': False,
        },
        'filter_type': {
            'proto_field': 'filter_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'FilterType',
            'enum_parent_message': 'ASTFilterFieldsArgEnums',
        },
    }


@dataclass
class ASTForSystemTime(ASTNode):
    """Generated model for ASTForSystemTimeProto"""

    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTForSystemTimeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTForeignKeyActions(ASTNode):
    """Generated model for ASTForeignKeyActionsProto"""

    update_action: Optional['ASTForeignKeyActionsEnums.Action'] = None
    delete_action: Optional['ASTForeignKeyActionsEnums.Action'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTForeignKeyActionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'update_action': {
            'proto_field': 'update_action',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Action',
            'enum_parent_message': 'ASTForeignKeyActionsEnums',
        },
        'delete_action': {
            'proto_field': 'delete_action',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Action',
            'enum_parent_message': 'ASTForeignKeyActionsEnums',
        },
    }


@dataclass
class ASTForeignKeyReference(ASTNode):
    """Generated model for ASTForeignKeyReferenceProto"""

    table_name: Optional['ASTPathExpression'] = None
    column_list: Optional['ASTColumnList'] = None
    actions: Optional['ASTForeignKeyActions'] = None
    match: Optional['ASTForeignKeyReferenceEnums.Match'] = None
    enforced: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTForeignKeyReferenceProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_name': {
            'proto_field': 'table_name',
            'is_message': True,
            'is_repeated': False,
        },
        'column_list': {
            'proto_field': 'column_list',
            'is_message': True,
            'is_repeated': False,
        },
        'actions': {
            'proto_field': 'actions',
            'is_message': True,
            'is_repeated': False,
        },
        'match': {
            'proto_field': 'match',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Match',
            'enum_parent_message': 'ASTForeignKeyReferenceEnums',
        },
        'enforced': {
            'proto_field': 'enforced',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTFormatClause(ASTNode):
    """Generated model for ASTFormatClauseProto"""

    format: Optional['ASTExpression'] = None
    time_zone_expr: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTFormatClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'format': {
            'proto_field': 'format',
            'is_message': True,
            'is_repeated': False,
        },
        'time_zone_expr': {
            'proto_field': 'time_zone_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTFromClause(ASTNode):
    """Generated model for ASTFromClauseProto"""

    table_expression: Optional['ASTTableExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTFromClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_expression': {
            'proto_field': 'table_expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTFunctionDeclaration(ASTNode):
    """Generated model for ASTFunctionDeclarationProto"""

    name: Optional['ASTPathExpression'] = None
    parameters: Optional['ASTFunctionParameters'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTFunctionDeclarationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'parameters': {
            'proto_field': 'parameters',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTFunctionParameter(ASTNode):
    """Generated model for ASTFunctionParameterProto"""

    name: Optional['ASTIdentifier'] = None
    type: Optional['ASTType'] = None
    templated_parameter_type: Optional['ASTTemplatedParameterType'] = None
    tvf_schema: Optional['ASTTVFSchema'] = None
    alias: Optional['ASTAlias'] = None
    default_value: Optional['ASTExpression'] = None
    procedure_parameter_mode: Optional['ASTFunctionParameterEnums.ProcedureParameterMode'] = None
    is_not_aggregate: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTFunctionParameterProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'templated_parameter_type': {
            'proto_field': 'templated_parameter_type',
            'is_message': True,
            'is_repeated': False,
        },
        'tvf_schema': {
            'proto_field': 'tvf_schema',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'default_value': {
            'proto_field': 'default_value',
            'is_message': True,
            'is_repeated': False,
        },
        'procedure_parameter_mode': {
            'proto_field': 'procedure_parameter_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ProcedureParameterMode',
            'enum_parent_message': 'ASTFunctionParameterEnums',
        },
        'is_not_aggregate': {
            'proto_field': 'is_not_aggregate',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTFunctionParameters(ASTNode):
    """Generated model for ASTFunctionParametersProto"""

    parameter_entries: List['ASTFunctionParameter'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTFunctionParametersProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'parameter_entries': {
            'proto_field': 'parameter_entries',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTFunctionTypeArgList(ASTNode):
    """Generated model for ASTFunctionTypeArgListProto"""

    args: List['ASTType'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTFunctionTypeArgListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'args': {
            'proto_field': 'args',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTGeneratedColumnInfo(ASTNode):
    """Generated model for ASTGeneratedColumnInfoProto"""

    expression: Optional['ASTExpression'] = None
    stored_mode: Optional['ASTGeneratedColumnInfoEnums.StoredMode'] = None
    generated_mode: Optional['ASTGeneratedColumnInfoEnums.GeneratedMode'] = None
    identity_column_info: Optional['ASTIdentityColumnInfo'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGeneratedColumnInfoProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'stored_mode': {
            'proto_field': 'stored_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'StoredMode',
            'enum_parent_message': 'ASTGeneratedColumnInfoEnums',
        },
        'generated_mode': {
            'proto_field': 'generated_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'GeneratedMode',
            'enum_parent_message': 'ASTGeneratedColumnInfoEnums',
        },
        'identity_column_info': {
            'proto_field': 'identity_column_info',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlLetVariableDefinition(ASTNode):
    """Generated model for ASTGqlLetVariableDefinitionProto"""

    identifier: Optional['ASTIdentifier'] = None
    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlLetVariableDefinitionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifier': {
            'proto_field': 'identifier',
            'is_message': True,
            'is_repeated': False,
        },
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlLetVariableDefinitionList(ASTNode):
    """Generated model for ASTGqlLetVariableDefinitionListProto"""

    variable_definitions: List['ASTGqlLetVariableDefinition'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlLetVariableDefinitionListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'variable_definitions': {
            'proto_field': 'variable_definitions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTGqlOperator(ASTNode):
    """Generated model for ASTGqlOperatorProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlOperatorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTGqlPage(ASTNode):
    """Generated model for ASTGqlPageProto"""

    offset: Optional['ASTGqlPageOffset'] = None
    limit: Optional['ASTGqlPageLimit'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlPageProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'offset': {
            'proto_field': 'offset',
            'is_message': True,
            'is_repeated': False,
        },
        'limit': {
            'proto_field': 'limit',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlPageLimit(ASTNode):
    """Generated model for ASTGqlPageLimitProto"""

    limit: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlPageLimitProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'limit': {
            'proto_field': 'limit',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlPageOffset(ASTNode):
    """Generated model for ASTGqlPageOffsetProto"""

    offset: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlPageOffsetProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'offset': {
            'proto_field': 'offset',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGranteeList(ASTNode):
    """Generated model for ASTGranteeListProto"""

    grantee_list: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGranteeListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'grantee_list': {
            'proto_field': 'grantee_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTGraphDerivedProperty(ASTNode):
    """Generated model for ASTGraphDerivedPropertyProto"""

    expression: Optional['ASTExpression'] = None
    alias: Optional['ASTAlias'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphDerivedPropertyProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphDerivedPropertyList(ASTNode):
    """Generated model for ASTGraphDerivedPropertyListProto"""

    properties: List['ASTGraphDerivedProperty'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphDerivedPropertyListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'properties': {
            'proto_field': 'properties',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTGraphDynamicLabel(ASTNode):
    """Generated model for ASTGraphDynamicLabelProto"""

    label: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphDynamicLabelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'label': {
            'proto_field': 'label',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphDynamicProperties(ASTNode):
    """Generated model for ASTGraphDynamicPropertiesProto"""

    properties: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphDynamicPropertiesProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'properties': {
            'proto_field': 'properties',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphElementLabelAndProperties(ASTNode):
    """Generated model for ASTGraphElementLabelAndPropertiesProto"""

    label_name: Optional['ASTIdentifier'] = None
    properties: Optional['ASTGraphProperties'] = None
    label_options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphElementLabelAndPropertiesProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'label_name': {
            'proto_field': 'label_name',
            'is_message': True,
            'is_repeated': False,
        },
        'properties': {
            'proto_field': 'properties',
            'is_message': True,
            'is_repeated': False,
        },
        'label_options_list': {
            'proto_field': 'label_options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphElementLabelAndPropertiesList(ASTNode):
    """Generated model for ASTGraphElementLabelAndPropertiesListProto"""

    label_properties_list: List['ASTGraphElementLabelAndProperties'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphElementLabelAndPropertiesListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'label_properties_list': {
            'proto_field': 'label_properties_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTGraphElementPatternFiller(ASTNode):
    """Generated model for ASTGraphElementPatternFillerProto"""

    variable_name: Optional['ASTIdentifier'] = None
    label_filter: Optional['ASTGraphLabelFilter'] = None
    where_clause: Optional['ASTWhereClause'] = None
    property_specification: Optional['ASTGraphPropertySpecification'] = None
    hint: Optional['ASTHint'] = None
    edge_cost: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphElementPatternFillerProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'variable_name': {
            'proto_field': 'variable_name',
            'is_message': True,
            'is_repeated': False,
        },
        'label_filter': {
            'proto_field': 'label_filter',
            'is_message': True,
            'is_repeated': False,
        },
        'where_clause': {
            'proto_field': 'where_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'property_specification': {
            'proto_field': 'property_specification',
            'is_message': True,
            'is_repeated': False,
        },
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'edge_cost': {
            'proto_field': 'edge_cost',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphElementTable(ASTNode):
    """Generated model for ASTGraphElementTableProto"""

    name: Optional['ASTPathExpression'] = None
    alias: Optional['ASTAlias'] = None
    key_list: Optional['ASTColumnList'] = None
    source_node_reference: Optional['ASTGraphNodeTableReference'] = None
    dest_node_reference: Optional['ASTGraphNodeTableReference'] = None
    label_properties_list: Optional['ASTGraphElementLabelAndPropertiesList'] = None
    dynamic_label: Optional['ASTGraphDynamicLabel'] = None
    dynamic_properties: Optional['ASTGraphDynamicProperties'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphElementTableProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'key_list': {
            'proto_field': 'key_list',
            'is_message': True,
            'is_repeated': False,
        },
        'source_node_reference': {
            'proto_field': 'source_node_reference',
            'is_message': True,
            'is_repeated': False,
        },
        'dest_node_reference': {
            'proto_field': 'dest_node_reference',
            'is_message': True,
            'is_repeated': False,
        },
        'label_properties_list': {
            'proto_field': 'label_properties_list',
            'is_message': True,
            'is_repeated': False,
        },
        'dynamic_label': {
            'proto_field': 'dynamic_label',
            'is_message': True,
            'is_repeated': False,
        },
        'dynamic_properties': {
            'proto_field': 'dynamic_properties',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphElementTableList(ASTNode):
    """Generated model for ASTGraphElementTableListProto"""

    element_tables: List['ASTGraphElementTable'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphElementTableListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'element_tables': {
            'proto_field': 'element_tables',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTGraphLabelExpression(ASTNode):
    """Generated model for ASTGraphLabelExpressionProto"""

    parenthesized: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphLabelExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'parenthesized': {
            'proto_field': 'parenthesized',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphLabelFilter(ASTNode):
    """Generated model for ASTGraphLabelFilterProto"""

    label_expression: Optional['ASTGraphLabelExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphLabelFilterProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'label_expression': {
            'proto_field': 'label_expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphLhsHint(ASTNode):
    """Generated model for ASTGraphLhsHintProto"""

    hint: Optional['ASTHint'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphLhsHintProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphNodeTableReference(ASTNode):
    """Generated model for ASTGraphNodeTableReferenceProto"""

    node_table_identifier: Optional['ASTIdentifier'] = None
    edge_table_columns: Optional['ASTColumnList'] = None
    node_table_columns: Optional['ASTColumnList'] = None
    node_reference_type: Optional['ASTGraphNodeTableReferenceEnums.NodeReferenceType'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphNodeTableReferenceProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'node_table_identifier': {
            'proto_field': 'node_table_identifier',
            'is_message': True,
            'is_repeated': False,
        },
        'edge_table_columns': {
            'proto_field': 'edge_table_columns',
            'is_message': True,
            'is_repeated': False,
        },
        'node_table_columns': {
            'proto_field': 'node_table_columns',
            'is_message': True,
            'is_repeated': False,
        },
        'node_reference_type': {
            'proto_field': 'node_reference_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'NodeReferenceType',
            'enum_parent_message': 'ASTGraphNodeTableReferenceEnums',
        },
    }


@dataclass
class ASTGraphPathBase(ASTNode):
    """Generated model for ASTGraphPathBaseProto"""

    quantifier: Optional['ASTQuantifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphPathBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'quantifier': {
            'proto_field': 'quantifier',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphPathMode(ASTNode):
    """Generated model for ASTGraphPathModeProto"""

    path_mode: Optional['ASTGraphPathModeEnums.PathMode'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphPathModeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'path_mode': {
            'proto_field': 'path_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'PathMode',
            'enum_parent_message': 'ASTGraphPathModeEnums',
        },
    }


@dataclass
class ASTGraphPathSearchPrefix(ASTNode):
    """Generated model for ASTGraphPathSearchPrefixProto"""

    type: Optional['ASTGraphPathSearchPrefixEnums.PathSearchPrefixType'] = None
    path_count: Optional['ASTGraphPathSearchPrefixCount'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphPathSearchPrefixProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type': {
            'proto_field': 'type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'PathSearchPrefixType',
            'enum_parent_message': 'ASTGraphPathSearchPrefixEnums',
        },
        'path_count': {
            'proto_field': 'path_count',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphPathSearchPrefixCount(ASTNode):
    """Generated model for ASTGraphPathSearchPrefixCountProto"""

    path_count: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphPathSearchPrefixCountProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'path_count': {
            'proto_field': 'path_count',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphPattern(ASTNode):
    """Generated model for ASTGraphPatternProto"""

    paths: List['ASTGraphPathPattern'] = field(default_factory=list)
    where_clause: Optional['ASTWhereClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphPatternProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'paths': {
            'proto_field': 'paths',
            'is_message': True,
            'is_repeated': True,
        },
        'where_clause': {
            'proto_field': 'where_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphProperties(ASTNode):
    """Generated model for ASTGraphPropertiesProto"""

    no_properties: Optional[bool] = None
    derived_property_list: Optional['ASTGraphDerivedPropertyList'] = None
    all_except_columns: Optional['ASTColumnList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphPropertiesProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'no_properties': {
            'proto_field': 'no_properties',
            'is_message': False,
            'is_repeated': False,
        },
        'derived_property_list': {
            'proto_field': 'derived_property_list',
            'is_message': True,
            'is_repeated': False,
        },
        'all_except_columns': {
            'proto_field': 'all_except_columns',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphPropertyNameAndValue(ASTNode):
    """Generated model for ASTGraphPropertyNameAndValueProto"""

    property_name: Optional['ASTIdentifier'] = None
    value: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphPropertyNameAndValueProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'property_name': {
            'proto_field': 'property_name',
            'is_message': True,
            'is_repeated': False,
        },
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphPropertySpecification(ASTNode):
    """Generated model for ASTGraphPropertySpecificationProto"""

    property_name_and_value: List['ASTGraphPropertyNameAndValue'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphPropertySpecificationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'property_name_and_value': {
            'proto_field': 'property_name_and_value',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTGraphRhsHint(ASTNode):
    """Generated model for ASTGraphRhsHintProto"""

    hint: Optional['ASTHint'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphRhsHintProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGroupBy(ASTNode):
    """Generated model for ASTGroupByProto"""

    hint: Optional['ASTHint'] = None
    all: Optional['ASTGroupByAll'] = None
    grouping_items: List['ASTGroupingItem'] = field(default_factory=list)
    and_order_by: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGroupByProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'all': {
            'proto_field': 'all',
            'is_message': True,
            'is_repeated': False,
        },
        'grouping_items': {
            'proto_field': 'grouping_items',
            'is_message': True,
            'is_repeated': True,
        },
        'and_order_by': {
            'proto_field': 'and_order_by',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGroupByAll(ASTNode):
    """Generated model for ASTGroupByAllProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGroupByAllProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTGroupingItem(ASTNode):
    """Generated model for ASTGroupingItemProto"""

    expression: Optional['ASTExpression'] = None
    rollup: Optional['ASTRollup'] = None
    cube: Optional['ASTCube'] = None
    grouping_set_list: Optional['ASTGroupingSetList'] = None
    alias: Optional['ASTAlias'] = None
    grouping_item_order: Optional['ASTGroupingItemOrder'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGroupingItemProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'rollup': {
            'proto_field': 'rollup',
            'is_message': True,
            'is_repeated': False,
        },
        'cube': {
            'proto_field': 'cube',
            'is_message': True,
            'is_repeated': False,
        },
        'grouping_set_list': {
            'proto_field': 'grouping_set_list',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'grouping_item_order': {
            'proto_field': 'grouping_item_order',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGroupingItemOrder(ASTNode):
    """Generated model for ASTGroupingItemOrderProto"""

    ordering_spec: Optional['ASTOrderingExpressionEnums.OrderingSpec'] = None
    null_order: Optional['ASTNullOrder'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGroupingItemOrderProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ordering_spec': {
            'proto_field': 'ordering_spec',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'OrderingSpec',
            'enum_parent_message': 'ASTOrderingExpressionEnums',
        },
        'null_order': {
            'proto_field': 'null_order',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGroupingSet(ASTNode):
    """Generated model for ASTGroupingSetProto"""

    expression: Optional['ASTExpression'] = None
    rollup: Optional['ASTRollup'] = None
    cube: Optional['ASTCube'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGroupingSetProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'rollup': {
            'proto_field': 'rollup',
            'is_message': True,
            'is_repeated': False,
        },
        'cube': {
            'proto_field': 'cube',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGroupingSetList(ASTNode):
    """Generated model for ASTGroupingSetListProto"""

    grouping_sets: List['ASTGroupingSet'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGroupingSetListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'grouping_sets': {
            'proto_field': 'grouping_sets',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTHaving(ASTNode):
    """Generated model for ASTHavingProto"""

    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTHavingProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTHavingModifier(ASTNode):
    """Generated model for ASTHavingModifierProto"""

    expr: Optional['ASTExpression'] = None
    modifier_kind: Optional['ASTHavingModifierEnums.ModifierKind'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTHavingModifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'modifier_kind': {
            'proto_field': 'modifier_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ModifierKind',
            'enum_parent_message': 'ASTHavingModifierEnums',
        },
    }


@dataclass
class ASTHint(ASTNode):
    """Generated model for ASTHintProto"""

    num_shards_hint: Optional['ASTIntLiteral'] = None
    hint_entries: List['ASTHintEntry'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTHintProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'num_shards_hint': {
            'proto_field': 'num_shards_hint',
            'is_message': True,
            'is_repeated': False,
        },
        'hint_entries': {
            'proto_field': 'hint_entries',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTHintEntry(ASTNode):
    """Generated model for ASTHintEntryProto"""

    qualifier: Optional['ASTIdentifier'] = None
    name: Optional['ASTIdentifier'] = None
    value: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTHintEntryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'qualifier': {
            'proto_field': 'qualifier',
            'is_message': True,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTIdentifierList(ASTNode):
    """Generated model for ASTIdentifierListProto"""

    identifier_list: List['ASTIdentifier'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIdentifierListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifier_list': {
            'proto_field': 'identifier_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTIdentityColumnIncrementBy(ASTNode):
    """Generated model for ASTIdentityColumnIncrementByProto"""

    value: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIdentityColumnIncrementByProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTIdentityColumnInfo(ASTNode):
    """Generated model for ASTIdentityColumnInfoProto"""

    start_with_value: Optional['ASTIdentityColumnStartWith'] = None
    increment_by_value: Optional['ASTIdentityColumnIncrementBy'] = None
    max_value: Optional['ASTIdentityColumnMaxValue'] = None
    min_value: Optional['ASTIdentityColumnMinValue'] = None
    cycling_enabled: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIdentityColumnInfoProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'start_with_value': {
            'proto_field': 'start_with_value',
            'is_message': True,
            'is_repeated': False,
        },
        'increment_by_value': {
            'proto_field': 'increment_by_value',
            'is_message': True,
            'is_repeated': False,
        },
        'max_value': {
            'proto_field': 'max_value',
            'is_message': True,
            'is_repeated': False,
        },
        'min_value': {
            'proto_field': 'min_value',
            'is_message': True,
            'is_repeated': False,
        },
        'cycling_enabled': {
            'proto_field': 'cycling_enabled',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTIdentityColumnMaxValue(ASTNode):
    """Generated model for ASTIdentityColumnMaxValueProto"""

    value: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIdentityColumnMaxValueProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTIdentityColumnMinValue(ASTNode):
    """Generated model for ASTIdentityColumnMinValueProto"""

    value: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIdentityColumnMinValueProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTIdentityColumnStartWith(ASTNode):
    """Generated model for ASTIdentityColumnStartWithProto"""

    value: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIdentityColumnStartWithProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTInList(ASTNode):
    """Generated model for ASTInListProto"""

    list: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTInListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'list': {
            'proto_field': 'list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTIndexItemList(ASTNode):
    """Generated model for ASTIndexItemListProto"""

    ordering_expressions: List['ASTOrderingExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIndexItemListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'ordering_expressions': {
            'proto_field': 'ordering_expressions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTIndexStoringExpressionList(ASTNode):
    """Generated model for ASTIndexStoringExpressionListProto"""

    expressions: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIndexStoringExpressionListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expressions': {
            'proto_field': 'expressions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTIndexUnnestExpressionList(ASTNode):
    """Generated model for ASTIndexUnnestExpressionListProto"""

    unnest_expressions: List['ASTUnnestExpressionWithOptAliasAndOffset'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIndexUnnestExpressionListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'unnest_expressions': {
            'proto_field': 'unnest_expressions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTInputOutputClause(ASTNode):
    """Generated model for ASTInputOutputClauseProto"""

    input: Optional['ASTTableElementList'] = None
    output: Optional['ASTTableElementList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTInputOutputClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input': {
            'proto_field': 'input',
            'is_message': True,
            'is_repeated': False,
        },
        'output': {
            'proto_field': 'output',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTInsertValuesRow(ASTNode):
    """Generated model for ASTInsertValuesRowProto"""

    values: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTInsertValuesRowProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'values': {
            'proto_field': 'values',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTInsertValuesRowList(ASTNode):
    """Generated model for ASTInsertValuesRowListProto"""

    rows: List['ASTInsertValuesRow'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTInsertValuesRowListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'rows': {
            'proto_field': 'rows',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTIntoAlias(ASTNode):
    """Generated model for ASTIntoAliasProto"""

    identifier: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIntoAliasProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifier': {
            'proto_field': 'identifier',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTLabel(ASTNode):
    """Generated model for ASTLabelProto"""

    name: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTLabelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTLimit(ASTNode):
    """Generated model for ASTLimitProto"""

    all: Optional['ASTLimitAll'] = None
    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTLimitProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'all': {
            'proto_field': 'all',
            'is_message': True,
            'is_repeated': False,
        },
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTLimitAll(ASTNode):
    """Generated model for ASTLimitAllProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTLimitAllProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTLimitOffset(ASTNode):
    """Generated model for ASTLimitOffsetProto"""

    limit: Optional['ASTLimit'] = None
    offset: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTLimitOffsetProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'limit': {
            'proto_field': 'limit',
            'is_message': True,
            'is_repeated': False,
        },
        'offset': {
            'proto_field': 'offset',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTLocation(ASTNode):
    """Generated model for ASTLocationProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTLocationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTLockMode(ASTNode):
    """Generated model for ASTLockModeProto"""

    strength: Optional['ASTLockModeEnums.LockStrengthSpec'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTLockModeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'strength': {
            'proto_field': 'strength',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'LockStrengthSpec',
            'enum_parent_message': 'ASTLockModeEnums',
        },
    }


@dataclass
class ASTMergeAction(ASTNode):
    """Generated model for ASTMergeActionProto"""

    insert_column_list: Optional['ASTColumnList'] = None
    insert_row: Optional['ASTInsertValuesRow'] = None
    update_item_list: Optional['ASTUpdateItemList'] = None
    action_type: Optional['ASTMergeActionEnums.ActionType'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTMergeActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'insert_column_list': {
            'proto_field': 'insert_column_list',
            'is_message': True,
            'is_repeated': False,
        },
        'insert_row': {
            'proto_field': 'insert_row',
            'is_message': True,
            'is_repeated': False,
        },
        'update_item_list': {
            'proto_field': 'update_item_list',
            'is_message': True,
            'is_repeated': False,
        },
        'action_type': {
            'proto_field': 'action_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ActionType',
            'enum_parent_message': 'ASTMergeActionEnums',
        },
    }


@dataclass
class ASTMergeWhenClause(ASTNode):
    """Generated model for ASTMergeWhenClauseProto"""

    search_condition: Optional['ASTExpression'] = None
    action: Optional['ASTMergeAction'] = None
    match_type: Optional['ASTMergeWhenClauseEnums.MatchType'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTMergeWhenClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'search_condition': {
            'proto_field': 'search_condition',
            'is_message': True,
            'is_repeated': False,
        },
        'action': {
            'proto_field': 'action',
            'is_message': True,
            'is_repeated': False,
        },
        'match_type': {
            'proto_field': 'match_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'MatchType',
            'enum_parent_message': 'ASTMergeWhenClauseEnums',
        },
    }


@dataclass
class ASTMergeWhenClauseList(ASTNode):
    """Generated model for ASTMergeWhenClauseListProto"""

    clause_list: List['ASTMergeWhenClause'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTMergeWhenClauseListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'clause_list': {
            'proto_field': 'clause_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTModelClause(ASTNode):
    """Generated model for ASTModelClauseProto"""

    model_path: Optional['ASTPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTModelClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'model_path': {
            'proto_field': 'model_path',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTNewConstructorArg(ASTNode):
    """Generated model for ASTNewConstructorArgProto"""

    expression: Optional['ASTExpression'] = None
    optional_identifier: Optional['ASTIdentifier'] = None
    optional_path_expression: Optional['ASTPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTNewConstructorArgProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'optional_identifier': {
            'proto_field': 'optional_identifier',
            'is_message': True,
            'is_repeated': False,
        },
        'optional_path_expression': {
            'proto_field': 'optional_path_expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTNullOrder(ASTNode):
    """Generated model for ASTNullOrderProto"""

    nulls_first: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTNullOrderProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'nulls_first': {
            'proto_field': 'nulls_first',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTOnClause(ASTNode):
    """Generated model for ASTOnClauseProto"""

    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTOnClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTOnConflictClause(ASTNode):
    """Generated model for ASTOnConflictClauseProto"""

    conflict_action: Optional['ASTOnConflictClauseEnums.ConflictAction'] = None
    conflict_target: Optional['ASTColumnList'] = None
    unique_constraint_name: Optional['ASTIdentifier'] = None
    update_item_list: Optional['ASTUpdateItemList'] = None
    update_where_clause: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTOnConflictClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'conflict_action': {
            'proto_field': 'conflict_action',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ConflictAction',
            'enum_parent_message': 'ASTOnConflictClauseEnums',
        },
        'conflict_target': {
            'proto_field': 'conflict_target',
            'is_message': True,
            'is_repeated': False,
        },
        'unique_constraint_name': {
            'proto_field': 'unique_constraint_name',
            'is_message': True,
            'is_repeated': False,
        },
        'update_item_list': {
            'proto_field': 'update_item_list',
            'is_message': True,
            'is_repeated': False,
        },
        'update_where_clause': {
            'proto_field': 'update_where_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTOnOrUsingClauseList(ASTNode):
    """Generated model for ASTOnOrUsingClauseListProto"""

    on_or_using_clause_list: List['ASTNode'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTOnOrUsingClauseListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'on_or_using_clause_list': {
            'proto_field': 'on_or_using_clause_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTOptionsEntry(ASTNode):
    """Generated model for ASTOptionsEntryProto"""

    name: Optional['ASTIdentifier'] = None
    value: Optional['ASTExpression'] = None
    assignment_op: Optional['ASTOptionsEntryEnums.AssignmentOp'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTOptionsEntryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
        'assignment_op': {
            'proto_field': 'assignment_op',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'AssignmentOp',
            'enum_parent_message': 'ASTOptionsEntryEnums',
        },
    }


@dataclass
class ASTOptionsList(ASTNode):
    """Generated model for ASTOptionsListProto"""

    options_entries: List['ASTOptionsEntry'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTOptionsListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'options_entries': {
            'proto_field': 'options_entries',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTOrderBy(ASTNode):
    """Generated model for ASTOrderByProto"""

    hint: Optional['ASTHint'] = None
    ordering_expressions: List['ASTOrderingExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTOrderByProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'ordering_expressions': {
            'proto_field': 'ordering_expressions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTOrderingExpression(ASTNode):
    """Generated model for ASTOrderingExpressionProto"""

    expression: Optional['ASTExpression'] = None
    collate: Optional['ASTCollate'] = None
    null_order: Optional['ASTNullOrder'] = None
    ordering_spec: Optional['ASTOrderingExpressionEnums.OrderingSpec'] = None
    option_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTOrderingExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'collate': {
            'proto_field': 'collate',
            'is_message': True,
            'is_repeated': False,
        },
        'null_order': {
            'proto_field': 'null_order',
            'is_message': True,
            'is_repeated': False,
        },
        'ordering_spec': {
            'proto_field': 'ordering_spec',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'OrderingSpec',
            'enum_parent_message': 'ASTOrderingExpressionEnums',
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPartitionBy(ASTNode):
    """Generated model for ASTPartitionByProto"""

    hint: Optional['ASTHint'] = None
    partitioning_expressions: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPartitionByProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'partitioning_expressions': {
            'proto_field': 'partitioning_expressions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTPathExpressionList(ASTNode):
    """Generated model for ASTPathExpressionListProto"""

    path_expression_list: List['ASTPathExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPathExpressionListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'path_expression_list': {
            'proto_field': 'path_expression_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTPipeOperator(ASTNode):
    """Generated model for ASTPipeOperatorProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeOperatorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTPipeSetItem(ASTNode):
    """Generated model for ASTPipeSetItemProto"""

    column: Optional['ASTIdentifier'] = None
    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeSetItemProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': False,
        },
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPivotExpression(ASTNode):
    """Generated model for ASTPivotExpressionProto"""

    expression: Optional['ASTExpression'] = None
    alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPivotExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPivotExpressionList(ASTNode):
    """Generated model for ASTPivotExpressionListProto"""

    expressions: List['ASTPivotExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPivotExpressionListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expressions': {
            'proto_field': 'expressions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTPivotValue(ASTNode):
    """Generated model for ASTPivotValueProto"""

    value: Optional['ASTExpression'] = None
    alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPivotValueProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPivotValueList(ASTNode):
    """Generated model for ASTPivotValueListProto"""

    values: List['ASTPivotValue'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPivotValueListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'values': {
            'proto_field': 'values',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTPostfixTableOperator(ASTNode):
    """Generated model for ASTPostfixTableOperatorProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPostfixTableOperatorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTPrimaryKeyElement(ASTNode):
    """Generated model for ASTPrimaryKeyElementProto"""

    column: Optional['ASTIdentifier'] = None
    ordering_spec: Optional['ASTOrderingExpressionEnums.OrderingSpec'] = None
    null_order: Optional['ASTNullOrder'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPrimaryKeyElementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': False,
        },
        'ordering_spec': {
            'proto_field': 'ordering_spec',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'OrderingSpec',
            'enum_parent_message': 'ASTOrderingExpressionEnums',
        },
        'null_order': {
            'proto_field': 'null_order',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPrimaryKeyElementList(ASTNode):
    """Generated model for ASTPrimaryKeyElementListProto"""

    elements: List['ASTPrimaryKeyElement'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPrimaryKeyElementListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'elements': {
            'proto_field': 'elements',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTPrivilege(ASTNode):
    """Generated model for ASTPrivilegeProto"""

    privilege_action: Optional['ASTIdentifier'] = None
    paths: Optional['ASTPathExpressionList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPrivilegeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'privilege_action': {
            'proto_field': 'privilege_action',
            'is_message': True,
            'is_repeated': False,
        },
        'paths': {
            'proto_field': 'paths',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPrivileges(ASTNode):
    """Generated model for ASTPrivilegesProto"""

    privileges: List['ASTPrivilege'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPrivilegesProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'privileges': {
            'proto_field': 'privileges',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTQualify(ASTNode):
    """Generated model for ASTQualifyProto"""

    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTQualifyProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTQuantifier(ASTNode):
    """Generated model for ASTQuantifierProto"""

    is_reluctant: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTQuantifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_reluctant': {
            'proto_field': 'is_reluctant',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTQuantifierBound(ASTNode):
    """Generated model for ASTQuantifierBoundProto"""

    bound: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTQuantifierBoundProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'bound': {
            'proto_field': 'bound',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTQueryExpression(ASTNode):
    """Generated model for ASTQueryExpressionProto"""

    parenthesized: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTQueryExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'parenthesized': {
            'proto_field': 'parenthesized',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRecursionDepthModifier(ASTNode):
    """Generated model for ASTRecursionDepthModifierProto"""

    alias: Optional['ASTAlias'] = None
    lower_bound: Optional['ASTIntOrUnbounded'] = None
    upper_bound: Optional['ASTIntOrUnbounded'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRecursionDepthModifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'lower_bound': {
            'proto_field': 'lower_bound',
            'is_message': True,
            'is_repeated': False,
        },
        'upper_bound': {
            'proto_field': 'upper_bound',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRepeatableClause(ASTNode):
    """Generated model for ASTRepeatableClauseProto"""

    argument: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRepeatableClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'argument': {
            'proto_field': 'argument',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTReplaceFieldsArg(ASTNode):
    """Generated model for ASTReplaceFieldsArgProto"""

    expression: Optional['ASTExpression'] = None
    path_expression: Optional['ASTGeneralizedPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTReplaceFieldsArgProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'path_expression': {
            'proto_field': 'path_expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTReturningClause(ASTNode):
    """Generated model for ASTReturningClauseProto"""

    select_list: Optional['ASTSelectList'] = None
    action_alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTReturningClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'select_list': {
            'proto_field': 'select_list',
            'is_message': True,
            'is_repeated': False,
        },
        'action_alias': {
            'proto_field': 'action_alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRollup(ASTNode):
    """Generated model for ASTRollupProto"""

    expressions: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRollupProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expressions': {
            'proto_field': 'expressions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTRowPatternExpression(ASTNode):
    """Generated model for ASTRowPatternExpressionProto"""

    parenthesized: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRowPatternExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'parenthesized': {
            'proto_field': 'parenthesized',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSampleSize(ASTNode):
    """Generated model for ASTSampleSizeProto"""

    size: Optional['ASTExpression'] = None
    partition_by: Optional['ASTPartitionBy'] = None
    unit: Optional['ASTSampleSizeEnums.Unit'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSampleSizeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'size': {
            'proto_field': 'size',
            'is_message': True,
            'is_repeated': False,
        },
        'partition_by': {
            'proto_field': 'partition_by',
            'is_message': True,
            'is_repeated': False,
        },
        'unit': {
            'proto_field': 'unit',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Unit',
            'enum_parent_message': 'ASTSampleSizeEnums',
        },
    }


@dataclass
class ASTSampleSuffix(ASTNode):
    """Generated model for ASTSampleSuffixProto"""

    weight: Optional['ASTWithWeight'] = None
    repeat: Optional['ASTRepeatableClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSampleSuffixProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'weight': {
            'proto_field': 'weight',
            'is_message': True,
            'is_repeated': False,
        },
        'repeat': {
            'proto_field': 'repeat',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTScript(ASTNode):
    """Generated model for ASTScriptProto"""

    statement_list_node: Optional['ASTStatementList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTScriptProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'statement_list_node': {
            'proto_field': 'statement_list_node',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSelectAs(ASTNode):
    """Generated model for ASTSelectAsProto"""

    type_name: Optional['ASTPathExpression'] = None
    as_mode: Optional['ASTSelectAsEnums.AsMode'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSelectAsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type_name': {
            'proto_field': 'type_name',
            'is_message': True,
            'is_repeated': False,
        },
        'as_mode': {
            'proto_field': 'as_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'AsMode',
            'enum_parent_message': 'ASTSelectAsEnums',
        },
    }


@dataclass
class ASTSelectColumn(ASTNode):
    """Generated model for ASTSelectColumnProto"""

    expression: Optional['ASTExpression'] = None
    alias: Optional['ASTAlias'] = None
    grouping_item_order: Optional['ASTGroupingItemOrder'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSelectColumnProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'grouping_item_order': {
            'proto_field': 'grouping_item_order',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSelectList(ASTNode):
    """Generated model for ASTSelectListProto"""

    columns: List['ASTSelectColumn'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSelectListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'columns': {
            'proto_field': 'columns',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTSelectWith(ASTNode):
    """Generated model for ASTSelectWithProto"""

    identifier: Optional['ASTIdentifier'] = None
    options: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSelectWithProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifier': {
            'proto_field': 'identifier',
            'is_message': True,
            'is_repeated': False,
        },
        'options': {
            'proto_field': 'options',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSetOperationAllOrDistinct(ASTNode):
    """Generated model for ASTSetOperationAllOrDistinctProto"""

    value: Optional['ASTSetOperationEnums.AllOrDistinct'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSetOperationAllOrDistinctProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'AllOrDistinct',
            'enum_parent_message': 'ASTSetOperationEnums',
        },
    }


@dataclass
class ASTSetOperationColumnMatchMode(ASTNode):
    """Generated model for ASTSetOperationColumnMatchModeProto"""

    value: Optional['ASTSetOperationEnums.ColumnMatchMode'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSetOperationColumnMatchModeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ColumnMatchMode',
            'enum_parent_message': 'ASTSetOperationEnums',
        },
    }


@dataclass
class ASTSetOperationColumnPropagationMode(ASTNode):
    """Generated model for ASTSetOperationColumnPropagationModeProto"""

    value: Optional['ASTSetOperationEnums.ColumnPropagationMode'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSetOperationColumnPropagationModeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ColumnPropagationMode',
            'enum_parent_message': 'ASTSetOperationEnums',
        },
    }


@dataclass
class ASTSetOperationMetadata(ASTNode):
    """Generated model for ASTSetOperationMetadataProto"""

    op_type: Optional['ASTSetOperationType'] = None
    all_or_distinct: Optional['ASTSetOperationAllOrDistinct'] = None
    hint: Optional['ASTHint'] = None
    column_match_mode: Optional['ASTSetOperationColumnMatchMode'] = None
    column_propagation_mode: Optional['ASTSetOperationColumnPropagationMode'] = None
    corresponding_by_column_list: Optional['ASTColumnList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSetOperationMetadataProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'op_type': {
            'proto_field': 'op_type',
            'is_message': True,
            'is_repeated': False,
        },
        'all_or_distinct': {
            'proto_field': 'all_or_distinct',
            'is_message': True,
            'is_repeated': False,
        },
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'column_match_mode': {
            'proto_field': 'column_match_mode',
            'is_message': True,
            'is_repeated': False,
        },
        'column_propagation_mode': {
            'proto_field': 'column_propagation_mode',
            'is_message': True,
            'is_repeated': False,
        },
        'corresponding_by_column_list': {
            'proto_field': 'corresponding_by_column_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSetOperationMetadataList(ASTNode):
    """Generated model for ASTSetOperationMetadataListProto"""

    set_operation_metadata_list: List['ASTSetOperationMetadata'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSetOperationMetadataListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'set_operation_metadata_list': {
            'proto_field': 'set_operation_metadata_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTSetOperationType(ASTNode):
    """Generated model for ASTSetOperationTypeProto"""

    value: Optional['ASTSetOperationEnums.OperationType'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSetOperationTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'OperationType',
            'enum_parent_message': 'ASTSetOperationEnums',
        },
    }


@dataclass
class ASTSpannerInterleaveClause(ASTNode):
    """Generated model for ASTSpannerInterleaveClauseProto"""

    table_name: Optional['ASTPathExpression'] = None
    type: Optional['ASTSpannerInterleaveClauseEnums.Type'] = None
    action: Optional['ASTForeignKeyActionsEnums.Action'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSpannerInterleaveClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_name': {
            'proto_field': 'table_name',
            'is_message': True,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Type',
            'enum_parent_message': 'ASTSpannerInterleaveClauseEnums',
        },
        'action': {
            'proto_field': 'action',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Action',
            'enum_parent_message': 'ASTForeignKeyActionsEnums',
        },
    }


@dataclass
class ASTSpannerTableOptions(ASTNode):
    """Generated model for ASTSpannerTableOptionsProto"""

    primary_key: Optional['ASTPrimaryKey'] = None
    interleave_clause: Optional['ASTSpannerInterleaveClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSpannerTableOptionsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'primary_key': {
            'proto_field': 'primary_key',
            'is_message': True,
            'is_repeated': False,
        },
        'interleave_clause': {
            'proto_field': 'interleave_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSqlFunctionBody(ASTNode):
    """Generated model for ASTSqlFunctionBodyProto"""

    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSqlFunctionBodyProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTStarExceptList(ASTNode):
    """Generated model for ASTStarExceptListProto"""

    identifiers: List['ASTIdentifier'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStarExceptListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifiers': {
            'proto_field': 'identifiers',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTStarModifiers(ASTNode):
    """Generated model for ASTStarModifiersProto"""

    except_list: Optional['ASTStarExceptList'] = None
    replace_items: List['ASTStarReplaceItem'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStarModifiersProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'except_list': {
            'proto_field': 'except_list',
            'is_message': True,
            'is_repeated': False,
        },
        'replace_items': {
            'proto_field': 'replace_items',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTStarReplaceItem(ASTNode):
    """Generated model for ASTStarReplaceItemProto"""

    expression: Optional['ASTExpression'] = None
    alias: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStarReplaceItemProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTStatement(ASTNode):
    """Generated model for ASTStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTStatementList(ASTNode):
    """Generated model for ASTStatementListProto"""

    statement_list: List['ASTStatement'] = field(default_factory=list)
    variable_declarations_allowed: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStatementListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'statement_list': {
            'proto_field': 'statement_list',
            'is_message': True,
            'is_repeated': True,
        },
        'variable_declarations_allowed': {
            'proto_field': 'variable_declarations_allowed',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTStructColumnField(ASTNode):
    """Generated model for ASTStructColumnFieldProto"""

    name: Optional['ASTIdentifier'] = None
    schema: Optional['ASTColumnSchema'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStructColumnFieldProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'schema': {
            'proto_field': 'schema',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTStructConstructorArg(ASTNode):
    """Generated model for ASTStructConstructorArgProto"""

    expression: Optional['ASTExpression'] = None
    alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStructConstructorArgProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTStructField(ASTNode):
    """Generated model for ASTStructFieldProto"""

    name: Optional['ASTIdentifier'] = None
    type: Optional['ASTType'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStructFieldProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSubpipeline(ASTNode):
    """Generated model for ASTSubpipelineProto"""

    pipe_operator_list: List['ASTPipeOperator'] = field(default_factory=list)
    parenthesized: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSubpipelineProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'pipe_operator_list': {
            'proto_field': 'pipe_operator_list',
            'is_message': True,
            'is_repeated': True,
        },
        'parenthesized': {
            'proto_field': 'parenthesized',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTTVFArgument(ASTNode):
    """Generated model for ASTTVFArgumentProto"""

    expr: Optional['ASTExpression'] = None
    table_clause: Optional['ASTTableClause'] = None
    model_clause: Optional['ASTModelClause'] = None
    connection_clause: Optional['ASTConnectionClause'] = None
    desc: Optional['ASTDescriptor'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTVFArgumentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'table_clause': {
            'proto_field': 'table_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'model_clause': {
            'proto_field': 'model_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'connection_clause': {
            'proto_field': 'connection_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'desc': {
            'proto_field': 'desc',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTTVFSchema(ASTNode):
    """Generated model for ASTTVFSchemaProto"""

    columns: List['ASTTVFSchemaColumn'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTVFSchemaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'columns': {
            'proto_field': 'columns',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTTVFSchemaColumn(ASTNode):
    """Generated model for ASTTVFSchemaColumnProto"""

    name: Optional['ASTIdentifier'] = None
    type: Optional['ASTType'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTVFSchemaColumnProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTTableAndColumnInfo(ASTNode):
    """Generated model for ASTTableAndColumnInfoProto"""

    table_name: Optional['ASTPathExpression'] = None
    column_list: Optional['ASTColumnList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTableAndColumnInfoProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_name': {
            'proto_field': 'table_name',
            'is_message': True,
            'is_repeated': False,
        },
        'column_list': {
            'proto_field': 'column_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTTableAndColumnInfoList(ASTNode):
    """Generated model for ASTTableAndColumnInfoListProto"""

    table_and_column_info_entries: List['ASTTableAndColumnInfo'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTableAndColumnInfoListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_and_column_info_entries': {
            'proto_field': 'table_and_column_info_entries',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTTableElement(ASTNode):
    """Generated model for ASTTableElementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTableElementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTTableElementList(ASTNode):
    """Generated model for ASTTableElementListProto"""

    elements: List['ASTTableElement'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTableElementListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'elements': {
            'proto_field': 'elements',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTTableExpression(ASTNode):
    """Generated model for ASTTableExpressionProto"""

    postfix_operators: List['ASTPostfixTableOperator'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTableExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'postfix_operators': {
            'proto_field': 'postfix_operators',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTTemplatedParameterType(ASTNode):
    """Generated model for ASTTemplatedParameterTypeProto"""

    kind: Optional['ASTTemplatedParameterTypeEnums.TemplatedTypeKind'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTemplatedParameterTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'kind': {
            'proto_field': 'kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'TemplatedTypeKind',
            'enum_parent_message': 'ASTTemplatedParameterTypeEnums',
        },
    }


@dataclass
class ASTTransactionMode(ASTNode):
    """Generated model for ASTTransactionModeProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTransactionModeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTTransactionModeList(ASTNode):
    """Generated model for ASTTransactionModeListProto"""

    elements: List['ASTTransactionMode'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTransactionModeListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'elements': {
            'proto_field': 'elements',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTTransformClause(ASTNode):
    """Generated model for ASTTransformClauseProto"""

    select_list: Optional['ASTSelectList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTransformClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'select_list': {
            'proto_field': 'select_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTTtlClause(ASTNode):
    """Generated model for ASTTtlClauseProto"""

    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTtlClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTType(ASTNode):
    """Generated model for ASTTypeProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTTypeParameterList(ASTNode):
    """Generated model for ASTTypeParameterListProto"""

    parameters: List['ASTLeaf'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTypeParameterListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'parameters': {
            'proto_field': 'parameters',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTUnnestExpression(ASTNode):
    """Generated model for ASTUnnestExpressionProto"""

    expressions: List['ASTExpressionWithOptAlias'] = field(default_factory=list)
    array_zip_mode: Optional['ASTNamedArgument'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUnnestExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expressions': {
            'proto_field': 'expressions',
            'is_message': True,
            'is_repeated': True,
        },
        'array_zip_mode': {
            'proto_field': 'array_zip_mode',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTUnnestExpressionWithOptAliasAndOffset(ASTNode):
    """Generated model for ASTUnnestExpressionWithOptAliasAndOffsetProto"""

    unnest_expression: Optional['ASTUnnestExpression'] = None
    optional_alias: Optional['ASTAlias'] = None
    optional_with_offset: Optional['ASTWithOffset'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUnnestExpressionWithOptAliasAndOffsetProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'unnest_expression': {
            'proto_field': 'unnest_expression',
            'is_message': True,
            'is_repeated': False,
        },
        'optional_alias': {
            'proto_field': 'optional_alias',
            'is_message': True,
            'is_repeated': False,
        },
        'optional_with_offset': {
            'proto_field': 'optional_with_offset',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTUnpivotInItem(ASTNode):
    """Generated model for ASTUnpivotInItemProto"""

    unpivot_columns: Optional['ASTPathExpressionList'] = None
    alias: Optional['ASTUnpivotInItemLabel'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUnpivotInItemProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'unpivot_columns': {
            'proto_field': 'unpivot_columns',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTUnpivotInItemLabel(ASTNode):
    """Generated model for ASTUnpivotInItemLabelProto"""

    string_label: Optional['ASTStringLiteral'] = None
    int_label: Optional['ASTIntLiteral'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUnpivotInItemLabelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'string_label': {
            'proto_field': 'string_label',
            'is_message': True,
            'is_repeated': False,
        },
        'int_label': {
            'proto_field': 'int_label',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTUnpivotInItemList(ASTNode):
    """Generated model for ASTUnpivotInItemListProto"""

    in_items: List['ASTUnpivotInItem'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUnpivotInItemListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'in_items': {
            'proto_field': 'in_items',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTUntilClause(ASTNode):
    """Generated model for ASTUntilClauseProto"""

    condition: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUntilClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'condition': {
            'proto_field': 'condition',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTUpdateItem(ASTNode):
    """Generated model for ASTUpdateItemProto"""

    set_value: Optional['ASTUpdateSetValue'] = None
    insert_statement: Optional['ASTInsertStatement'] = None
    delete_statement: Optional['ASTDeleteStatement'] = None
    update_statement: Optional['ASTUpdateStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUpdateItemProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'set_value': {
            'proto_field': 'set_value',
            'is_message': True,
            'is_repeated': False,
        },
        'insert_statement': {
            'proto_field': 'insert_statement',
            'is_message': True,
            'is_repeated': False,
        },
        'delete_statement': {
            'proto_field': 'delete_statement',
            'is_message': True,
            'is_repeated': False,
        },
        'update_statement': {
            'proto_field': 'update_statement',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTUpdateItemList(ASTNode):
    """Generated model for ASTUpdateItemListProto"""

    update_items: List['ASTUpdateItem'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUpdateItemListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'update_items': {
            'proto_field': 'update_items',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTUpdateSetValue(ASTNode):
    """Generated model for ASTUpdateSetValueProto"""

    path: Optional['ASTGeneralizedPathExpression'] = None
    value: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUpdateSetValueProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'path': {
            'proto_field': 'path',
            'is_message': True,
            'is_repeated': False,
        },
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTUsingClause(ASTNode):
    """Generated model for ASTUsingClauseProto"""

    keys: List['ASTIdentifier'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUsingClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'keys': {
            'proto_field': 'keys',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTWhenThenClause(ASTNode):
    """Generated model for ASTWhenThenClauseProto"""

    condition: Optional['ASTExpression'] = None
    body: Optional['ASTStatementList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWhenThenClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'condition': {
            'proto_field': 'condition',
            'is_message': True,
            'is_repeated': False,
        },
        'body': {
            'proto_field': 'body',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTWhenThenClauseList(ASTNode):
    """Generated model for ASTWhenThenClauseListProto"""

    when_then_clauses: List['ASTWhenThenClause'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWhenThenClauseListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'when_then_clauses': {
            'proto_field': 'when_then_clauses',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTWhereClause(ASTNode):
    """Generated model for ASTWhereClauseProto"""

    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWhereClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTWindowClause(ASTNode):
    """Generated model for ASTWindowClauseProto"""

    windows: List['ASTWindowDefinition'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWindowClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'windows': {
            'proto_field': 'windows',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTWindowDefinition(ASTNode):
    """Generated model for ASTWindowDefinitionProto"""

    name: Optional['ASTIdentifier'] = None
    window_spec: Optional['ASTWindowSpecification'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWindowDefinitionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'window_spec': {
            'proto_field': 'window_spec',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTWindowFrame(ASTNode):
    """Generated model for ASTWindowFrameProto"""

    start_expr: Optional['ASTWindowFrameExpr'] = None
    end_expr: Optional['ASTWindowFrameExpr'] = None
    frame_unit: Optional['ASTWindowFrameEnums.FrameUnit'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWindowFrameProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'start_expr': {
            'proto_field': 'start_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'end_expr': {
            'proto_field': 'end_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'frame_unit': {
            'proto_field': 'frame_unit',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'FrameUnit',
            'enum_parent_message': 'ASTWindowFrameEnums',
        },
    }


@dataclass
class ASTWindowFrameExpr(ASTNode):
    """Generated model for ASTWindowFrameExprProto"""

    expression: Optional['ASTExpression'] = None
    boundary_type: Optional['ASTWindowFrameExprEnums.BoundaryType'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWindowFrameExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'boundary_type': {
            'proto_field': 'boundary_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'BoundaryType',
            'enum_parent_message': 'ASTWindowFrameExprEnums',
        },
    }


@dataclass
class ASTWindowSpecification(ASTNode):
    """Generated model for ASTWindowSpecificationProto"""

    base_window_name: Optional['ASTIdentifier'] = None
    partition_by: Optional['ASTPartitionBy'] = None
    order_by: Optional['ASTOrderBy'] = None
    window_frame: Optional['ASTWindowFrame'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWindowSpecificationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'base_window_name': {
            'proto_field': 'base_window_name',
            'is_message': True,
            'is_repeated': False,
        },
        'partition_by': {
            'proto_field': 'partition_by',
            'is_message': True,
            'is_repeated': False,
        },
        'order_by': {
            'proto_field': 'order_by',
            'is_message': True,
            'is_repeated': False,
        },
        'window_frame': {
            'proto_field': 'window_frame',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTWithClause(ASTNode):
    """Generated model for ASTWithClauseProto"""

    with_: List['ASTAliasedQuery'] = field(default_factory=list)
    recursive: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWithClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'with_': {
            'proto_field': 'with',
            'is_message': True,
            'is_repeated': True,
        },
        'recursive': {
            'proto_field': 'recursive',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTWithConnectionClause(ASTNode):
    """Generated model for ASTWithConnectionClauseProto"""

    connection_clause: Optional['ASTConnectionClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWithConnectionClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'connection_clause': {
            'proto_field': 'connection_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTWithOffset(ASTNode):
    """Generated model for ASTWithOffsetProto"""

    alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWithOffsetProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTWithPartitionColumnsClause(ASTNode):
    """Generated model for ASTWithPartitionColumnsClauseProto"""

    table_element_list: Optional['ASTTableElementList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWithPartitionColumnsClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_element_list': {
            'proto_field': 'table_element_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTWithReportModifier(ASTNode):
    """Generated model for ASTWithReportModifierProto"""

    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWithReportModifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTWithWeight(ASTNode):
    """Generated model for ASTWithWeightProto"""

    alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWithWeightProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTYieldItemList(ASTNode):
    """Generated model for ASTYieldItemListProto"""

    yield_items: List['ASTExpressionWithOptAlias'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTYieldItemListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'yield_items': {
            'proto_field': 'yield_items',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedArgument(ResolvedNode):
    """Generated model for ResolvedArgumentProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedArgumentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedExpr(ResolvedNode):
    """Generated model for ResolvedExprProto"""

    type: Optional['Type'] = None
    type_annotation_map: Optional['AnnotationMap'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'type_annotation_map': {
            'proto_field': 'type_annotation_map',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedScan(ResolvedNode):
    """Generated model for ResolvedScanProto"""

    column_list: List['ResolvedColumn'] = field(default_factory=list)
    hint_list: List['ResolvedOption'] = field(default_factory=list)
    is_ordered: Optional[bool] = None
    node_source: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_list': {
            'proto_field': 'column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'hint_list': {
            'proto_field': 'hint_list',
            'is_message': True,
            'is_repeated': True,
        },
        'is_ordered': {
            'proto_field': 'is_ordered',
            'is_message': False,
            'is_repeated': False,
        },
        'node_source': {
            'proto_field': 'node_source',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedStatement(ResolvedNode):
    """Generated model for ResolvedStatementProto"""

    hint_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint_list': {
            'proto_field': 'hint_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTAbortBatchStatement(ASTStatement):
    """Generated model for ASTAbortBatchStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAbortBatchStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAddColumnAction(ASTAlterAction):
    """Generated model for ASTAddColumnActionProto"""

    column_definition: Optional['ASTColumnDefinition'] = None
    column_position: Optional['ASTColumnPosition'] = None
    fill_expression: Optional['ASTExpression'] = None
    is_if_not_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAddColumnActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_definition': {
            'proto_field': 'column_definition',
            'is_message': True,
            'is_repeated': False,
        },
        'column_position': {
            'proto_field': 'column_position',
            'is_message': True,
            'is_repeated': False,
        },
        'fill_expression': {
            'proto_field': 'fill_expression',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAddColumnIdentifierAction(ASTAlterAction):
    """Generated model for ASTAddColumnIdentifierActionProto"""

    column_name: Optional['ASTIdentifier'] = None
    options_list: Optional['ASTOptionsList'] = None
    is_if_not_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAddColumnIdentifierActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_name': {
            'proto_field': 'column_name',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAddConstraintAction(ASTAlterAction):
    """Generated model for ASTAddConstraintActionProto"""

    constraint: Optional['ASTTableConstraint'] = None
    is_if_not_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAddConstraintActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'constraint': {
            'proto_field': 'constraint',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAddSubEntityAction(ASTAlterAction):
    """Generated model for ASTAddSubEntityActionProto"""

    type: Optional['ASTIdentifier'] = None
    name: Optional['ASTIdentifier'] = None
    options_list: Optional['ASTOptionsList'] = None
    is_if_not_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAddSubEntityActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAddToRestricteeListClause(ASTAlterAction):
    """Generated model for ASTAddToRestricteeListClauseProto"""

    is_if_not_exists: Optional[bool] = None
    restrictee_list: Optional['ASTGranteeList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAddToRestricteeListClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'restrictee_list': {
            'proto_field': 'restrictee_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAddTtlAction(ASTAlterAction):
    """Generated model for ASTAddTtlActionProto"""

    expression: Optional['ASTExpression'] = None
    is_if_not_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAddTtlActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAliasedQueryExpression(ASTQueryExpression):
    """Generated model for ASTAliasedQueryExpressionProto"""

    query: Optional['ASTQuery'] = None
    alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAliasedQueryExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterAllRowAccessPoliciesStatement(ASTStatement):
    """Generated model for ASTAlterAllRowAccessPoliciesStatementProto"""

    table_name_path: Optional['ASTPathExpression'] = None
    alter_action: Optional['ASTAlterAction'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterAllRowAccessPoliciesStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_name_path': {
            'proto_field': 'table_name_path',
            'is_message': True,
            'is_repeated': False,
        },
        'alter_action': {
            'proto_field': 'alter_action',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterColumnDropDefaultAction(ASTAlterAction):
    """Generated model for ASTAlterColumnDropDefaultActionProto"""

    column_name: Optional['ASTIdentifier'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterColumnDropDefaultActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_name': {
            'proto_field': 'column_name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterColumnDropGeneratedAction(ASTAlterAction):
    """Generated model for ASTAlterColumnDropGeneratedActionProto"""

    column_name: Optional['ASTIdentifier'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterColumnDropGeneratedActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_name': {
            'proto_field': 'column_name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterColumnDropNotNullAction(ASTAlterAction):
    """Generated model for ASTAlterColumnDropNotNullActionProto"""

    column_name: Optional['ASTIdentifier'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterColumnDropNotNullActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_name': {
            'proto_field': 'column_name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterColumnOptionsAction(ASTAlterAction):
    """Generated model for ASTAlterColumnOptionsActionProto"""

    column_name: Optional['ASTIdentifier'] = None
    options_list: Optional['ASTOptionsList'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterColumnOptionsActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_name': {
            'proto_field': 'column_name',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterColumnSetDefaultAction(ASTAlterAction):
    """Generated model for ASTAlterColumnSetDefaultActionProto"""

    column_name: Optional['ASTIdentifier'] = None
    default_expression: Optional['ASTExpression'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterColumnSetDefaultActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_name': {
            'proto_field': 'column_name',
            'is_message': True,
            'is_repeated': False,
        },
        'default_expression': {
            'proto_field': 'default_expression',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterColumnSetGeneratedAction(ASTAlterAction):
    """Generated model for ASTAlterColumnSetGeneratedActionProto"""

    column_name: Optional['ASTIdentifier'] = None
    generated_column_info: Optional['ASTGeneratedColumnInfo'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterColumnSetGeneratedActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_name': {
            'proto_field': 'column_name',
            'is_message': True,
            'is_repeated': False,
        },
        'generated_column_info': {
            'proto_field': 'generated_column_info',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterColumnTypeAction(ASTAlterAction):
    """Generated model for ASTAlterColumnTypeActionProto"""

    column_name: Optional['ASTIdentifier'] = None
    schema: Optional['ASTColumnSchema'] = None
    collate: Optional['ASTCollate'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterColumnTypeActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_name': {
            'proto_field': 'column_name',
            'is_message': True,
            'is_repeated': False,
        },
        'schema': {
            'proto_field': 'schema',
            'is_message': True,
            'is_repeated': False,
        },
        'collate': {
            'proto_field': 'collate',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterConstraintEnforcementAction(ASTAlterAction):
    """Generated model for ASTAlterConstraintEnforcementActionProto"""

    constraint_name: Optional['ASTIdentifier'] = None
    is_if_exists: Optional[bool] = None
    is_enforced: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterConstraintEnforcementActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'constraint_name': {
            'proto_field': 'constraint_name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'is_enforced': {
            'proto_field': 'is_enforced',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterConstraintSetOptionsAction(ASTAlterAction):
    """Generated model for ASTAlterConstraintSetOptionsActionProto"""

    constraint_name: Optional['ASTIdentifier'] = None
    options_list: Optional['ASTOptionsList'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterConstraintSetOptionsActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'constraint_name': {
            'proto_field': 'constraint_name',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterSubEntityAction(ASTAlterAction):
    """Generated model for ASTAlterSubEntityActionProto"""

    type: Optional['ASTIdentifier'] = None
    name: Optional['ASTIdentifier'] = None
    action: Optional['ASTAlterAction'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterSubEntityActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'action': {
            'proto_field': 'action',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAnalyticFunctionCall(ASTExpression):
    """Generated model for ASTAnalyticFunctionCallProto"""

    function: Optional['ASTFunctionCall'] = None
    window_spec: Optional['ASTWindowSpecification'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAnalyticFunctionCallProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'function': {
            'proto_field': 'function',
            'is_message': True,
            'is_repeated': False,
        },
        'window_spec': {
            'proto_field': 'window_spec',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAnalyzeStatement(ASTStatement):
    """Generated model for ASTAnalyzeStatementProto"""

    options_list: Optional['ASTOptionsList'] = None
    table_and_column_info_list: Optional['ASTTableAndColumnInfoList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAnalyzeStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'table_and_column_info_list': {
            'proto_field': 'table_and_column_info_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAndExpr(ASTExpression):
    """Generated model for ASTAndExprProto"""

    conjuncts: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAndExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'conjuncts': {
            'proto_field': 'conjuncts',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTArrayConstructor(ASTExpression):
    """Generated model for ASTArrayConstructorProto"""

    type: Optional['ASTArrayType'] = None
    elements: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTArrayConstructorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'elements': {
            'proto_field': 'elements',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTArrayType(ASTType):
    """Generated model for ASTArrayTypeProto"""

    element_type: Optional['ASTType'] = None
    type_parameters: Optional['ASTTypeParameterList'] = None
    collate: Optional['ASTCollate'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTArrayTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'element_type': {
            'proto_field': 'element_type',
            'is_message': True,
            'is_repeated': False,
        },
        'type_parameters': {
            'proto_field': 'type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'collate': {
            'proto_field': 'collate',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAssertStatement(ASTStatement):
    """Generated model for ASTAssertStatementProto"""

    expr: Optional['ASTExpression'] = None
    description: Optional['ASTStringLiteral'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAssertStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'description': {
            'proto_field': 'description',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTBeginStatement(ASTStatement):
    """Generated model for ASTBeginStatementProto"""

    mode_list: Optional['ASTTransactionModeList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBeginStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'mode_list': {
            'proto_field': 'mode_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTBetweenExpression(ASTExpression):
    """Generated model for ASTBetweenExpressionProto"""

    lhs: Optional['ASTExpression'] = None
    low: Optional['ASTExpression'] = None
    high: Optional['ASTExpression'] = None
    is_not: Optional[bool] = None
    between_location: Optional['ASTLocation'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBetweenExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'lhs': {
            'proto_field': 'lhs',
            'is_message': True,
            'is_repeated': False,
        },
        'low': {
            'proto_field': 'low',
            'is_message': True,
            'is_repeated': False,
        },
        'high': {
            'proto_field': 'high',
            'is_message': True,
            'is_repeated': False,
        },
        'is_not': {
            'proto_field': 'is_not',
            'is_message': False,
            'is_repeated': False,
        },
        'between_location': {
            'proto_field': 'between_location',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTBinaryExpression(ASTExpression):
    """Generated model for ASTBinaryExpressionProto"""

    op: Optional['ASTBinaryExpressionEnums.Op'] = None
    is_not: Optional[bool] = None
    lhs: Optional['ASTExpression'] = None
    rhs: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBinaryExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'op': {
            'proto_field': 'op',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Op',
            'enum_parent_message': 'ASTBinaryExpressionEnums',
        },
        'is_not': {
            'proto_field': 'is_not',
            'is_message': False,
            'is_repeated': False,
        },
        'lhs': {
            'proto_field': 'lhs',
            'is_message': True,
            'is_repeated': False,
        },
        'rhs': {
            'proto_field': 'rhs',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTBitwiseShiftExpression(ASTExpression):
    """Generated model for ASTBitwiseShiftExpressionProto"""

    lhs: Optional['ASTExpression'] = None
    rhs: Optional['ASTExpression'] = None
    is_left_shift: Optional[bool] = None
    operator_location: Optional['ASTLocation'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBitwiseShiftExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'lhs': {
            'proto_field': 'lhs',
            'is_message': True,
            'is_repeated': False,
        },
        'rhs': {
            'proto_field': 'rhs',
            'is_message': True,
            'is_repeated': False,
        },
        'is_left_shift': {
            'proto_field': 'is_left_shift',
            'is_message': False,
            'is_repeated': False,
        },
        'operator_location': {
            'proto_field': 'operator_location',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTBoundedQuantifier(ASTQuantifier):
    """Generated model for ASTBoundedQuantifierProto"""

    lower_bound: Optional['ASTQuantifierBound'] = None
    upper_bound: Optional['ASTQuantifierBound'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBoundedQuantifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'lower_bound': {
            'proto_field': 'lower_bound',
            'is_message': True,
            'is_repeated': False,
        },
        'upper_bound': {
            'proto_field': 'upper_bound',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTBracedConstructor(ASTExpression):
    """Generated model for ASTBracedConstructorProto"""

    fields: List['ASTBracedConstructorField'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBracedConstructorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'fields': {
            'proto_field': 'fields',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTBracedConstructorLhs(ASTExpression):
    """Generated model for ASTBracedConstructorLhsProto"""

    extended_path_expr: Optional['ASTGeneralizedPathExpression'] = None
    operation: Optional['ASTBracedConstructorLhsEnums.Operation'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBracedConstructorLhsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'extended_path_expr': {
            'proto_field': 'extended_path_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'operation': {
            'proto_field': 'operation',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Operation',
            'enum_parent_message': 'ASTBracedConstructorLhsEnums',
        },
    }


@dataclass
class ASTBracedNewConstructor(ASTExpression):
    """Generated model for ASTBracedNewConstructorProto"""

    type_name: Optional['ASTSimpleType'] = None
    braced_constructor: Optional['ASTBracedConstructor'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBracedNewConstructorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type_name': {
            'proto_field': 'type_name',
            'is_message': True,
            'is_repeated': False,
        },
        'braced_constructor': {
            'proto_field': 'braced_constructor',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCallStatement(ASTStatement):
    """Generated model for ASTCallStatementProto"""

    procedure_name: Optional['ASTPathExpression'] = None
    arguments: List['ASTTVFArgument'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCallStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'procedure_name': {
            'proto_field': 'procedure_name',
            'is_message': True,
            'is_repeated': False,
        },
        'arguments': {
            'proto_field': 'arguments',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTCaseNoValueExpression(ASTExpression):
    """Generated model for ASTCaseNoValueExpressionProto"""

    arguments: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCaseNoValueExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'arguments': {
            'proto_field': 'arguments',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTCaseValueExpression(ASTExpression):
    """Generated model for ASTCaseValueExpressionProto"""

    arguments: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCaseValueExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'arguments': {
            'proto_field': 'arguments',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTCastExpression(ASTExpression):
    """Generated model for ASTCastExpressionProto"""

    expr: Optional['ASTExpression'] = None
    type: Optional['ASTType'] = None
    format: Optional['ASTFormatClause'] = None
    is_safe_cast: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCastExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'format': {
            'proto_field': 'format',
            'is_message': True,
            'is_repeated': False,
        },
        'is_safe_cast': {
            'proto_field': 'is_safe_cast',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCloneDataStatement(ASTStatement):
    """Generated model for ASTCloneDataStatementProto"""

    target_path: Optional['ASTPathExpression'] = None
    data_source_list: Optional['ASTCloneDataSourceList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCloneDataStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'target_path': {
            'proto_field': 'target_path',
            'is_message': True,
            'is_repeated': False,
        },
        'data_source_list': {
            'proto_field': 'data_source_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTColumnDefinition(ASTTableElement):
    """Generated model for ASTColumnDefinitionProto"""

    name: Optional['ASTIdentifier'] = None
    schema: Optional['ASTColumnSchema'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTColumnDefinitionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'schema': {
            'proto_field': 'schema',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCommitStatement(ASTStatement):
    """Generated model for ASTCommitStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCommitStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTConcatExpr(ASTExpression):
    """Generated model for ASTConcatExprProto"""

    operands: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTConcatExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'operands': {
            'proto_field': 'operands',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTCreateDatabaseStatement(ASTStatement):
    """Generated model for ASTCreateDatabaseStatementProto"""

    name: Optional['ASTPathExpression'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateDatabaseStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateLocalityGroupStatement(ASTStatement):
    """Generated model for ASTCreateLocalityGroupStatementProto"""

    name: Optional['ASTPathExpression'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateLocalityGroupStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDateOrTimeLiteral(ASTExpression):
    """Generated model for ASTDateOrTimeLiteralProto"""

    string_literal: Optional['ASTStringLiteral'] = None
    type_kind: Optional['TypeKind'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDateOrTimeLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'string_literal': {
            'proto_field': 'string_literal',
            'is_message': True,
            'is_repeated': False,
        },
        'type_kind': {
            'proto_field': 'type_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'TypeKind',
        },
    }


@dataclass
class ASTDdlStatement(ASTStatement):
    """Generated model for ASTDdlStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDdlStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTDefaultLiteral(ASTExpression):
    """Generated model for ASTDefaultLiteralProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDefaultLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTDefineMacroStatement(ASTStatement):
    """Generated model for ASTDefineMacroStatementProto"""

    name: Optional['ASTIdentifier'] = None
    body: Optional['ASTMacroBody'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDefineMacroStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'body': {
            'proto_field': 'body',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDefineTableStatement(ASTStatement):
    """Generated model for ASTDefineTableStatementProto"""

    name: Optional['ASTPathExpression'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDefineTableStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDeleteStatement(ASTStatement):
    """Generated model for ASTDeleteStatementProto"""

    target_path: Optional['ASTGeneralizedPathExpression'] = None
    alias: Optional['ASTAlias'] = None
    offset: Optional['ASTWithOffset'] = None
    where: Optional['ASTExpression'] = None
    assert_rows_modified: Optional['ASTAssertRowsModified'] = None
    returning: Optional['ASTReturningClause'] = None
    hint: Optional['ASTHint'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDeleteStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'target_path': {
            'proto_field': 'target_path',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'offset': {
            'proto_field': 'offset',
            'is_message': True,
            'is_repeated': False,
        },
        'where': {
            'proto_field': 'where',
            'is_message': True,
            'is_repeated': False,
        },
        'assert_rows_modified': {
            'proto_field': 'assert_rows_modified',
            'is_message': True,
            'is_repeated': False,
        },
        'returning': {
            'proto_field': 'returning',
            'is_message': True,
            'is_repeated': False,
        },
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDescribeStatement(ASTStatement):
    """Generated model for ASTDescribeStatementProto"""

    optional_identifier: Optional['ASTIdentifier'] = None
    name: Optional['ASTPathExpression'] = None
    optional_from_name: Optional['ASTPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDescribeStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'optional_identifier': {
            'proto_field': 'optional_identifier',
            'is_message': True,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'optional_from_name': {
            'proto_field': 'optional_from_name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDotStar(ASTExpression):
    """Generated model for ASTDotStarProto"""

    expr: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDotStarProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDotStarWithModifiers(ASTExpression):
    """Generated model for ASTDotStarWithModifiersProto"""

    expr: Optional['ASTExpression'] = None
    modifiers: Optional['ASTStarModifiers'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDotStarWithModifiersProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'modifiers': {
            'proto_field': 'modifiers',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropAllRowAccessPoliciesStatement(ASTStatement):
    """Generated model for ASTDropAllRowAccessPoliciesStatementProto"""

    table_name: Optional['ASTPathExpression'] = None
    has_access_keyword: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropAllRowAccessPoliciesStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_name': {
            'proto_field': 'table_name',
            'is_message': True,
            'is_repeated': False,
        },
        'has_access_keyword': {
            'proto_field': 'has_access_keyword',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropColumnAction(ASTAlterAction):
    """Generated model for ASTDropColumnActionProto"""

    column_name: Optional['ASTIdentifier'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropColumnActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_name': {
            'proto_field': 'column_name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropConstraintAction(ASTAlterAction):
    """Generated model for ASTDropConstraintActionProto"""

    constraint_name: Optional['ASTIdentifier'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropConstraintActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'constraint_name': {
            'proto_field': 'constraint_name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropPrimaryKeyAction(ASTAlterAction):
    """Generated model for ASTDropPrimaryKeyActionProto"""

    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropPrimaryKeyActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropSubEntityAction(ASTAlterAction):
    """Generated model for ASTDropSubEntityActionProto"""

    type: Optional['ASTIdentifier'] = None
    name: Optional['ASTIdentifier'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropSubEntityActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropTtlAction(ASTAlterAction):
    """Generated model for ASTDropTtlActionProto"""

    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropTtlActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTElementTypeColumnSchema(ASTColumnSchema):
    """Generated model for ASTElementTypeColumnSchemaProto"""

    element_schema: Optional['ASTColumnSchema'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTElementTypeColumnSchemaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'element_schema': {
            'proto_field': 'element_schema',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTEmptyRowPattern(ASTRowPatternExpression):
    """Generated model for ASTEmptyRowPatternProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTEmptyRowPatternProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTExecuteImmediateStatement(ASTStatement):
    """Generated model for ASTExecuteImmediateStatementProto"""

    sql: Optional['ASTExpression'] = None
    into_clause: Optional['ASTExecuteIntoClause'] = None
    using_clause: Optional['ASTExecuteUsingClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExecuteImmediateStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql': {
            'proto_field': 'sql',
            'is_message': True,
            'is_repeated': False,
        },
        'into_clause': {
            'proto_field': 'into_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'using_clause': {
            'proto_field': 'using_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTExplainStatement(ASTStatement):
    """Generated model for ASTExplainStatementProto"""

    statement: Optional['ASTStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExplainStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'statement': {
            'proto_field': 'statement',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTExportDataStatement(ASTStatement):
    """Generated model for ASTExportDataStatementProto"""

    with_connection_clause: Optional['ASTWithConnectionClause'] = None
    options_list: Optional['ASTOptionsList'] = None
    query: Optional['ASTQuery'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExportDataStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'with_connection_clause': {
            'proto_field': 'with_connection_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTExportMetadataStatement(ASTStatement):
    """Generated model for ASTExportMetadataStatementProto"""

    schema_object_kind: Optional['SchemaObjectKind'] = None
    name_path: Optional['ASTPathExpression'] = None
    with_connection_clause: Optional['ASTWithConnectionClause'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExportMetadataStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'schema_object_kind': {
            'proto_field': 'schema_object_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SchemaObjectKind',
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': True,
            'is_repeated': False,
        },
        'with_connection_clause': {
            'proto_field': 'with_connection_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTExportModelStatement(ASTStatement):
    """Generated model for ASTExportModelStatementProto"""

    model_name_path: Optional['ASTPathExpression'] = None
    with_connection_clause: Optional['ASTWithConnectionClause'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExportModelStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'model_name_path': {
            'proto_field': 'model_name_path',
            'is_message': True,
            'is_repeated': False,
        },
        'with_connection_clause': {
            'proto_field': 'with_connection_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTExpressionSubquery(ASTExpression):
    """Generated model for ASTExpressionSubqueryProto"""

    hint: Optional['ASTHint'] = None
    query: Optional['ASTQuery'] = None
    modifier: Optional['ASTExpressionSubqueryEnums.Modifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExpressionSubqueryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'modifier': {
            'proto_field': 'modifier',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Modifier',
            'enum_parent_message': 'ASTExpressionSubqueryEnums',
        },
    }


@dataclass
class ASTExpressionWithAlias(ASTExpression):
    """Generated model for ASTExpressionWithAliasProto"""

    expression: Optional['ASTExpression'] = None
    alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExpressionWithAliasProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTExtractExpression(ASTExpression):
    """Generated model for ASTExtractExpressionProto"""

    lhs_expr: Optional['ASTExpression'] = None
    rhs_expr: Optional['ASTExpression'] = None
    time_zone_expr: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExtractExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'lhs_expr': {
            'proto_field': 'lhs_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'rhs_expr': {
            'proto_field': 'rhs_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'time_zone_expr': {
            'proto_field': 'time_zone_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTFilterUsingClause(ASTAlterAction):
    """Generated model for ASTFilterUsingClauseProto"""

    predicate: Optional['ASTExpression'] = None
    has_filter_keyword: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTFilterUsingClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'predicate': {
            'proto_field': 'predicate',
            'is_message': True,
            'is_repeated': False,
        },
        'has_filter_keyword': {
            'proto_field': 'has_filter_keyword',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTFixedQuantifier(ASTQuantifier):
    """Generated model for ASTFixedQuantifierProto"""

    bound: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTFixedQuantifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'bound': {
            'proto_field': 'bound',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTForeignKeyColumnAttribute(ASTColumnAttribute):
    """Generated model for ASTForeignKeyColumnAttributeProto"""

    constraint_name: Optional['ASTIdentifier'] = None
    reference: Optional['ASTForeignKeyReference'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTForeignKeyColumnAttributeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'constraint_name': {
            'proto_field': 'constraint_name',
            'is_message': True,
            'is_repeated': False,
        },
        'reference': {
            'proto_field': 'reference',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTFromQuery(ASTQueryExpression):
    """Generated model for ASTFromQueryProto"""

    from_clause: Optional['ASTFromClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTFromQueryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'from_clause': {
            'proto_field': 'from_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTFunctionCall(ASTExpression):
    """Generated model for ASTFunctionCallProto"""

    function: Optional['ASTPathExpression'] = None
    arguments: List['ASTExpression'] = field(default_factory=list)
    having_modifier: Optional['ASTHavingModifier'] = None
    clamped_between_modifier: Optional['ASTClampedBetweenModifier'] = None
    order_by: Optional['ASTOrderBy'] = None
    limit_offset: Optional['ASTLimitOffset'] = None
    hint: Optional['ASTHint'] = None
    null_handling_modifier: Optional['ASTFunctionCallEnums.NullHandlingModifier'] = None
    distinct: Optional[bool] = None
    is_current_date_time_without_parentheses: Optional[bool] = None
    with_report_modifier: Optional['ASTWithReportModifier'] = None
    group_by: Optional['ASTGroupBy'] = None
    where_expr: Optional['ASTWhereClause'] = None
    having_expr: Optional['ASTHaving'] = None
    is_chained_call: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTFunctionCallProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'function': {
            'proto_field': 'function',
            'is_message': True,
            'is_repeated': False,
        },
        'arguments': {
            'proto_field': 'arguments',
            'is_message': True,
            'is_repeated': True,
        },
        'having_modifier': {
            'proto_field': 'having_modifier',
            'is_message': True,
            'is_repeated': False,
        },
        'clamped_between_modifier': {
            'proto_field': 'clamped_between_modifier',
            'is_message': True,
            'is_repeated': False,
        },
        'order_by': {
            'proto_field': 'order_by',
            'is_message': True,
            'is_repeated': False,
        },
        'limit_offset': {
            'proto_field': 'limit_offset',
            'is_message': True,
            'is_repeated': False,
        },
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'null_handling_modifier': {
            'proto_field': 'null_handling_modifier',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'NullHandlingModifier',
            'enum_parent_message': 'ASTFunctionCallEnums',
        },
        'distinct': {
            'proto_field': 'distinct',
            'is_message': False,
            'is_repeated': False,
        },
        'is_current_date_time_without_parentheses': {
            'proto_field': 'is_current_date_time_without_parentheses',
            'is_message': False,
            'is_repeated': False,
        },
        'with_report_modifier': {
            'proto_field': 'with_report_modifier',
            'is_message': True,
            'is_repeated': False,
        },
        'group_by': {
            'proto_field': 'group_by',
            'is_message': True,
            'is_repeated': False,
        },
        'where_expr': {
            'proto_field': 'where_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'having_expr': {
            'proto_field': 'having_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'is_chained_call': {
            'proto_field': 'is_chained_call',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTFunctionType(ASTType):
    """Generated model for ASTFunctionTypeProto"""

    arg_list: Optional['ASTFunctionTypeArgList'] = None
    return_type: Optional['ASTType'] = None
    type_parameters: Optional['ASTTypeParameterList'] = None
    collate: Optional['ASTCollate'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTFunctionTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'arg_list': {
            'proto_field': 'arg_list',
            'is_message': True,
            'is_repeated': False,
        },
        'return_type': {
            'proto_field': 'return_type',
            'is_message': True,
            'is_repeated': False,
        },
        'type_parameters': {
            'proto_field': 'type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'collate': {
            'proto_field': 'collate',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGeneralizedPathExpression(ASTExpression):
    """Generated model for ASTGeneralizedPathExpressionProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGeneralizedPathExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTGqlCallBase(ASTGqlOperator):
    """Generated model for ASTGqlCallBaseProto"""

    optional: Optional[bool] = None
    is_partitioning: Optional[bool] = None
    name_capture_list: Optional['ASTIdentifierList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlCallBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'optional': {
            'proto_field': 'optional',
            'is_message': False,
            'is_repeated': False,
        },
        'is_partitioning': {
            'proto_field': 'is_partitioning',
            'is_message': False,
            'is_repeated': False,
        },
        'name_capture_list': {
            'proto_field': 'name_capture_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlFilter(ASTGqlOperator):
    """Generated model for ASTGqlFilterProto"""

    condition: Optional['ASTWhereClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlFilterProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'condition': {
            'proto_field': 'condition',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlFor(ASTGqlOperator):
    """Generated model for ASTGqlForProto"""

    identifier: Optional['ASTIdentifier'] = None
    expression: Optional['ASTExpression'] = None
    with_offset: Optional['ASTWithOffset'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlForProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifier': {
            'proto_field': 'identifier',
            'is_message': True,
            'is_repeated': False,
        },
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'with_offset': {
            'proto_field': 'with_offset',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlGraphPatternQuery(ASTQueryExpression):
    """Generated model for ASTGqlGraphPatternQueryProto"""

    graph_reference: Optional['ASTPathExpression'] = None
    graph_pattern: Optional['ASTGraphPattern'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlGraphPatternQueryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'graph_reference': {
            'proto_field': 'graph_reference',
            'is_message': True,
            'is_repeated': False,
        },
        'graph_pattern': {
            'proto_field': 'graph_pattern',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlLet(ASTGqlOperator):
    """Generated model for ASTGqlLetProto"""

    variable_definition_list: Optional['ASTGqlLetVariableDefinitionList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlLetProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'variable_definition_list': {
            'proto_field': 'variable_definition_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlLinearOpsQuery(ASTQueryExpression):
    """Generated model for ASTGqlLinearOpsQueryProto"""

    graph_reference: Optional['ASTPathExpression'] = None
    linear_ops: Optional['ASTGqlOperatorList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlLinearOpsQueryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'graph_reference': {
            'proto_field': 'graph_reference',
            'is_message': True,
            'is_repeated': False,
        },
        'linear_ops': {
            'proto_field': 'linear_ops',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlMatch(ASTGqlOperator):
    """Generated model for ASTGqlMatchProto"""

    graph_pattern: Optional['ASTGraphPattern'] = None
    optional: Optional[bool] = None
    hint: Optional['ASTHint'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlMatchProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'graph_pattern': {
            'proto_field': 'graph_pattern',
            'is_message': True,
            'is_repeated': False,
        },
        'optional': {
            'proto_field': 'optional',
            'is_message': False,
            'is_repeated': False,
        },
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlOperatorList(ASTGqlOperator):
    """Generated model for ASTGqlOperatorListProto"""

    operators: List['ASTGqlOperator'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlOperatorListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'operators': {
            'proto_field': 'operators',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTGqlOrderByAndPage(ASTGqlOperator):
    """Generated model for ASTGqlOrderByAndPageProto"""

    order_by: Optional['ASTOrderBy'] = None
    page: Optional['ASTGqlPage'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlOrderByAndPageProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'order_by': {
            'proto_field': 'order_by',
            'is_message': True,
            'is_repeated': False,
        },
        'page': {
            'proto_field': 'page',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlQuery(ASTQueryExpression):
    """Generated model for ASTGqlQueryProto"""

    graph_table: Optional['ASTGraphTableQuery'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlQueryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'graph_table': {
            'proto_field': 'graph_table',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlReturn(ASTGqlOperator):
    """Generated model for ASTGqlReturnProto"""

    select: Optional['ASTSelect'] = None
    order_by_page: Optional['ASTGqlOrderByAndPage'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlReturnProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'select': {
            'proto_field': 'select',
            'is_message': True,
            'is_repeated': False,
        },
        'order_by_page': {
            'proto_field': 'order_by_page',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlSample(ASTGqlOperator):
    """Generated model for ASTGqlSampleProto"""

    sample: Optional['ASTSampleClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlSampleProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sample': {
            'proto_field': 'sample',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlSetOperation(ASTGqlOperator):
    """Generated model for ASTGqlSetOperationProto"""

    metadata: Optional['ASTSetOperationMetadataList'] = None
    inputs: List['ASTGqlOperator'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlSetOperationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'metadata': {
            'proto_field': 'metadata',
            'is_message': True,
            'is_repeated': False,
        },
        'inputs': {
            'proto_field': 'inputs',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTGqlWith(ASTGqlOperator):
    """Generated model for ASTGqlWithProto"""

    select: Optional['ASTSelect'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlWithProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'select': {
            'proto_field': 'select',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGrantStatement(ASTStatement):
    """Generated model for ASTGrantStatementProto"""

    privileges: Optional['ASTPrivileges'] = None
    target_type_parts: List['ASTIdentifier'] = field(default_factory=list)
    target_path: Optional['ASTPathExpression'] = None
    grantee_list: Optional['ASTGranteeList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGrantStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'privileges': {
            'proto_field': 'privileges',
            'is_message': True,
            'is_repeated': False,
        },
        'target_type_parts': {
            'proto_field': 'target_type_parts',
            'is_message': True,
            'is_repeated': True,
        },
        'target_path': {
            'proto_field': 'target_path',
            'is_message': True,
            'is_repeated': False,
        },
        'grantee_list': {
            'proto_field': 'grantee_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGrantToClause(ASTAlterAction):
    """Generated model for ASTGrantToClauseProto"""

    grantee_list: Optional['ASTGranteeList'] = None
    has_grant_keyword_and_parens: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGrantToClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'grantee_list': {
            'proto_field': 'grantee_list',
            'is_message': True,
            'is_repeated': False,
        },
        'has_grant_keyword_and_parens': {
            'proto_field': 'has_grant_keyword_and_parens',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphElementLabel(ASTGraphLabelExpression):
    """Generated model for ASTGraphElementLabelProto"""

    name: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphElementLabelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphElementPattern(ASTGraphPathBase):
    """Generated model for ASTGraphElementPatternProto"""

    filler: Optional['ASTGraphElementPatternFiller'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphElementPatternProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'filler': {
            'proto_field': 'filler',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphIsLabeledPredicate(ASTExpression):
    """Generated model for ASTGraphIsLabeledPredicateProto"""

    is_not: Optional[bool] = None
    operand: Optional['ASTExpression'] = None
    label_expression: Optional['ASTGraphLabelExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphIsLabeledPredicateProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_not': {
            'proto_field': 'is_not',
            'is_message': False,
            'is_repeated': False,
        },
        'operand': {
            'proto_field': 'operand',
            'is_message': True,
            'is_repeated': False,
        },
        'label_expression': {
            'proto_field': 'label_expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphLabelOperation(ASTGraphLabelExpression):
    """Generated model for ASTGraphLabelOperationProto"""

    op_type: Optional['ASTGraphLabelOperationEnums.OperationType'] = None
    inputs: List['ASTGraphLabelExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphLabelOperationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'op_type': {
            'proto_field': 'op_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'OperationType',
            'enum_parent_message': 'ASTGraphLabelOperationEnums',
        },
        'inputs': {
            'proto_field': 'inputs',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTGraphPathPattern(ASTGraphPathBase):
    """Generated model for ASTGraphPathPatternProto"""

    hint: Optional['ASTHint'] = None
    where_clause: Optional['ASTWhereClause'] = None
    path_mode: Optional['ASTGraphPathMode'] = None
    input_pattern_list: List['ASTGraphPathBase'] = field(default_factory=list)
    parenthesized: Optional[bool] = None
    search_prefix: Optional['ASTGraphPathSearchPrefix'] = None
    path_name: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphPathPatternProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'where_clause': {
            'proto_field': 'where_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'path_mode': {
            'proto_field': 'path_mode',
            'is_message': True,
            'is_repeated': False,
        },
        'input_pattern_list': {
            'proto_field': 'input_pattern_list',
            'is_message': True,
            'is_repeated': True,
        },
        'parenthesized': {
            'proto_field': 'parenthesized',
            'is_message': False,
            'is_repeated': False,
        },
        'search_prefix': {
            'proto_field': 'search_prefix',
            'is_message': True,
            'is_repeated': False,
        },
        'path_name': {
            'proto_field': 'path_name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphTableQuery(ASTTableExpression):
    """Generated model for ASTGraphTableQueryProto"""

    graph_reference: Optional['ASTPathExpression'] = None
    graph_op: Optional['ASTGqlOperator'] = None
    graph_table_shape: Optional['ASTSelectList'] = None
    alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphTableQueryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'graph_reference': {
            'proto_field': 'graph_reference',
            'is_message': True,
            'is_repeated': False,
        },
        'graph_op': {
            'proto_field': 'graph_op',
            'is_message': True,
            'is_repeated': False,
        },
        'graph_table_shape': {
            'proto_field': 'graph_table_shape',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphWildcardLabel(ASTGraphLabelExpression):
    """Generated model for ASTGraphWildcardLabelProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphWildcardLabelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTHiddenColumnAttribute(ASTColumnAttribute):
    """Generated model for ASTHiddenColumnAttributeProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTHiddenColumnAttributeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTHintedStatement(ASTStatement):
    """Generated model for ASTHintedStatementProto"""

    hint: Optional['ASTHint'] = None
    statement: Optional['ASTStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTHintedStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'statement': {
            'proto_field': 'statement',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTIdentifier(ASTExpression):
    """Generated model for ASTIdentifierProto"""

    id_string: Optional[str] = None
    is_quoted: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIdentifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'id_string': {
            'proto_field': 'id_string',
            'is_message': False,
            'is_repeated': False,
        },
        'is_quoted': {
            'proto_field': 'is_quoted',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTImportStatement(ASTStatement):
    """Generated model for ASTImportStatementProto"""

    name: Optional['ASTPathExpression'] = None
    string_value: Optional['ASTStringLiteral'] = None
    alias: Optional['ASTAlias'] = None
    into_alias: Optional['ASTIntoAlias'] = None
    options_list: Optional['ASTOptionsList'] = None
    import_kind: Optional['ASTImportStatementEnums.ImportKind'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTImportStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'string_value': {
            'proto_field': 'string_value',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'into_alias': {
            'proto_field': 'into_alias',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'import_kind': {
            'proto_field': 'import_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ImportKind',
            'enum_parent_message': 'ASTImportStatementEnums',
        },
    }


@dataclass
class ASTInExpression(ASTExpression):
    """Generated model for ASTInExpressionProto"""

    lhs: Optional['ASTExpression'] = None
    hint: Optional['ASTHint'] = None
    in_list: Optional['ASTInList'] = None
    query: Optional['ASTQuery'] = None
    unnest_expr: Optional['ASTUnnestExpression'] = None
    is_not: Optional[bool] = None
    in_location: Optional['ASTLocation'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTInExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'lhs': {
            'proto_field': 'lhs',
            'is_message': True,
            'is_repeated': False,
        },
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'in_list': {
            'proto_field': 'in_list',
            'is_message': True,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'unnest_expr': {
            'proto_field': 'unnest_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'is_not': {
            'proto_field': 'is_not',
            'is_message': False,
            'is_repeated': False,
        },
        'in_location': {
            'proto_field': 'in_location',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTInferredTypeColumnSchema(ASTColumnSchema):
    """Generated model for ASTInferredTypeColumnSchemaProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTInferredTypeColumnSchemaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTInputTableArgument(ASTExpression):
    """Generated model for ASTInputTableArgumentProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTInputTableArgumentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTInsertStatement(ASTStatement):
    """Generated model for ASTInsertStatementProto"""

    target_path: Optional['ASTGeneralizedPathExpression'] = None
    column_list: Optional['ASTColumnList'] = None
    rows: Optional['ASTInsertValuesRowList'] = None
    query: Optional['ASTQuery'] = None
    assert_rows_modified: Optional['ASTAssertRowsModified'] = None
    returning: Optional['ASTReturningClause'] = None
    deprecated_parse_progress: Optional[int] = None
    insert_mode: Optional['ASTInsertStatementEnums.InsertMode'] = None
    hint: Optional['ASTHint'] = None
    on_conflict: Optional['ASTOnConflictClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTInsertStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'target_path': {
            'proto_field': 'target_path',
            'is_message': True,
            'is_repeated': False,
        },
        'column_list': {
            'proto_field': 'column_list',
            'is_message': True,
            'is_repeated': False,
        },
        'rows': {
            'proto_field': 'rows',
            'is_message': True,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'assert_rows_modified': {
            'proto_field': 'assert_rows_modified',
            'is_message': True,
            'is_repeated': False,
        },
        'returning': {
            'proto_field': 'returning',
            'is_message': True,
            'is_repeated': False,
        },
        'deprecated_parse_progress': {
            'proto_field': 'deprecated_parse_progress',
            'is_message': False,
            'is_repeated': False,
        },
        'insert_mode': {
            'proto_field': 'insert_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'InsertMode',
            'enum_parent_message': 'ASTInsertStatementEnums',
        },
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'on_conflict': {
            'proto_field': 'on_conflict',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTIntOrUnbounded(ASTExpression):
    """Generated model for ASTIntOrUnboundedProto"""

    bound: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIntOrUnboundedProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'bound': {
            'proto_field': 'bound',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTIntervalExpr(ASTExpression):
    """Generated model for ASTIntervalExprProto"""

    interval_value: Optional['ASTExpression'] = None
    date_part_name: Optional['ASTIdentifier'] = None
    date_part_name_to: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIntervalExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'interval_value': {
            'proto_field': 'interval_value',
            'is_message': True,
            'is_repeated': False,
        },
        'date_part_name': {
            'proto_field': 'date_part_name',
            'is_message': True,
            'is_repeated': False,
        },
        'date_part_name_to': {
            'proto_field': 'date_part_name_to',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTJoin(ASTTableExpression):
    """Generated model for ASTJoinProto"""

    lhs: Optional['ASTTableExpression'] = None
    hint: Optional['ASTHint'] = None
    rhs: Optional['ASTTableExpression'] = None
    on_clause: Optional['ASTOnClause'] = None
    using_clause: Optional['ASTUsingClause'] = None
    clause_list: Optional['ASTOnOrUsingClauseList'] = None
    join_type: Optional['ASTJoinEnums.JoinType'] = None
    join_hint: Optional['ASTJoinEnums.JoinHint'] = None
    natural: Optional[bool] = None
    unmatched_join_count: Optional[int] = None
    transformation_needed: Optional[bool] = None
    contains_comma_join: Optional[bool] = None
    join_location: Optional['ASTLocation'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTJoinProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'lhs': {
            'proto_field': 'lhs',
            'is_message': True,
            'is_repeated': False,
        },
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'rhs': {
            'proto_field': 'rhs',
            'is_message': True,
            'is_repeated': False,
        },
        'on_clause': {
            'proto_field': 'on_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'using_clause': {
            'proto_field': 'using_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'clause_list': {
            'proto_field': 'clause_list',
            'is_message': True,
            'is_repeated': False,
        },
        'join_type': {
            'proto_field': 'join_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'JoinType',
            'enum_parent_message': 'ASTJoinEnums',
        },
        'join_hint': {
            'proto_field': 'join_hint',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'JoinHint',
            'enum_parent_message': 'ASTJoinEnums',
        },
        'natural': {
            'proto_field': 'natural',
            'is_message': False,
            'is_repeated': False,
        },
        'unmatched_join_count': {
            'proto_field': 'unmatched_join_count',
            'is_message': False,
            'is_repeated': False,
        },
        'transformation_needed': {
            'proto_field': 'transformation_needed',
            'is_message': False,
            'is_repeated': False,
        },
        'contains_comma_join': {
            'proto_field': 'contains_comma_join',
            'is_message': False,
            'is_repeated': False,
        },
        'join_location': {
            'proto_field': 'join_location',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTLambda(ASTExpression):
    """Generated model for ASTLambdaProto"""

    argument_list: Optional['ASTExpression'] = None
    body: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTLambdaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'argument_list': {
            'proto_field': 'argument_list',
            'is_message': True,
            'is_repeated': False,
        },
        'body': {
            'proto_field': 'body',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTLeaf(ASTExpression):
    """Generated model for ASTLeafProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTLeafProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTLikeExpression(ASTExpression):
    """Generated model for ASTLikeExpressionProto"""

    lhs: Optional['ASTExpression'] = None
    op: Optional['ASTAnySomeAllOp'] = None
    hint: Optional['ASTHint'] = None
    in_list: Optional['ASTInList'] = None
    query: Optional['ASTQuery'] = None
    unnest_expr: Optional['ASTUnnestExpression'] = None
    is_not: Optional[bool] = None
    like_location: Optional['ASTLocation'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTLikeExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'lhs': {
            'proto_field': 'lhs',
            'is_message': True,
            'is_repeated': False,
        },
        'op': {
            'proto_field': 'op',
            'is_message': True,
            'is_repeated': False,
        },
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'in_list': {
            'proto_field': 'in_list',
            'is_message': True,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'unnest_expr': {
            'proto_field': 'unnest_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'is_not': {
            'proto_field': 'is_not',
            'is_message': False,
            'is_repeated': False,
        },
        'like_location': {
            'proto_field': 'like_location',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTMapType(ASTType):
    """Generated model for ASTMapTypeProto"""

    key_type: Optional['ASTType'] = None
    value_type: Optional['ASTType'] = None
    type_parameters: Optional['ASTTypeParameterList'] = None
    collate: Optional['ASTCollate'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTMapTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'key_type': {
            'proto_field': 'key_type',
            'is_message': True,
            'is_repeated': False,
        },
        'value_type': {
            'proto_field': 'value_type',
            'is_message': True,
            'is_repeated': False,
        },
        'type_parameters': {
            'proto_field': 'type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'collate': {
            'proto_field': 'collate',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTMatchRecognizeClause(ASTPostfixTableOperator):
    """Generated model for ASTMatchRecognizeClauseProto"""

    partition_by: Optional['ASTPartitionBy'] = None
    order_by: Optional['ASTOrderBy'] = None
    measures: Optional['ASTSelectList'] = None
    after_match_skip_clause: Optional['ASTAfterMatchSkipClause'] = None
    pattern: Optional['ASTRowPatternExpression'] = None
    pattern_variable_definition_list: Optional['ASTSelectList'] = None
    output_alias: Optional['ASTAlias'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTMatchRecognizeClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'partition_by': {
            'proto_field': 'partition_by',
            'is_message': True,
            'is_repeated': False,
        },
        'order_by': {
            'proto_field': 'order_by',
            'is_message': True,
            'is_repeated': False,
        },
        'measures': {
            'proto_field': 'measures',
            'is_message': True,
            'is_repeated': False,
        },
        'after_match_skip_clause': {
            'proto_field': 'after_match_skip_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'pattern': {
            'proto_field': 'pattern',
            'is_message': True,
            'is_repeated': False,
        },
        'pattern_variable_definition_list': {
            'proto_field': 'pattern_variable_definition_list',
            'is_message': True,
            'is_repeated': False,
        },
        'output_alias': {
            'proto_field': 'output_alias',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTMergeStatement(ASTStatement):
    """Generated model for ASTMergeStatementProto"""

    target_path: Optional['ASTPathExpression'] = None
    alias: Optional['ASTAlias'] = None
    table_expression: Optional['ASTTableExpression'] = None
    merge_condition: Optional['ASTExpression'] = None
    when_clauses: Optional['ASTMergeWhenClauseList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTMergeStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'target_path': {
            'proto_field': 'target_path',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'table_expression': {
            'proto_field': 'table_expression',
            'is_message': True,
            'is_repeated': False,
        },
        'merge_condition': {
            'proto_field': 'merge_condition',
            'is_message': True,
            'is_repeated': False,
        },
        'when_clauses': {
            'proto_field': 'when_clauses',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTModuleStatement(ASTStatement):
    """Generated model for ASTModuleStatementProto"""

    name: Optional['ASTPathExpression'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTModuleStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTNamedArgument(ASTExpression):
    """Generated model for ASTNamedArgumentProto"""

    name: Optional['ASTIdentifier'] = None
    expr: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTNamedArgumentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTNewConstructor(ASTExpression):
    """Generated model for ASTNewConstructorProto"""

    type_name: Optional['ASTSimpleType'] = None
    arguments: List['ASTNewConstructorArg'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTNewConstructorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type_name': {
            'proto_field': 'type_name',
            'is_message': True,
            'is_repeated': False,
        },
        'arguments': {
            'proto_field': 'arguments',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTNotNullColumnAttribute(ASTColumnAttribute):
    """Generated model for ASTNotNullColumnAttributeProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTNotNullColumnAttributeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTOrExpr(ASTExpression):
    """Generated model for ASTOrExprProto"""

    disjuncts: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTOrExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'disjuncts': {
            'proto_field': 'disjuncts',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTParameterAssignment(ASTStatement):
    """Generated model for ASTParameterAssignmentProto"""

    parameter: Optional['ASTParameterExpr'] = None
    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTParameterAssignmentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'parameter': {
            'proto_field': 'parameter',
            'is_message': True,
            'is_repeated': False,
        },
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTParameterExprBase(ASTExpression):
    """Generated model for ASTParameterExprBaseProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTParameterExprBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTParenthesizedJoin(ASTTableExpression):
    """Generated model for ASTParenthesizedJoinProto"""

    join: Optional['ASTJoin'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTParenthesizedJoinProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'join': {
            'proto_field': 'join',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeAggregate(ASTPipeOperator):
    """Generated model for ASTPipeAggregateProto"""

    select: Optional['ASTSelect'] = None
    select_with: Optional['ASTSelectWith'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeAggregateProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'select': {
            'proto_field': 'select',
            'is_message': True,
            'is_repeated': False,
        },
        'select_with': {
            'proto_field': 'select_with',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeAs(ASTPipeOperator):
    """Generated model for ASTPipeAsProto"""

    alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeAsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeAssert(ASTPipeOperator):
    """Generated model for ASTPipeAssertProto"""

    condition: Optional['ASTExpression'] = None
    message_list: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeAssertProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'condition': {
            'proto_field': 'condition',
            'is_message': True,
            'is_repeated': False,
        },
        'message_list': {
            'proto_field': 'message_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTPipeCall(ASTPipeOperator):
    """Generated model for ASTPipeCallProto"""

    tvf: Optional['ASTTVF'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeCallProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'tvf': {
            'proto_field': 'tvf',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeCreateTable(ASTPipeOperator):
    """Generated model for ASTPipeCreateTableProto"""

    create_table_statement: Optional['ASTCreateTableStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeCreateTableProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'create_table_statement': {
            'proto_field': 'create_table_statement',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeDescribe(ASTPipeOperator):
    """Generated model for ASTPipeDescribeProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeDescribeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTPipeDistinct(ASTPipeOperator):
    """Generated model for ASTPipeDistinctProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeDistinctProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTPipeDrop(ASTPipeOperator):
    """Generated model for ASTPipeDropProto"""

    column_list: Optional['ASTIdentifierList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeDropProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_list': {
            'proto_field': 'column_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeExportData(ASTPipeOperator):
    """Generated model for ASTPipeExportDataProto"""

    export_data_statement: Optional['ASTExportDataStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeExportDataProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'export_data_statement': {
            'proto_field': 'export_data_statement',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeExtend(ASTPipeOperator):
    """Generated model for ASTPipeExtendProto"""

    select: Optional['ASTSelect'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeExtendProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'select': {
            'proto_field': 'select',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeFork(ASTPipeOperator):
    """Generated model for ASTPipeForkProto"""

    hint: Optional['ASTHint'] = None
    subpipeline_list: List['ASTSubpipeline'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeForkProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'subpipeline_list': {
            'proto_field': 'subpipeline_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTPipeIf(ASTPipeOperator):
    """Generated model for ASTPipeIfProto"""

    hint: Optional['ASTHint'] = None
    if_cases: List['ASTPipeIfCase'] = field(default_factory=list)
    else_subpipeline: Optional['ASTSubpipeline'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeIfProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'if_cases': {
            'proto_field': 'if_cases',
            'is_message': True,
            'is_repeated': True,
        },
        'else_subpipeline': {
            'proto_field': 'else_subpipeline',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeIfCase(ASTPipeOperator):
    """Generated model for ASTPipeIfCaseProto"""

    condition: Optional['ASTExpression'] = None
    subpipeline: Optional['ASTSubpipeline'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeIfCaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'condition': {
            'proto_field': 'condition',
            'is_message': True,
            'is_repeated': False,
        },
        'subpipeline': {
            'proto_field': 'subpipeline',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeInsert(ASTPipeOperator):
    """Generated model for ASTPipeInsertProto"""

    insert_statement: Optional['ASTInsertStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeInsertProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'insert_statement': {
            'proto_field': 'insert_statement',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeJoin(ASTPipeOperator):
    """Generated model for ASTPipeJoinProto"""

    join: Optional['ASTJoin'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeJoinProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'join': {
            'proto_field': 'join',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeJoinLhsPlaceholder(ASTTableExpression):
    """Generated model for ASTPipeJoinLhsPlaceholderProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeJoinLhsPlaceholderProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTPipeLimitOffset(ASTPipeOperator):
    """Generated model for ASTPipeLimitOffsetProto"""

    limit_offset: Optional['ASTLimitOffset'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeLimitOffsetProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'limit_offset': {
            'proto_field': 'limit_offset',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeLog(ASTPipeOperator):
    """Generated model for ASTPipeLogProto"""

    hint: Optional['ASTHint'] = None
    subpipeline: Optional['ASTSubpipeline'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeLogProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'subpipeline': {
            'proto_field': 'subpipeline',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeMatchRecognize(ASTPipeOperator):
    """Generated model for ASTPipeMatchRecognizeProto"""

    match_recognize: Optional['ASTMatchRecognizeClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeMatchRecognizeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'match_recognize': {
            'proto_field': 'match_recognize',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeOrderBy(ASTPipeOperator):
    """Generated model for ASTPipeOrderByProto"""

    order_by: Optional['ASTOrderBy'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeOrderByProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'order_by': {
            'proto_field': 'order_by',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipePivot(ASTPipeOperator):
    """Generated model for ASTPipePivotProto"""

    pivot_clause: Optional['ASTPivotClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipePivotProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'pivot_clause': {
            'proto_field': 'pivot_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeRecursiveUnion(ASTPipeOperator):
    """Generated model for ASTPipeRecursiveUnionProto"""

    metadata: Optional['ASTSetOperationMetadata'] = None
    recursion_depth_modifier: Optional['ASTRecursionDepthModifier'] = None
    input_subpipeline: Optional['ASTSubpipeline'] = None
    input_subquery: Optional['ASTQueryExpression'] = None
    alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeRecursiveUnionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'metadata': {
            'proto_field': 'metadata',
            'is_message': True,
            'is_repeated': False,
        },
        'recursion_depth_modifier': {
            'proto_field': 'recursion_depth_modifier',
            'is_message': True,
            'is_repeated': False,
        },
        'input_subpipeline': {
            'proto_field': 'input_subpipeline',
            'is_message': True,
            'is_repeated': False,
        },
        'input_subquery': {
            'proto_field': 'input_subquery',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeRename(ASTPipeOperator):
    """Generated model for ASTPipeRenameProto"""

    rename_item_list: List['ASTPipeRenameItem'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeRenameProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'rename_item_list': {
            'proto_field': 'rename_item_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTPipeRenameItem(ASTPipeOperator):
    """Generated model for ASTPipeRenameItemProto"""

    old_name: Optional['ASTIdentifier'] = None
    new_name: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeRenameItemProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'old_name': {
            'proto_field': 'old_name',
            'is_message': True,
            'is_repeated': False,
        },
        'new_name': {
            'proto_field': 'new_name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeSelect(ASTPipeOperator):
    """Generated model for ASTPipeSelectProto"""

    select: Optional['ASTSelect'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeSelectProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'select': {
            'proto_field': 'select',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeSet(ASTPipeOperator):
    """Generated model for ASTPipeSetProto"""

    set_item_list: List['ASTPipeSetItem'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeSetProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'set_item_list': {
            'proto_field': 'set_item_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTPipeSetOperation(ASTPipeOperator):
    """Generated model for ASTPipeSetOperationProto"""

    metadata: Optional['ASTSetOperationMetadata'] = None
    inputs: List['ASTQueryExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeSetOperationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'metadata': {
            'proto_field': 'metadata',
            'is_message': True,
            'is_repeated': False,
        },
        'inputs': {
            'proto_field': 'inputs',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTPipeStaticDescribe(ASTPipeOperator):
    """Generated model for ASTPipeStaticDescribeProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeStaticDescribeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTPipeTablesample(ASTPipeOperator):
    """Generated model for ASTPipeTablesampleProto"""

    sample: Optional['ASTSampleClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeTablesampleProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sample': {
            'proto_field': 'sample',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeTee(ASTPipeOperator):
    """Generated model for ASTPipeTeeProto"""

    hint: Optional['ASTHint'] = None
    subpipeline_list: List['ASTSubpipeline'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeTeeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'subpipeline_list': {
            'proto_field': 'subpipeline_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTPipeUnpivot(ASTPipeOperator):
    """Generated model for ASTPipeUnpivotProto"""

    unpivot_clause: Optional['ASTUnpivotClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeUnpivotProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'unpivot_clause': {
            'proto_field': 'unpivot_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeWhere(ASTPipeOperator):
    """Generated model for ASTPipeWhereProto"""

    where: Optional['ASTWhereClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeWhereProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'where': {
            'proto_field': 'where',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeWindow(ASTPipeOperator):
    """Generated model for ASTPipeWindowProto"""

    select: Optional['ASTSelect'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeWindowProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'select': {
            'proto_field': 'select',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPipeWith(ASTPipeOperator):
    """Generated model for ASTPipeWithProto"""

    with_clause: Optional['ASTWithClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPipeWithProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'with_clause': {
            'proto_field': 'with_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPivotClause(ASTPostfixTableOperator):
    """Generated model for ASTPivotClauseProto"""

    pivot_expressions: Optional['ASTPivotExpressionList'] = None
    for_expression: Optional['ASTExpression'] = None
    pivot_values: Optional['ASTPivotValueList'] = None
    output_alias: Optional['ASTAlias'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPivotClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'pivot_expressions': {
            'proto_field': 'pivot_expressions',
            'is_message': True,
            'is_repeated': False,
        },
        'for_expression': {
            'proto_field': 'for_expression',
            'is_message': True,
            'is_repeated': False,
        },
        'pivot_values': {
            'proto_field': 'pivot_values',
            'is_message': True,
            'is_repeated': False,
        },
        'output_alias': {
            'proto_field': 'output_alias',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPrimaryKeyColumnAttribute(ASTColumnAttribute):
    """Generated model for ASTPrimaryKeyColumnAttributeProto"""

    enforced: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPrimaryKeyColumnAttributeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'enforced': {
            'proto_field': 'enforced',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTQuery(ASTQueryExpression):
    """Generated model for ASTQueryProto"""

    with_clause: Optional['ASTWithClause'] = None
    query_expr: Optional['ASTQueryExpression'] = None
    order_by: Optional['ASTOrderBy'] = None
    limit_offset: Optional['ASTLimitOffset'] = None
    is_nested: Optional[bool] = None
    is_pivot_input: Optional[bool] = None
    pipe_operator_list: List['ASTPipeOperator'] = field(default_factory=list)
    lock_mode: Optional['ASTLockMode'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTQueryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'with_clause': {
            'proto_field': 'with_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'query_expr': {
            'proto_field': 'query_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'order_by': {
            'proto_field': 'order_by',
            'is_message': True,
            'is_repeated': False,
        },
        'limit_offset': {
            'proto_field': 'limit_offset',
            'is_message': True,
            'is_repeated': False,
        },
        'is_nested': {
            'proto_field': 'is_nested',
            'is_message': False,
            'is_repeated': False,
        },
        'is_pivot_input': {
            'proto_field': 'is_pivot_input',
            'is_message': False,
            'is_repeated': False,
        },
        'pipe_operator_list': {
            'proto_field': 'pipe_operator_list',
            'is_message': True,
            'is_repeated': True,
        },
        'lock_mode': {
            'proto_field': 'lock_mode',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTQueryStatement(ASTStatement):
    """Generated model for ASTQueryStatementProto"""

    query: Optional['ASTQuery'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTQueryStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRangeLiteral(ASTExpression):
    """Generated model for ASTRangeLiteralProto"""

    type: Optional['ASTRangeType'] = None
    range_value: Optional['ASTStringLiteral'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRangeLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'range_value': {
            'proto_field': 'range_value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRangeType(ASTType):
    """Generated model for ASTRangeTypeProto"""

    element_type: Optional['ASTType'] = None
    type_parameters: Optional['ASTTypeParameterList'] = None
    collate: Optional['ASTCollate'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRangeTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'element_type': {
            'proto_field': 'element_type',
            'is_message': True,
            'is_repeated': False,
        },
        'type_parameters': {
            'proto_field': 'type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'collate': {
            'proto_field': 'collate',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRebuildAction(ASTAlterAction):
    """Generated model for ASTRebuildActionProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRebuildActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTRemoveFromRestricteeListClause(ASTAlterAction):
    """Generated model for ASTRemoveFromRestricteeListClauseProto"""

    is_if_exists: Optional[bool] = None
    restrictee_list: Optional['ASTGranteeList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRemoveFromRestricteeListClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'restrictee_list': {
            'proto_field': 'restrictee_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRenameColumnAction(ASTAlterAction):
    """Generated model for ASTRenameColumnActionProto"""

    column_name: Optional['ASTIdentifier'] = None
    new_column_name: Optional['ASTIdentifier'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRenameColumnActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_name': {
            'proto_field': 'column_name',
            'is_message': True,
            'is_repeated': False,
        },
        'new_column_name': {
            'proto_field': 'new_column_name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRenameStatement(ASTStatement):
    """Generated model for ASTRenameStatementProto"""

    identifier: Optional['ASTIdentifier'] = None
    old_name: Optional['ASTPathExpression'] = None
    new_name: Optional['ASTPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRenameStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifier': {
            'proto_field': 'identifier',
            'is_message': True,
            'is_repeated': False,
        },
        'old_name': {
            'proto_field': 'old_name',
            'is_message': True,
            'is_repeated': False,
        },
        'new_name': {
            'proto_field': 'new_name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRenameToClause(ASTAlterAction):
    """Generated model for ASTRenameToClauseProto"""

    new_name: Optional['ASTPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRenameToClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'new_name': {
            'proto_field': 'new_name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTReplaceFieldsExpression(ASTExpression):
    """Generated model for ASTReplaceFieldsExpressionProto"""

    expr: Optional['ASTExpression'] = None
    arguments: List['ASTReplaceFieldsArg'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTReplaceFieldsExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'arguments': {
            'proto_field': 'arguments',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTReplaceTtlAction(ASTAlterAction):
    """Generated model for ASTReplaceTtlActionProto"""

    expression: Optional['ASTExpression'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTReplaceTtlActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRestrictToClause(ASTAlterAction):
    """Generated model for ASTRestrictToClauseProto"""

    restrictee_list: Optional['ASTGranteeList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRestrictToClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'restrictee_list': {
            'proto_field': 'restrictee_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRevokeFromClause(ASTAlterAction):
    """Generated model for ASTRevokeFromClauseProto"""

    revoke_from_list: Optional['ASTGranteeList'] = None
    is_revoke_from_all: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRevokeFromClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'revoke_from_list': {
            'proto_field': 'revoke_from_list',
            'is_message': True,
            'is_repeated': False,
        },
        'is_revoke_from_all': {
            'proto_field': 'is_revoke_from_all',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRevokeStatement(ASTStatement):
    """Generated model for ASTRevokeStatementProto"""

    privileges: Optional['ASTPrivileges'] = None
    target_type_parts: List['ASTIdentifier'] = field(default_factory=list)
    target_path: Optional['ASTPathExpression'] = None
    grantee_list: Optional['ASTGranteeList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRevokeStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'privileges': {
            'proto_field': 'privileges',
            'is_message': True,
            'is_repeated': False,
        },
        'target_type_parts': {
            'proto_field': 'target_type_parts',
            'is_message': True,
            'is_repeated': True,
        },
        'target_path': {
            'proto_field': 'target_path',
            'is_message': True,
            'is_repeated': False,
        },
        'grantee_list': {
            'proto_field': 'grantee_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRollbackStatement(ASTStatement):
    """Generated model for ASTRollbackStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRollbackStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTRowPatternAnchor(ASTRowPatternExpression):
    """Generated model for ASTRowPatternAnchorProto"""

    anchor: Optional['ASTRowPatternAnchorEnums.Anchor'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRowPatternAnchorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'anchor': {
            'proto_field': 'anchor',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Anchor',
            'enum_parent_message': 'ASTRowPatternAnchorEnums',
        },
    }


@dataclass
class ASTRowPatternOperation(ASTRowPatternExpression):
    """Generated model for ASTRowPatternOperationProto"""

    op_type: Optional['ASTRowPatternOperationEnums.OperationType'] = None
    inputs: List['ASTRowPatternExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRowPatternOperationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'op_type': {
            'proto_field': 'op_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'OperationType',
            'enum_parent_message': 'ASTRowPatternOperationEnums',
        },
        'inputs': {
            'proto_field': 'inputs',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTRowPatternQuantification(ASTRowPatternExpression):
    """Generated model for ASTRowPatternQuantificationProto"""

    operand: Optional['ASTRowPatternExpression'] = None
    quantifier: Optional['ASTQuantifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRowPatternQuantificationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'operand': {
            'proto_field': 'operand',
            'is_message': True,
            'is_repeated': False,
        },
        'quantifier': {
            'proto_field': 'quantifier',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRowPatternVariable(ASTRowPatternExpression):
    """Generated model for ASTRowPatternVariableProto"""

    name: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRowPatternVariableProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRunBatchStatement(ASTStatement):
    """Generated model for ASTRunBatchStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRunBatchStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTRunStatement(ASTStatement):
    """Generated model for ASTRunStatementProto"""

    target_path_expression: Optional['ASTPathExpression'] = None
    target_string_literal: Optional['ASTStringLiteral'] = None
    arguments: List['ASTNamedArgument'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRunStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'target_path_expression': {
            'proto_field': 'target_path_expression',
            'is_message': True,
            'is_repeated': False,
        },
        'target_string_literal': {
            'proto_field': 'target_string_literal',
            'is_message': True,
            'is_repeated': False,
        },
        'arguments': {
            'proto_field': 'arguments',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTSampleClause(ASTPostfixTableOperator):
    """Generated model for ASTSampleClauseProto"""

    sample_method: Optional['ASTIdentifier'] = None
    sample_size: Optional['ASTSampleSize'] = None
    sample_suffix: Optional['ASTSampleSuffix'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSampleClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sample_method': {
            'proto_field': 'sample_method',
            'is_message': True,
            'is_repeated': False,
        },
        'sample_size': {
            'proto_field': 'sample_size',
            'is_message': True,
            'is_repeated': False,
        },
        'sample_suffix': {
            'proto_field': 'sample_suffix',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTScriptStatement(ASTStatement):
    """Generated model for ASTScriptStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTScriptStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTSelect(ASTQueryExpression):
    """Generated model for ASTSelectProto"""

    hint: Optional['ASTHint'] = None
    select_with: Optional['ASTSelectWith'] = None
    distinct: Optional[bool] = None
    select_as: Optional['ASTSelectAs'] = None
    select_list: Optional['ASTSelectList'] = None
    from_clause: Optional['ASTFromClause'] = None
    where_clause: Optional['ASTWhereClause'] = None
    group_by: Optional['ASTGroupBy'] = None
    having: Optional['ASTHaving'] = None
    qualify: Optional['ASTQualify'] = None
    window_clause: Optional['ASTWindowClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSelectProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'select_with': {
            'proto_field': 'select_with',
            'is_message': True,
            'is_repeated': False,
        },
        'distinct': {
            'proto_field': 'distinct',
            'is_message': False,
            'is_repeated': False,
        },
        'select_as': {
            'proto_field': 'select_as',
            'is_message': True,
            'is_repeated': False,
        },
        'select_list': {
            'proto_field': 'select_list',
            'is_message': True,
            'is_repeated': False,
        },
        'from_clause': {
            'proto_field': 'from_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'where_clause': {
            'proto_field': 'where_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'group_by': {
            'proto_field': 'group_by',
            'is_message': True,
            'is_repeated': False,
        },
        'having': {
            'proto_field': 'having',
            'is_message': True,
            'is_repeated': False,
        },
        'qualify': {
            'proto_field': 'qualify',
            'is_message': True,
            'is_repeated': False,
        },
        'window_clause': {
            'proto_field': 'window_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSequenceArg(ASTExpression):
    """Generated model for ASTSequenceArgProto"""

    sequence_path: Optional['ASTPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSequenceArgProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sequence_path': {
            'proto_field': 'sequence_path',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSetAsAction(ASTAlterAction):
    """Generated model for ASTSetAsActionProto"""

    json_body: Optional['ASTJSONLiteral'] = None
    text_body: Optional['ASTStringLiteral'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSetAsActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'json_body': {
            'proto_field': 'json_body',
            'is_message': True,
            'is_repeated': False,
        },
        'text_body': {
            'proto_field': 'text_body',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSetCollateClause(ASTAlterAction):
    """Generated model for ASTSetCollateClauseProto"""

    collate: Optional['ASTCollate'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSetCollateClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'collate': {
            'proto_field': 'collate',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSetOperation(ASTQueryExpression):
    """Generated model for ASTSetOperationProto"""

    metadata: Optional['ASTSetOperationMetadataList'] = None
    inputs: List['ASTQueryExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSetOperationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'metadata': {
            'proto_field': 'metadata',
            'is_message': True,
            'is_repeated': False,
        },
        'inputs': {
            'proto_field': 'inputs',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTSetOptionsAction(ASTAlterAction):
    """Generated model for ASTSetOptionsActionProto"""

    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSetOptionsActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSetTransactionStatement(ASTStatement):
    """Generated model for ASTSetTransactionStatementProto"""

    mode_list: Optional['ASTTransactionModeList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSetTransactionStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'mode_list': {
            'proto_field': 'mode_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTShowStatement(ASTStatement):
    """Generated model for ASTShowStatementProto"""

    identifier: Optional['ASTIdentifier'] = None
    optional_name: Optional['ASTPathExpression'] = None
    optional_like_string: Optional['ASTStringLiteral'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTShowStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifier': {
            'proto_field': 'identifier',
            'is_message': True,
            'is_repeated': False,
        },
        'optional_name': {
            'proto_field': 'optional_name',
            'is_message': True,
            'is_repeated': False,
        },
        'optional_like_string': {
            'proto_field': 'optional_like_string',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSimpleColumnSchema(ASTColumnSchema):
    """Generated model for ASTSimpleColumnSchemaProto"""

    type_name: Optional['ASTPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSimpleColumnSchemaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type_name': {
            'proto_field': 'type_name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSimpleType(ASTType):
    """Generated model for ASTSimpleTypeProto"""

    type_name: Optional['ASTPathExpression'] = None
    type_parameters: Optional['ASTTypeParameterList'] = None
    collate: Optional['ASTCollate'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSimpleTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type_name': {
            'proto_field': 'type_name',
            'is_message': True,
            'is_repeated': False,
        },
        'type_parameters': {
            'proto_field': 'type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'collate': {
            'proto_field': 'collate',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSpannerAlterColumnAction(ASTAlterAction):
    """Generated model for ASTSpannerAlterColumnActionProto"""

    column_definition: Optional['ASTColumnDefinition'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSpannerAlterColumnActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_definition': {
            'proto_field': 'column_definition',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSpannerSetOnDeleteAction(ASTAlterAction):
    """Generated model for ASTSpannerSetOnDeleteActionProto"""

    action: Optional['ASTForeignKeyActionsEnums.Action'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSpannerSetOnDeleteActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'action': {
            'proto_field': 'action',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Action',
            'enum_parent_message': 'ASTForeignKeyActionsEnums',
        },
    }


@dataclass
class ASTStarWithModifiers(ASTExpression):
    """Generated model for ASTStarWithModifiersProto"""

    modifiers: Optional['ASTStarModifiers'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStarWithModifiersProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'modifiers': {
            'proto_field': 'modifiers',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTStartBatchStatement(ASTStatement):
    """Generated model for ASTStartBatchStatementProto"""

    batch_type: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStartBatchStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'batch_type': {
            'proto_field': 'batch_type',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTStatementWithPipeOperators(ASTStatement):
    """Generated model for ASTStatementWithPipeOperatorsProto"""

    statement: Optional['ASTStatement'] = None
    pipe_operator_suffix: Optional['ASTSubpipelineStatement'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStatementWithPipeOperatorsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'statement': {
            'proto_field': 'statement',
            'is_message': True,
            'is_repeated': False,
        },
        'pipe_operator_suffix': {
            'proto_field': 'pipe_operator_suffix',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTStructBracedConstructor(ASTExpression):
    """Generated model for ASTStructBracedConstructorProto"""

    type_name: Optional['ASTType'] = None
    braced_constructor: Optional['ASTBracedConstructor'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStructBracedConstructorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type_name': {
            'proto_field': 'type_name',
            'is_message': True,
            'is_repeated': False,
        },
        'braced_constructor': {
            'proto_field': 'braced_constructor',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTStructColumnSchema(ASTColumnSchema):
    """Generated model for ASTStructColumnSchemaProto"""

    struct_fields: List['ASTStructColumnField'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStructColumnSchemaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'struct_fields': {
            'proto_field': 'struct_fields',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTStructConstructorWithKeyword(ASTExpression):
    """Generated model for ASTStructConstructorWithKeywordProto"""

    struct_type: Optional['ASTStructType'] = None
    fields: List['ASTStructConstructorArg'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStructConstructorWithKeywordProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'struct_type': {
            'proto_field': 'struct_type',
            'is_message': True,
            'is_repeated': False,
        },
        'fields': {
            'proto_field': 'fields',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTStructConstructorWithParens(ASTExpression):
    """Generated model for ASTStructConstructorWithParensProto"""

    field_expressions: List['ASTExpression'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStructConstructorWithParensProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'field_expressions': {
            'proto_field': 'field_expressions',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTStructType(ASTType):
    """Generated model for ASTStructTypeProto"""

    struct_fields: List['ASTStructField'] = field(default_factory=list)
    type_parameters: Optional['ASTTypeParameterList'] = None
    collate: Optional['ASTCollate'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStructTypeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'struct_fields': {
            'proto_field': 'struct_fields',
            'is_message': True,
            'is_repeated': True,
        },
        'type_parameters': {
            'proto_field': 'type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'collate': {
            'proto_field': 'collate',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSubpipelineStatement(ASTStatement):
    """Generated model for ASTSubpipelineStatementProto"""

    subpipeline: Optional['ASTSubpipeline'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSubpipelineStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'subpipeline': {
            'proto_field': 'subpipeline',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSymbolQuantifier(ASTQuantifier):
    """Generated model for ASTSymbolQuantifierProto"""

    symbol: Optional['ASTSymbolQuantifierEnums.Symbol'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSymbolQuantifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'symbol': {
            'proto_field': 'symbol',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Symbol',
            'enum_parent_message': 'ASTSymbolQuantifierEnums',
        },
    }


@dataclass
class ASTSystemVariableAssignment(ASTStatement):
    """Generated model for ASTSystemVariableAssignmentProto"""

    system_variable: Optional['ASTSystemVariableExpr'] = None
    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSystemVariableAssignmentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'system_variable': {
            'proto_field': 'system_variable',
            'is_message': True,
            'is_repeated': False,
        },
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTTVF(ASTTableExpression):
    """Generated model for ASTTVFProto"""

    name: Optional['ASTPathExpression'] = None
    argument_entries: List['ASTTVFArgument'] = field(default_factory=list)
    hint: Optional['ASTHint'] = None
    alias: Optional['ASTAlias'] = None
    is_lateral: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTVFProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'argument_entries': {
            'proto_field': 'argument_entries',
            'is_message': True,
            'is_repeated': True,
        },
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'is_lateral': {
            'proto_field': 'is_lateral',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTTableClause(ASTQueryExpression):
    """Generated model for ASTTableClauseProto"""

    table_path: Optional['ASTPathExpression'] = None
    tvf: Optional['ASTTVF'] = None
    where_clause: Optional['ASTWhereClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTableClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_path': {
            'proto_field': 'table_path',
            'is_message': True,
            'is_repeated': False,
        },
        'tvf': {
            'proto_field': 'tvf',
            'is_message': True,
            'is_repeated': False,
        },
        'where_clause': {
            'proto_field': 'where_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTTableConstraint(ASTTableElement):
    """Generated model for ASTTableConstraintProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTableConstraintProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTTableDataSource(ASTTableExpression):
    """Generated model for ASTTableDataSourceProto"""

    path_expr: Optional['ASTPathExpression'] = None
    for_system_time: Optional['ASTForSystemTime'] = None
    where_clause: Optional['ASTWhereClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTableDataSourceProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'path_expr': {
            'proto_field': 'path_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'for_system_time': {
            'proto_field': 'for_system_time',
            'is_message': True,
            'is_repeated': False,
        },
        'where_clause': {
            'proto_field': 'where_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTTablePathExpression(ASTTableExpression):
    """Generated model for ASTTablePathExpressionProto"""

    path_expr: Optional['ASTPathExpression'] = None
    unnest_expr: Optional['ASTUnnestExpression'] = None
    hint: Optional['ASTHint'] = None
    alias: Optional['ASTAlias'] = None
    with_offset: Optional['ASTWithOffset'] = None
    for_system_time: Optional['ASTForSystemTime'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTablePathExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'path_expr': {
            'proto_field': 'path_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'unnest_expr': {
            'proto_field': 'unnest_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'with_offset': {
            'proto_field': 'with_offset',
            'is_message': True,
            'is_repeated': False,
        },
        'for_system_time': {
            'proto_field': 'for_system_time',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTTableSubquery(ASTTableExpression):
    """Generated model for ASTTableSubqueryProto"""

    subquery: Optional['ASTQuery'] = None
    alias: Optional['ASTAlias'] = None
    is_lateral: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTableSubqueryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'subquery': {
            'proto_field': 'subquery',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'is_lateral': {
            'proto_field': 'is_lateral',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTTransactionIsolationLevel(ASTTransactionMode):
    """Generated model for ASTTransactionIsolationLevelProto"""

    identifier1: Optional['ASTIdentifier'] = None
    identifier2: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTransactionIsolationLevelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifier1': {
            'proto_field': 'identifier1',
            'is_message': True,
            'is_repeated': False,
        },
        'identifier2': {
            'proto_field': 'identifier2',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTTransactionReadWriteMode(ASTTransactionMode):
    """Generated model for ASTTransactionReadWriteModeProto"""

    mode: Optional['ASTTransactionReadWriteModeEnums.Mode'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTransactionReadWriteModeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'mode': {
            'proto_field': 'mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Mode',
            'enum_parent_message': 'ASTTransactionReadWriteModeEnums',
        },
    }


@dataclass
class ASTTruncateStatement(ASTStatement):
    """Generated model for ASTTruncateStatementProto"""

    target_path: Optional['ASTPathExpression'] = None
    where: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTTruncateStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'target_path': {
            'proto_field': 'target_path',
            'is_message': True,
            'is_repeated': False,
        },
        'where': {
            'proto_field': 'where',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTUnaryExpression(ASTExpression):
    """Generated model for ASTUnaryExpressionProto"""

    operand: Optional['ASTExpression'] = None
    op: Optional['ASTUnaryExpressionEnums.Op'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUnaryExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'operand': {
            'proto_field': 'operand',
            'is_message': True,
            'is_repeated': False,
        },
        'op': {
            'proto_field': 'op',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Op',
            'enum_parent_message': 'ASTUnaryExpressionEnums',
        },
    }


@dataclass
class ASTUnpivotClause(ASTPostfixTableOperator):
    """Generated model for ASTUnpivotClauseProto"""

    unpivot_output_value_columns: Optional['ASTPathExpressionList'] = None
    unpivot_output_name_column: Optional['ASTPathExpression'] = None
    unpivot_in_items: Optional['ASTUnpivotInItemList'] = None
    output_alias: Optional['ASTAlias'] = None
    null_filter: Optional['ASTUnpivotClauseEnums.NullFilter'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUnpivotClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'unpivot_output_value_columns': {
            'proto_field': 'unpivot_output_value_columns',
            'is_message': True,
            'is_repeated': False,
        },
        'unpivot_output_name_column': {
            'proto_field': 'unpivot_output_name_column',
            'is_message': True,
            'is_repeated': False,
        },
        'unpivot_in_items': {
            'proto_field': 'unpivot_in_items',
            'is_message': True,
            'is_repeated': False,
        },
        'output_alias': {
            'proto_field': 'output_alias',
            'is_message': True,
            'is_repeated': False,
        },
        'null_filter': {
            'proto_field': 'null_filter',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'NullFilter',
            'enum_parent_message': 'ASTUnpivotClauseEnums',
        },
    }


@dataclass
class ASTUpdateConstructor(ASTExpression):
    """Generated model for ASTUpdateConstructorProto"""

    function: Optional['ASTFunctionCall'] = None
    braced_constructor: Optional['ASTBracedConstructor'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUpdateConstructorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'function': {
            'proto_field': 'function',
            'is_message': True,
            'is_repeated': False,
        },
        'braced_constructor': {
            'proto_field': 'braced_constructor',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTUpdateStatement(ASTStatement):
    """Generated model for ASTUpdateStatementProto"""

    target_path: Optional['ASTGeneralizedPathExpression'] = None
    alias: Optional['ASTAlias'] = None
    offset: Optional['ASTWithOffset'] = None
    update_item_list: Optional['ASTUpdateItemList'] = None
    from_clause: Optional['ASTFromClause'] = None
    where: Optional['ASTExpression'] = None
    assert_rows_modified: Optional['ASTAssertRowsModified'] = None
    returning: Optional['ASTReturningClause'] = None
    hint: Optional['ASTHint'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUpdateStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'target_path': {
            'proto_field': 'target_path',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': True,
            'is_repeated': False,
        },
        'offset': {
            'proto_field': 'offset',
            'is_message': True,
            'is_repeated': False,
        },
        'update_item_list': {
            'proto_field': 'update_item_list',
            'is_message': True,
            'is_repeated': False,
        },
        'from_clause': {
            'proto_field': 'from_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'where': {
            'proto_field': 'where',
            'is_message': True,
            'is_repeated': False,
        },
        'assert_rows_modified': {
            'proto_field': 'assert_rows_modified',
            'is_message': True,
            'is_repeated': False,
        },
        'returning': {
            'proto_field': 'returning',
            'is_message': True,
            'is_repeated': False,
        },
        'hint': {
            'proto_field': 'hint',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTWithExpression(ASTExpression):
    """Generated model for ASTWithExpressionProto"""

    variables: Optional['ASTSelectList'] = None
    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWithExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'variables': {
            'proto_field': 'variables',
            'is_message': True,
            'is_repeated': False,
        },
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAbortBatchStmt(ResolvedStatement):
    """Generated model for ResolvedAbortBatchStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAbortBatchStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAggregateHavingModifier(ResolvedArgument):
    """Generated model for ResolvedAggregateHavingModifierProto"""

    kind: Optional['ResolvedAggregateHavingModifierEnums.HavingModifierKind'] = None
    having_expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAggregateHavingModifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'kind': {
            'proto_field': 'kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'HavingModifierKind',
            'enum_parent_message': 'ResolvedAggregateHavingModifierEnums',
        },
        'having_expr': {
            'proto_field': 'having_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAggregateScanBase(ResolvedScan):
    """Generated model for ResolvedAggregateScanBaseProto"""

    input_scan: Optional['ResolvedScan'] = None
    group_by_list: List['ResolvedComputedColumn'] = field(default_factory=list)
    collation_list: List['ResolvedCollation'] = field(default_factory=list)
    aggregate_list: List['ResolvedComputedColumnBase'] = field(default_factory=list)
    grouping_set_list: List['ResolvedGroupingSetBase'] = field(default_factory=list)
    rollup_column_list: List['ResolvedColumnRef'] = field(default_factory=list)
    grouping_call_list: List['ResolvedGroupingCall'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAggregateScanBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'group_by_list': {
            'proto_field': 'group_by_list',
            'is_message': True,
            'is_repeated': True,
        },
        'collation_list': {
            'proto_field': 'collation_list',
            'is_message': True,
            'is_repeated': True,
        },
        'aggregate_list': {
            'proto_field': 'aggregate_list',
            'is_message': True,
            'is_repeated': True,
        },
        'grouping_set_list': {
            'proto_field': 'grouping_set_list',
            'is_message': True,
            'is_repeated': True,
        },
        'rollup_column_list': {
            'proto_field': 'rollup_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'grouping_call_list': {
            'proto_field': 'grouping_call_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedAlterAction(ResolvedArgument):
    """Generated model for ResolvedAlterActionProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterObjectStmt(ResolvedStatement):
    """Generated model for ResolvedAlterObjectStmtProto"""

    name_path: List[str] = field(default_factory=list)
    alter_action_list: List['ResolvedAlterAction'] = field(default_factory=list)
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterObjectStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'alter_action_list': {
            'proto_field': 'alter_action_list',
            'is_message': True,
            'is_repeated': True,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAlterTableSetOptionsStmt(ResolvedStatement):
    """Generated model for ResolvedAlterTableSetOptionsStmtProto"""

    name_path: List[str] = field(default_factory=list)
    option_list: List['ResolvedOption'] = field(default_factory=list)
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterTableSetOptionsStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAnalyticFunctionGroup(ResolvedArgument):
    """Generated model for ResolvedAnalyticFunctionGroupProto"""

    partition_by: Optional['ResolvedWindowPartitioning'] = None
    order_by: Optional['ResolvedWindowOrdering'] = None
    analytic_function_list: List['ResolvedComputedColumnBase'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAnalyticFunctionGroupProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'partition_by': {
            'proto_field': 'partition_by',
            'is_message': True,
            'is_repeated': False,
        },
        'order_by': {
            'proto_field': 'order_by',
            'is_message': True,
            'is_repeated': False,
        },
        'analytic_function_list': {
            'proto_field': 'analytic_function_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedAnalyticScan(ResolvedScan):
    """Generated model for ResolvedAnalyticScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    function_group_list: List['ResolvedAnalyticFunctionGroup'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAnalyticScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'function_group_list': {
            'proto_field': 'function_group_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedAnalyzeStmt(ResolvedStatement):
    """Generated model for ResolvedAnalyzeStmtProto"""

    option_list: List['ResolvedOption'] = field(default_factory=list)
    table_and_column_index_list: List['ResolvedTableAndColumnInfo'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAnalyzeStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'table_and_column_index_list': {
            'proto_field': 'table_and_column_index_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedArgumentDef(ResolvedArgument):
    """Generated model for ResolvedArgumentDefProto"""

    name: Optional[str] = None
    type: Optional['Type'] = None
    argument_kind: Optional['ResolvedArgumentDefEnums.ArgumentKind'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedArgumentDefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'argument_kind': {
            'proto_field': 'argument_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ArgumentKind',
            'enum_parent_message': 'ResolvedArgumentDefEnums',
        },
    }


@dataclass
class ResolvedArgumentList(ResolvedArgument):
    """Generated model for ResolvedArgumentListProto"""

    arg_list: List['ResolvedArgumentDef'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedArgumentListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'arg_list': {
            'proto_field': 'arg_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedArgumentRef(ResolvedExpr):
    """Generated model for ResolvedArgumentRefProto"""

    name: Optional[str] = None
    argument_kind: Optional['ResolvedArgumentDefEnums.ArgumentKind'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedArgumentRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'argument_kind': {
            'proto_field': 'argument_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ArgumentKind',
            'enum_parent_message': 'ResolvedArgumentDefEnums',
        },
    }


@dataclass
class ResolvedArrayAggregate(ResolvedExpr):
    """Generated model for ResolvedArrayAggregateProto"""

    array: Optional['ResolvedExpr'] = None
    element_column: Optional['ResolvedColumn'] = None
    pre_aggregate_computed_column_list: List['ResolvedComputedColumn'] = field(default_factory=list)
    aggregate: Optional['ResolvedAggregateFunctionCall'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedArrayAggregateProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'array': {
            'proto_field': 'array',
            'is_message': True,
            'is_repeated': False,
        },
        'element_column': {
            'proto_field': 'element_column',
            'is_message': True,
            'is_repeated': False,
        },
        'pre_aggregate_computed_column_list': {
            'proto_field': 'pre_aggregate_computed_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'aggregate': {
            'proto_field': 'aggregate',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedArrayScan(ResolvedScan):
    """Generated model for ResolvedArrayScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    array_expr_list: List['ResolvedExpr'] = field(default_factory=list)
    element_column_list: List['ResolvedColumn'] = field(default_factory=list)
    array_offset_column: Optional['ResolvedColumnHolder'] = None
    join_expr: Optional['ResolvedExpr'] = None
    is_outer: Optional[bool] = None
    array_zip_mode: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedArrayScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'array_expr_list': {
            'proto_field': 'array_expr_list',
            'is_message': True,
            'is_repeated': True,
        },
        'element_column_list': {
            'proto_field': 'element_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'array_offset_column': {
            'proto_field': 'array_offset_column',
            'is_message': True,
            'is_repeated': False,
        },
        'join_expr': {
            'proto_field': 'join_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'is_outer': {
            'proto_field': 'is_outer',
            'is_message': False,
            'is_repeated': False,
        },
        'array_zip_mode': {
            'proto_field': 'array_zip_mode',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAssertRowsModified(ResolvedArgument):
    """Generated model for ResolvedAssertRowsModifiedProto"""

    rows: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAssertRowsModifiedProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'rows': {
            'proto_field': 'rows',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAssertScan(ResolvedScan):
    """Generated model for ResolvedAssertScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    condition: Optional['ResolvedExpr'] = None
    message: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAssertScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'condition': {
            'proto_field': 'condition',
            'is_message': True,
            'is_repeated': False,
        },
        'message': {
            'proto_field': 'message',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAssertStmt(ResolvedStatement):
    """Generated model for ResolvedAssertStmtProto"""

    expression: Optional['ResolvedExpr'] = None
    description: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAssertStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'description': {
            'proto_field': 'description',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAssignmentStmt(ResolvedStatement):
    """Generated model for ResolvedAssignmentStmtProto"""

    target: Optional['ResolvedExpr'] = None
    expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAssignmentStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'target': {
            'proto_field': 'target',
            'is_message': True,
            'is_repeated': False,
        },
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAuxLoadDataPartitionFilter(ResolvedArgument):
    """Generated model for ResolvedAuxLoadDataPartitionFilterProto"""

    filter: Optional['ResolvedExpr'] = None
    is_overwrite: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAuxLoadDataPartitionFilterProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'filter': {
            'proto_field': 'filter',
            'is_message': True,
            'is_repeated': False,
        },
        'is_overwrite': {
            'proto_field': 'is_overwrite',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAuxLoadDataStmt(ResolvedStatement):
    """Generated model for ResolvedAuxLoadDataStmtProto"""

    insertion_mode: Optional['ResolvedAuxLoadDataStmtEnums.InsertionMode'] = None
    is_temp_table: Optional[bool] = None
    name_path: List[str] = field(default_factory=list)
    partition_filter: Optional['ResolvedAuxLoadDataPartitionFilter'] = None
    output_column_list: List['ResolvedOutputColumn'] = field(default_factory=list)
    column_definition_list: List['ResolvedColumnDefinition'] = field(default_factory=list)
    pseudo_column_list: List['ResolvedColumn'] = field(default_factory=list)
    primary_key: Optional['ResolvedPrimaryKey'] = None
    foreign_key_list: List['ResolvedForeignKey'] = field(default_factory=list)
    check_constraint_list: List['ResolvedCheckConstraint'] = field(default_factory=list)
    partition_by_list: List['ResolvedExpr'] = field(default_factory=list)
    cluster_by_list: List['ResolvedExpr'] = field(default_factory=list)
    option_list: List['ResolvedOption'] = field(default_factory=list)
    with_partition_columns: Optional['ResolvedWithPartitionColumns'] = None
    connection: Optional['ResolvedConnection'] = None
    from_files_option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAuxLoadDataStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'insertion_mode': {
            'proto_field': 'insertion_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'InsertionMode',
            'enum_parent_message': 'ResolvedAuxLoadDataStmtEnums',
        },
        'is_temp_table': {
            'proto_field': 'is_temp_table',
            'is_message': False,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'partition_filter': {
            'proto_field': 'partition_filter',
            'is_message': True,
            'is_repeated': False,
        },
        'output_column_list': {
            'proto_field': 'output_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'column_definition_list': {
            'proto_field': 'column_definition_list',
            'is_message': True,
            'is_repeated': True,
        },
        'pseudo_column_list': {
            'proto_field': 'pseudo_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'primary_key': {
            'proto_field': 'primary_key',
            'is_message': True,
            'is_repeated': False,
        },
        'foreign_key_list': {
            'proto_field': 'foreign_key_list',
            'is_message': True,
            'is_repeated': True,
        },
        'check_constraint_list': {
            'proto_field': 'check_constraint_list',
            'is_message': True,
            'is_repeated': True,
        },
        'partition_by_list': {
            'proto_field': 'partition_by_list',
            'is_message': True,
            'is_repeated': True,
        },
        'cluster_by_list': {
            'proto_field': 'cluster_by_list',
            'is_message': True,
            'is_repeated': True,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'with_partition_columns': {
            'proto_field': 'with_partition_columns',
            'is_message': True,
            'is_repeated': False,
        },
        'connection': {
            'proto_field': 'connection',
            'is_message': True,
            'is_repeated': False,
        },
        'from_files_option_list': {
            'proto_field': 'from_files_option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedBarrierScan(ResolvedScan):
    """Generated model for ResolvedBarrierScanProto"""

    input_scan: Optional['ResolvedScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedBarrierScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedBeginStmt(ResolvedStatement):
    """Generated model for ResolvedBeginStmtProto"""

    read_write_mode: Optional['ResolvedBeginStmtEnums.ReadWriteMode'] = None
    isolation_level_list: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedBeginStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'read_write_mode': {
            'proto_field': 'read_write_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ReadWriteMode',
            'enum_parent_message': 'ResolvedBeginStmtEnums',
        },
        'isolation_level_list': {
            'proto_field': 'isolation_level_list',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCallStmt(ResolvedStatement):
    """Generated model for ResolvedCallStmtProto"""

    procedure: Optional['ProcedureRef'] = None
    signature: Optional['FunctionSignature'] = None
    argument_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCallStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'procedure': {
            'proto_field': 'procedure',
            'is_message': True,
            'is_repeated': False,
        },
        'signature': {
            'proto_field': 'signature',
            'is_message': True,
            'is_repeated': False,
        },
        'argument_list': {
            'proto_field': 'argument_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCast(ResolvedExpr):
    """Generated model for ResolvedCastProto"""

    expr: Optional['ResolvedExpr'] = None
    return_null_on_error: Optional[bool] = None
    extended_cast: Optional['ResolvedExtendedCast'] = None
    format: Optional['ResolvedExpr'] = None
    time_zone: Optional['ResolvedExpr'] = None
    type_modifiers: Optional['TypeModifiers'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCastProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'return_null_on_error': {
            'proto_field': 'return_null_on_error',
            'is_message': False,
            'is_repeated': False,
        },
        'extended_cast': {
            'proto_field': 'extended_cast',
            'is_message': True,
            'is_repeated': False,
        },
        'format': {
            'proto_field': 'format',
            'is_message': True,
            'is_repeated': False,
        },
        'time_zone': {
            'proto_field': 'time_zone',
            'is_message': True,
            'is_repeated': False,
        },
        'type_modifiers': {
            'proto_field': 'type_modifiers',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCatalogColumnRef(ResolvedExpr):
    """Generated model for ResolvedCatalogColumnRefProto"""

    column: Optional['ColumnRef'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCatalogColumnRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCloneDataStmt(ResolvedStatement):
    """Generated model for ResolvedCloneDataStmtProto"""

    target_table: Optional['ResolvedTableScan'] = None
    clone_from: Optional['ResolvedScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCloneDataStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'target_table': {
            'proto_field': 'target_table',
            'is_message': True,
            'is_repeated': False,
        },
        'clone_from': {
            'proto_field': 'clone_from',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedColumnAnnotations(ResolvedArgument):
    """Generated model for ResolvedColumnAnnotationsProto"""

    collation_name: Optional['ResolvedExpr'] = None
    not_null: Optional[bool] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)
    child_list: List['ResolvedColumnAnnotations'] = field(default_factory=list)
    type_parameters: Optional['TypeParameters'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedColumnAnnotationsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'collation_name': {
            'proto_field': 'collation_name',
            'is_message': True,
            'is_repeated': False,
        },
        'not_null': {
            'proto_field': 'not_null',
            'is_message': False,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'child_list': {
            'proto_field': 'child_list',
            'is_message': True,
            'is_repeated': True,
        },
        'type_parameters': {
            'proto_field': 'type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedColumnDefaultValue(ResolvedArgument):
    """Generated model for ResolvedColumnDefaultValueProto"""

    expression: Optional['ResolvedExpr'] = None
    sql: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedColumnDefaultValueProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'sql': {
            'proto_field': 'sql',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedColumnDefinition(ResolvedArgument):
    """Generated model for ResolvedColumnDefinitionProto"""

    name: Optional[str] = None
    type: Optional['Type'] = None
    annotations: Optional['ResolvedColumnAnnotations'] = None
    is_hidden: Optional[bool] = None
    column: Optional['ResolvedColumn'] = None
    generated_column_info: Optional['ResolvedGeneratedColumnInfo'] = None
    default_value: Optional['ResolvedColumnDefaultValue'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedColumnDefinitionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'annotations': {
            'proto_field': 'annotations',
            'is_message': True,
            'is_repeated': False,
        },
        'is_hidden': {
            'proto_field': 'is_hidden',
            'is_message': False,
            'is_repeated': False,
        },
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': False,
        },
        'generated_column_info': {
            'proto_field': 'generated_column_info',
            'is_message': True,
            'is_repeated': False,
        },
        'default_value': {
            'proto_field': 'default_value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedColumnHolder(ResolvedArgument):
    """Generated model for ResolvedColumnHolderProto"""

    column: Optional['ResolvedColumn'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedColumnHolderProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedColumnRef(ResolvedExpr):
    """Generated model for ResolvedColumnRefProto"""

    column: Optional['ResolvedColumn'] = None
    is_correlated: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedColumnRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': False,
        },
        'is_correlated': {
            'proto_field': 'is_correlated',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCommitStmt(ResolvedStatement):
    """Generated model for ResolvedCommitStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCommitStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedComputedColumnBase(ResolvedArgument):
    """Generated model for ResolvedComputedColumnBaseProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedComputedColumnBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedConnection(ResolvedArgument):
    """Generated model for ResolvedConnectionProto"""

    connection: Optional['ConnectionRef'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedConnectionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'connection': {
            'proto_field': 'connection',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedConstant(ResolvedExpr):
    """Generated model for ResolvedConstantProto"""

    constant: Optional['ConstantRef'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedConstantProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'constant': {
            'proto_field': 'constant',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedConstraint(ResolvedArgument):
    """Generated model for ResolvedConstraintProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedConstraintProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedCreateDatabaseStmt(ResolvedStatement):
    """Generated model for ResolvedCreateDatabaseStmtProto"""

    name_path: List[str] = field(default_factory=list)
    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateDatabaseStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCreateModelAliasedQuery(ResolvedArgument):
    """Generated model for ResolvedCreateModelAliasedQueryProto"""

    alias: Optional[str] = None
    query: Optional['ResolvedScan'] = None
    output_column_list: List['ResolvedOutputColumn'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateModelAliasedQueryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'alias': {
            'proto_field': 'alias',
            'is_message': False,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'output_column_list': {
            'proto_field': 'output_column_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCreateRowAccessPolicyStmt(ResolvedStatement):
    """Generated model for ResolvedCreateRowAccessPolicyStmtProto"""

    create_mode: Optional['ResolvedCreateStatementEnums.CreateMode'] = None
    name: Optional[str] = None
    target_name_path: List[str] = field(default_factory=list)
    grantee_list: List[str] = field(default_factory=list)
    grantee_expr_list: List['ResolvedExpr'] = field(default_factory=list)
    table_scan: Optional['ResolvedTableScan'] = None
    predicate: Optional['ResolvedExpr'] = None
    predicate_str: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateRowAccessPolicyStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'create_mode': {
            'proto_field': 'create_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'CreateMode',
            'enum_parent_message': 'ResolvedCreateStatementEnums',
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'target_name_path': {
            'proto_field': 'target_name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'grantee_list': {
            'proto_field': 'grantee_list',
            'is_message': False,
            'is_repeated': True,
        },
        'grantee_expr_list': {
            'proto_field': 'grantee_expr_list',
            'is_message': True,
            'is_repeated': True,
        },
        'table_scan': {
            'proto_field': 'table_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'predicate': {
            'proto_field': 'predicate',
            'is_message': True,
            'is_repeated': False,
        },
        'predicate_str': {
            'proto_field': 'predicate_str',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCreateStatement(ResolvedStatement):
    """Generated model for ResolvedCreateStatementProto"""

    name_path: List[str] = field(default_factory=list)
    create_scope: Optional['ResolvedCreateStatementEnums.CreateScope'] = None
    create_mode: Optional['ResolvedCreateStatementEnums.CreateMode'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'create_scope': {
            'proto_field': 'create_scope',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'CreateScope',
            'enum_parent_message': 'ResolvedCreateStatementEnums',
        },
        'create_mode': {
            'proto_field': 'create_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'CreateMode',
            'enum_parent_message': 'ResolvedCreateStatementEnums',
        },
    }


@dataclass
class ResolvedCreateWithEntryStmt(ResolvedStatement):
    """Generated model for ResolvedCreateWithEntryStmtProto"""

    with_entry: Optional['ResolvedWithEntry'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateWithEntryStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'with_entry': {
            'proto_field': 'with_entry',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedDMLDefault(ResolvedExpr):
    """Generated model for ResolvedDMLDefaultProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDMLDefaultProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedDMLValue(ResolvedArgument):
    """Generated model for ResolvedDMLValueProto"""

    value: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDMLValueProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedDefineTableStmt(ResolvedStatement):
    """Generated model for ResolvedDefineTableStmtProto"""

    name_path: List[str] = field(default_factory=list)
    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDefineTableStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedDeleteStmt(ResolvedStatement):
    """Generated model for ResolvedDeleteStmtProto"""

    table_scan: Optional['ResolvedTableScan'] = None
    assert_rows_modified: Optional['ResolvedAssertRowsModified'] = None
    returning: Optional['ResolvedReturningClause'] = None
    column_access_list: List['ResolvedStatementEnums.ObjectAccess'] = field(default_factory=list)
    array_offset_column: Optional['ResolvedColumnHolder'] = None
    where_expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDeleteStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_scan': {
            'proto_field': 'table_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'assert_rows_modified': {
            'proto_field': 'assert_rows_modified',
            'is_message': True,
            'is_repeated': False,
        },
        'returning': {
            'proto_field': 'returning',
            'is_message': True,
            'is_repeated': False,
        },
        'column_access_list': {
            'proto_field': 'column_access_list',
            'is_message': False,
            'is_repeated': True,
            'is_enum': True,
            'enum_type_name': 'ObjectAccess',
            'enum_parent_message': 'ResolvedStatementEnums',
        },
        'array_offset_column': {
            'proto_field': 'array_offset_column',
            'is_message': True,
            'is_repeated': False,
        },
        'where_expr': {
            'proto_field': 'where_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedDescribeScan(ResolvedScan):
    """Generated model for ResolvedDescribeScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    describe_expr: Optional['ResolvedComputedColumn'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDescribeScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'describe_expr': {
            'proto_field': 'describe_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedDescribeStmt(ResolvedStatement):
    """Generated model for ResolvedDescribeStmtProto"""

    object_type: Optional[str] = None
    name_path: List[str] = field(default_factory=list)
    from_name_path: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDescribeStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'object_type': {
            'proto_field': 'object_type',
            'is_message': False,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'from_name_path': {
            'proto_field': 'from_name_path',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedDescriptor(ResolvedArgument):
    """Generated model for ResolvedDescriptorProto"""

    descriptor_column_list: List['ResolvedColumn'] = field(default_factory=list)
    descriptor_column_name_list: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDescriptorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'descriptor_column_list': {
            'proto_field': 'descriptor_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'descriptor_column_name_list': {
            'proto_field': 'descriptor_column_name_list',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedDropFunctionStmt(ResolvedStatement):
    """Generated model for ResolvedDropFunctionStmtProto"""

    is_if_exists: Optional[bool] = None
    name_path: List[str] = field(default_factory=list)
    arguments: Optional['ResolvedArgumentList'] = None
    signature: Optional['ResolvedFunctionSignatureHolder'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDropFunctionStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'arguments': {
            'proto_field': 'arguments',
            'is_message': True,
            'is_repeated': False,
        },
        'signature': {
            'proto_field': 'signature',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedDropIndexStmt(ResolvedStatement):
    """Generated model for ResolvedDropIndexStmtProto"""

    is_if_exists: Optional[bool] = None
    name: Optional[str] = None
    table_name_path: List[str] = field(default_factory=list)
    index_type: Optional['ResolvedDropIndexStmtEnums.IndexType'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDropIndexStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'table_name_path': {
            'proto_field': 'table_name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'index_type': {
            'proto_field': 'index_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'IndexType',
            'enum_parent_message': 'ResolvedDropIndexStmtEnums',
        },
    }


@dataclass
class ResolvedDropMaterializedViewStmt(ResolvedStatement):
    """Generated model for ResolvedDropMaterializedViewStmtProto"""

    is_if_exists: Optional[bool] = None
    name_path: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDropMaterializedViewStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedDropPrivilegeRestrictionStmt(ResolvedStatement):
    """Generated model for ResolvedDropPrivilegeRestrictionStmtProto"""

    object_type: Optional[str] = None
    is_if_exists: Optional[bool] = None
    name_path: List[str] = field(default_factory=list)
    column_privilege_list: List['ResolvedPrivilege'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDropPrivilegeRestrictionStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'object_type': {
            'proto_field': 'object_type',
            'is_message': False,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'column_privilege_list': {
            'proto_field': 'column_privilege_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedDropRowAccessPolicyStmt(ResolvedStatement):
    """Generated model for ResolvedDropRowAccessPolicyStmtProto"""

    is_drop_all: Optional[bool] = None
    is_if_exists: Optional[bool] = None
    name: Optional[str] = None
    target_name_path: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDropRowAccessPolicyStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_drop_all': {
            'proto_field': 'is_drop_all',
            'is_message': False,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'target_name_path': {
            'proto_field': 'target_name_path',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedDropSnapshotTableStmt(ResolvedStatement):
    """Generated model for ResolvedDropSnapshotTableStmtProto"""

    is_if_exists: Optional[bool] = None
    name_path: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDropSnapshotTableStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedDropStmt(ResolvedStatement):
    """Generated model for ResolvedDropStmtProto"""

    object_type: Optional[str] = None
    is_if_exists: Optional[bool] = None
    name_path: List[str] = field(default_factory=list)
    drop_mode: Optional['ResolvedDropStmtEnums.DropMode'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDropStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'object_type': {
            'proto_field': 'object_type',
            'is_message': False,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'drop_mode': {
            'proto_field': 'drop_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'DropMode',
            'enum_parent_message': 'ResolvedDropStmtEnums',
        },
    }


@dataclass
class ResolvedDropTableFunctionStmt(ResolvedStatement):
    """Generated model for ResolvedDropTableFunctionStmtProto"""

    is_if_exists: Optional[bool] = None
    name_path: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDropTableFunctionStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedExecuteAsRoleScan(ResolvedScan):
    """Generated model for ResolvedExecuteAsRoleScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    original_inlined_view: Optional['TableRef'] = None
    original_inlined_tvf: Optional['TableValuedFunctionRef'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedExecuteAsRoleScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'original_inlined_view': {
            'proto_field': 'original_inlined_view',
            'is_message': True,
            'is_repeated': False,
        },
        'original_inlined_tvf': {
            'proto_field': 'original_inlined_tvf',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedExecuteImmediateArgument(ResolvedArgument):
    """Generated model for ResolvedExecuteImmediateArgumentProto"""

    name: Optional[str] = None
    expression: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedExecuteImmediateArgumentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedExecuteImmediateStmt(ResolvedStatement):
    """Generated model for ResolvedExecuteImmediateStmtProto"""

    sql: Optional['ResolvedExpr'] = None
    into_identifier_list: List[str] = field(default_factory=list)
    using_argument_list: List['ResolvedExecuteImmediateArgument'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedExecuteImmediateStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sql': {
            'proto_field': 'sql',
            'is_message': True,
            'is_repeated': False,
        },
        'into_identifier_list': {
            'proto_field': 'into_identifier_list',
            'is_message': False,
            'is_repeated': True,
        },
        'using_argument_list': {
            'proto_field': 'using_argument_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedExplainStmt(ResolvedStatement):
    """Generated model for ResolvedExplainStmtProto"""

    statement: Optional['ResolvedStatement'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedExplainStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'statement': {
            'proto_field': 'statement',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedExportDataStmt(ResolvedStatement):
    """Generated model for ResolvedExportDataStmtProto"""

    connection: Optional['ResolvedConnection'] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)
    output_column_list: List['ResolvedOutputColumn'] = field(default_factory=list)
    is_value_table: Optional[bool] = None
    query: Optional['ResolvedScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedExportDataStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'connection': {
            'proto_field': 'connection',
            'is_message': True,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'output_column_list': {
            'proto_field': 'output_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'is_value_table': {
            'proto_field': 'is_value_table',
            'is_message': False,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedExportMetadataStmt(ResolvedStatement):
    """Generated model for ResolvedExportMetadataStmtProto"""

    schema_object_kind: Optional[str] = None
    name_path: List[str] = field(default_factory=list)
    connection: Optional['ResolvedConnection'] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedExportMetadataStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'schema_object_kind': {
            'proto_field': 'schema_object_kind',
            'is_message': False,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'connection': {
            'proto_field': 'connection',
            'is_message': True,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedExportModelStmt(ResolvedStatement):
    """Generated model for ResolvedExportModelStmtProto"""

    model_name_path: List[str] = field(default_factory=list)
    connection: Optional['ResolvedConnection'] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedExportModelStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'model_name_path': {
            'proto_field': 'model_name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'connection': {
            'proto_field': 'connection',
            'is_message': True,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedExpressionColumn(ResolvedExpr):
    """Generated model for ResolvedExpressionColumnProto"""

    name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedExpressionColumnProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedExtendedCast(ResolvedArgument):
    """Generated model for ResolvedExtendedCastProto"""

    element_list: List['ResolvedExtendedCastElement'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedExtendedCastProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'element_list': {
            'proto_field': 'element_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedExtendedCastElement(ResolvedArgument):
    """Generated model for ResolvedExtendedCastElementProto"""

    from_type: Optional['Type'] = None
    to_type: Optional['Type'] = None
    function: Optional['FunctionRef'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedExtendedCastElementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'from_type': {
            'proto_field': 'from_type',
            'is_message': True,
            'is_repeated': False,
        },
        'to_type': {
            'proto_field': 'to_type',
            'is_message': True,
            'is_repeated': False,
        },
        'function': {
            'proto_field': 'function',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedFilterField(ResolvedExpr):
    """Generated model for ResolvedFilterFieldProto"""

    expr: Optional['ResolvedExpr'] = None
    filter_field_arg_list: List['ResolvedFilterFieldArg'] = field(default_factory=list)
    reset_cleared_required_fields: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedFilterFieldProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'filter_field_arg_list': {
            'proto_field': 'filter_field_arg_list',
            'is_message': True,
            'is_repeated': True,
        },
        'reset_cleared_required_fields': {
            'proto_field': 'reset_cleared_required_fields',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedFilterFieldArg(ResolvedArgument):
    """Generated model for ResolvedFilterFieldArgProto"""

    include: Optional[bool] = None
    field_descriptor_path: List['FieldDescriptorRef'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedFilterFieldArgProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'include': {
            'proto_field': 'include',
            'is_message': False,
            'is_repeated': False,
        },
        'field_descriptor_path': {
            'proto_field': 'field_descriptor_path',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedFilterScan(ResolvedScan):
    """Generated model for ResolvedFilterScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    filter_expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedFilterScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'filter_expr': {
            'proto_field': 'filter_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedFlatten(ResolvedExpr):
    """Generated model for ResolvedFlattenProto"""

    expr: Optional['ResolvedExpr'] = None
    get_field_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedFlattenProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'get_field_list': {
            'proto_field': 'get_field_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedFlattenedArg(ResolvedExpr):
    """Generated model for ResolvedFlattenedArgProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedFlattenedArgProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedFunctionArgument(ResolvedArgument):
    """Generated model for ResolvedFunctionArgumentProto"""

    expr: Optional['ResolvedExpr'] = None
    scan: Optional['ResolvedScan'] = None
    model: Optional['ResolvedModel'] = None
    connection: Optional['ResolvedConnection'] = None
    descriptor_arg: Optional['ResolvedDescriptor'] = None
    argument_column_list: List['ResolvedColumn'] = field(default_factory=list)
    inline_lambda: Optional['ResolvedInlineLambda'] = None
    sequence: Optional['ResolvedSequence'] = None
    graph: Optional['PropertyGraphRef'] = None
    argument_alias: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedFunctionArgumentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'scan': {
            'proto_field': 'scan',
            'is_message': True,
            'is_repeated': False,
        },
        'model': {
            'proto_field': 'model',
            'is_message': True,
            'is_repeated': False,
        },
        'connection': {
            'proto_field': 'connection',
            'is_message': True,
            'is_repeated': False,
        },
        'descriptor_arg': {
            'proto_field': 'descriptor_arg',
            'is_message': True,
            'is_repeated': False,
        },
        'argument_column_list': {
            'proto_field': 'argument_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'inline_lambda': {
            'proto_field': 'inline_lambda',
            'is_message': True,
            'is_repeated': False,
        },
        'sequence': {
            'proto_field': 'sequence',
            'is_message': True,
            'is_repeated': False,
        },
        'graph': {
            'proto_field': 'graph',
            'is_message': True,
            'is_repeated': False,
        },
        'argument_alias': {
            'proto_field': 'argument_alias',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedFunctionCallBase(ResolvedExpr):
    """Generated model for ResolvedFunctionCallBaseProto"""

    function: Optional['FunctionRef'] = None
    signature: Optional['FunctionSignature'] = None
    argument_list: List['ResolvedExpr'] = field(default_factory=list)
    generic_argument_list: List['ResolvedFunctionArgument'] = field(default_factory=list)
    error_mode: Optional['ResolvedFunctionCallBaseEnums.ErrorMode'] = None
    hint_list: List['ResolvedOption'] = field(default_factory=list)
    collation_list: List['ResolvedCollation'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedFunctionCallBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'function': {
            'proto_field': 'function',
            'is_message': True,
            'is_repeated': False,
        },
        'signature': {
            'proto_field': 'signature',
            'is_message': True,
            'is_repeated': False,
        },
        'argument_list': {
            'proto_field': 'argument_list',
            'is_message': True,
            'is_repeated': True,
        },
        'generic_argument_list': {
            'proto_field': 'generic_argument_list',
            'is_message': True,
            'is_repeated': True,
        },
        'error_mode': {
            'proto_field': 'error_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ErrorMode',
            'enum_parent_message': 'ResolvedFunctionCallBaseEnums',
        },
        'hint_list': {
            'proto_field': 'hint_list',
            'is_message': True,
            'is_repeated': True,
        },
        'collation_list': {
            'proto_field': 'collation_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedFunctionSignatureHolder(ResolvedArgument):
    """Generated model for ResolvedFunctionSignatureHolderProto"""

    signature: Optional['FunctionSignature'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedFunctionSignatureHolderProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'signature': {
            'proto_field': 'signature',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGeneralizedQueryStmt(ResolvedStatement):
    """Generated model for ResolvedGeneralizedQueryStmtProto"""

    output_schema: Optional['ResolvedOutputSchema'] = None
    query: Optional['ResolvedScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGeneralizedQueryStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'output_schema': {
            'proto_field': 'output_schema',
            'is_message': True,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGeneralizedQuerySubpipeline(ResolvedArgument):
    """Generated model for ResolvedGeneralizedQuerySubpipelineProto"""

    subpipeline: Optional['ResolvedSubpipeline'] = None
    output_schema: Optional['ResolvedOutputSchema'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGeneralizedQuerySubpipelineProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'subpipeline': {
            'proto_field': 'subpipeline',
            'is_message': True,
            'is_repeated': False,
        },
        'output_schema': {
            'proto_field': 'output_schema',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGeneratedColumnInfo(ResolvedArgument):
    """Generated model for ResolvedGeneratedColumnInfoProto"""

    expression: Optional['ResolvedExpr'] = None
    stored_mode: Optional['ResolvedGeneratedColumnInfoEnums.StoredMode'] = None
    generated_mode: Optional['ResolvedGeneratedColumnInfoEnums.GeneratedMode'] = None
    identity_column_info: Optional['ResolvedIdentityColumnInfo'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGeneratedColumnInfoProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'stored_mode': {
            'proto_field': 'stored_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'StoredMode',
            'enum_parent_message': 'ResolvedGeneratedColumnInfoEnums',
        },
        'generated_mode': {
            'proto_field': 'generated_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'GeneratedMode',
            'enum_parent_message': 'ResolvedGeneratedColumnInfoEnums',
        },
        'identity_column_info': {
            'proto_field': 'identity_column_info',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGetJsonField(ResolvedExpr):
    """Generated model for ResolvedGetJsonFieldProto"""

    expr: Optional['ResolvedExpr'] = None
    field_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGetJsonFieldProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'field_name': {
            'proto_field': 'field_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGetProtoField(ResolvedExpr):
    """Generated model for ResolvedGetProtoFieldProto"""

    expr: Optional['ResolvedExpr'] = None
    field_descriptor: Optional['FieldDescriptorRef'] = None
    default_value: Optional['ValueWithType'] = None
    get_has_bit: Optional[bool] = None
    format: Optional['FieldFormat.Format'] = None
    return_default_value_when_unset: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGetProtoFieldProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'field_descriptor': {
            'proto_field': 'field_descriptor',
            'is_message': True,
            'is_repeated': False,
        },
        'default_value': {
            'proto_field': 'default_value',
            'is_message': True,
            'is_repeated': False,
        },
        'get_has_bit': {
            'proto_field': 'get_has_bit',
            'is_message': False,
            'is_repeated': False,
        },
        'format': {
            'proto_field': 'format',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Format',
            'enum_parent_message': 'FieldFormat',
        },
        'return_default_value_when_unset': {
            'proto_field': 'return_default_value_when_unset',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGetProtoOneof(ResolvedExpr):
    """Generated model for ResolvedGetProtoOneofProto"""

    expr: Optional['ResolvedExpr'] = None
    oneof_descriptor: Optional['OneofDescriptorRef'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGetProtoOneofProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'oneof_descriptor': {
            'proto_field': 'oneof_descriptor',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGetRowField(ResolvedExpr):
    """Generated model for ResolvedGetRowFieldProto"""

    expr: Optional['ResolvedExpr'] = None
    column: Optional['ColumnRef'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGetRowFieldProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGetStructField(ResolvedExpr):
    """Generated model for ResolvedGetStructFieldProto"""

    expr: Optional['ResolvedExpr'] = None
    field_idx: Optional[int] = None
    field_expr_is_positional: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGetStructFieldProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'field_idx': {
            'proto_field': 'field_idx',
            'is_message': False,
            'is_repeated': False,
        },
        'field_expr_is_positional': {
            'proto_field': 'field_expr_is_positional',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGrantOrRevokeStmt(ResolvedStatement):
    """Generated model for ResolvedGrantOrRevokeStmtProto"""

    privilege_list: List['ResolvedPrivilege'] = field(default_factory=list)
    object_type_list: List[str] = field(default_factory=list)
    name_path: List[str] = field(default_factory=list)
    grantee_list: List[str] = field(default_factory=list)
    grantee_expr_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGrantOrRevokeStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'privilege_list': {
            'proto_field': 'privilege_list',
            'is_message': True,
            'is_repeated': True,
        },
        'object_type_list': {
            'proto_field': 'object_type_list',
            'is_message': False,
            'is_repeated': True,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'grantee_list': {
            'proto_field': 'grantee_list',
            'is_message': False,
            'is_repeated': True,
        },
        'grantee_expr_list': {
            'proto_field': 'grantee_expr_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedGraphCallScan(ResolvedScan):
    """Generated model for ResolvedGraphCallScanProto"""

    optional: Optional[bool] = None
    subquery: Optional['ResolvedScan'] = None
    input_scan: Optional['ResolvedScan'] = None
    parameter_list: List['ResolvedColumnRef'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphCallScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'optional': {
            'proto_field': 'optional',
            'is_message': False,
            'is_repeated': False,
        },
        'subquery': {
            'proto_field': 'subquery',
            'is_message': True,
            'is_repeated': False,
        },
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'parameter_list': {
            'proto_field': 'parameter_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedGraphDynamicLabelSpecification(ResolvedArgument):
    """Generated model for ResolvedGraphDynamicLabelSpecificationProto"""

    label_expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphDynamicLabelSpecificationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'label_expr': {
            'proto_field': 'label_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphDynamicPropertiesSpecification(ResolvedArgument):
    """Generated model for ResolvedGraphDynamicPropertiesSpecificationProto"""

    property_expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphDynamicPropertiesSpecificationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'property_expr': {
            'proto_field': 'property_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphElementIdentifier(ResolvedArgument):
    """Generated model for ResolvedGraphElementIdentifierProto"""

    element_table: Optional['GraphElementTableRef'] = None
    key_list: List['ResolvedExpr'] = field(default_factory=list)
    source_node_identifier: Optional['ResolvedGraphElementIdentifier'] = None
    dest_node_identifier: Optional['ResolvedGraphElementIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphElementIdentifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'element_table': {
            'proto_field': 'element_table',
            'is_message': True,
            'is_repeated': False,
        },
        'key_list': {
            'proto_field': 'key_list',
            'is_message': True,
            'is_repeated': True,
        },
        'source_node_identifier': {
            'proto_field': 'source_node_identifier',
            'is_message': True,
            'is_repeated': False,
        },
        'dest_node_identifier': {
            'proto_field': 'dest_node_identifier',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphElementLabel(ResolvedArgument):
    """Generated model for ResolvedGraphElementLabelProto"""

    name: Optional[str] = None
    property_declaration_name_list: List[str] = field(default_factory=list)
    options_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphElementLabelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'property_declaration_name_list': {
            'proto_field': 'property_declaration_name_list',
            'is_message': False,
            'is_repeated': True,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedGraphElementProperty(ResolvedArgument):
    """Generated model for ResolvedGraphElementPropertyProto"""

    declaration: Optional['GraphPropertyDeclarationRef'] = None
    expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphElementPropertyProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'declaration': {
            'proto_field': 'declaration',
            'is_message': True,
            'is_repeated': False,
        },
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphElementTable(ResolvedArgument):
    """Generated model for ResolvedGraphElementTableProto"""

    alias: Optional[str] = None
    input_scan: Optional['ResolvedScan'] = None
    key_list: List['ResolvedExpr'] = field(default_factory=list)
    source_node_reference: Optional['ResolvedGraphNodeTableReference'] = None
    dest_node_reference: Optional['ResolvedGraphNodeTableReference'] = None
    label_name_list: List[str] = field(default_factory=list)
    property_definition_list: List['ResolvedGraphPropertyDefinition'] = field(default_factory=list)
    dynamic_label: Optional['ResolvedGraphDynamicLabelSpecification'] = None
    dynamic_properties: Optional['ResolvedGraphDynamicPropertiesSpecification'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphElementTableProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'alias': {
            'proto_field': 'alias',
            'is_message': False,
            'is_repeated': False,
        },
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'key_list': {
            'proto_field': 'key_list',
            'is_message': True,
            'is_repeated': True,
        },
        'source_node_reference': {
            'proto_field': 'source_node_reference',
            'is_message': True,
            'is_repeated': False,
        },
        'dest_node_reference': {
            'proto_field': 'dest_node_reference',
            'is_message': True,
            'is_repeated': False,
        },
        'label_name_list': {
            'proto_field': 'label_name_list',
            'is_message': False,
            'is_repeated': True,
        },
        'property_definition_list': {
            'proto_field': 'property_definition_list',
            'is_message': True,
            'is_repeated': True,
        },
        'dynamic_label': {
            'proto_field': 'dynamic_label',
            'is_message': True,
            'is_repeated': False,
        },
        'dynamic_properties': {
            'proto_field': 'dynamic_properties',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphGetElementProperty(ResolvedExpr):
    """Generated model for ResolvedGraphGetElementPropertyProto"""

    expr: Optional['ResolvedExpr'] = None
    property: Optional['GraphPropertyDeclarationRef'] = None
    property_name: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphGetElementPropertyProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'property': {
            'proto_field': 'property',
            'is_message': True,
            'is_repeated': False,
        },
        'property_name': {
            'proto_field': 'property_name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphIsLabeledPredicate(ResolvedExpr):
    """Generated model for ResolvedGraphIsLabeledPredicateProto"""

    is_not: Optional[bool] = None
    expr: Optional['ResolvedExpr'] = None
    label_expr: Optional['ResolvedGraphLabelExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphIsLabeledPredicateProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_not': {
            'proto_field': 'is_not',
            'is_message': False,
            'is_repeated': False,
        },
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'label_expr': {
            'proto_field': 'label_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphLabelExpr(ResolvedArgument):
    """Generated model for ResolvedGraphLabelExprProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphLabelExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedGraphMakeArrayVariable(ResolvedArgument):
    """Generated model for ResolvedGraphMakeArrayVariableProto"""

    element: Optional['ResolvedColumn'] = None
    array: Optional['ResolvedColumn'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphMakeArrayVariableProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'element': {
            'proto_field': 'element',
            'is_message': True,
            'is_repeated': False,
        },
        'array': {
            'proto_field': 'array',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphMakeElement(ResolvedExpr):
    """Generated model for ResolvedGraphMakeElementProto"""

    identifier: Optional['ResolvedGraphElementIdentifier'] = None
    property_list: List['ResolvedGraphElementProperty'] = field(default_factory=list)
    label_list: List['GraphElementLabelRef'] = field(default_factory=list)
    dynamic_labels: Optional['ResolvedExpr'] = None
    dynamic_properties: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphMakeElementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifier': {
            'proto_field': 'identifier',
            'is_message': True,
            'is_repeated': False,
        },
        'property_list': {
            'proto_field': 'property_list',
            'is_message': True,
            'is_repeated': True,
        },
        'label_list': {
            'proto_field': 'label_list',
            'is_message': True,
            'is_repeated': True,
        },
        'dynamic_labels': {
            'proto_field': 'dynamic_labels',
            'is_message': True,
            'is_repeated': False,
        },
        'dynamic_properties': {
            'proto_field': 'dynamic_properties',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphNodeTableReference(ResolvedArgument):
    """Generated model for ResolvedGraphNodeTableReferenceProto"""

    node_table_identifier: Optional[str] = None
    edge_table_column_list: List['ResolvedExpr'] = field(default_factory=list)
    node_table_column_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphNodeTableReferenceProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'node_table_identifier': {
            'proto_field': 'node_table_identifier',
            'is_message': False,
            'is_repeated': False,
        },
        'edge_table_column_list': {
            'proto_field': 'edge_table_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'node_table_column_list': {
            'proto_field': 'node_table_column_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedGraphPathCost(ResolvedArgument):
    """Generated model for ResolvedGraphPathCostProto"""

    cost_supertype: Optional['Type'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphPathCostProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'cost_supertype': {
            'proto_field': 'cost_supertype',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphPathMode(ResolvedArgument):
    """Generated model for ResolvedGraphPathModeProto"""

    path_mode: Optional['ResolvedGraphPathModeEnums.PathMode'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphPathModeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'path_mode': {
            'proto_field': 'path_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'PathMode',
            'enum_parent_message': 'ResolvedGraphPathModeEnums',
        },
    }


@dataclass
class ResolvedGraphPathPatternQuantifier(ResolvedArgument):
    """Generated model for ResolvedGraphPathPatternQuantifierProto"""

    lower_bound: Optional['ResolvedExpr'] = None
    upper_bound: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphPathPatternQuantifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'lower_bound': {
            'proto_field': 'lower_bound',
            'is_message': True,
            'is_repeated': False,
        },
        'upper_bound': {
            'proto_field': 'upper_bound',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphPathScanBase(ResolvedScan):
    """Generated model for ResolvedGraphPathScanBaseProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphPathScanBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedGraphPathSearchPrefix(ResolvedArgument):
    """Generated model for ResolvedGraphPathSearchPrefixProto"""

    type: Optional['ResolvedGraphPathSearchPrefixEnums.PathSearchPrefixType'] = None
    path_count: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphPathSearchPrefixProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type': {
            'proto_field': 'type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'PathSearchPrefixType',
            'enum_parent_message': 'ResolvedGraphPathSearchPrefixEnums',
        },
        'path_count': {
            'proto_field': 'path_count',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphPropertyDeclaration(ResolvedArgument):
    """Generated model for ResolvedGraphPropertyDeclarationProto"""

    name: Optional[str] = None
    type: Optional['Type'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphPropertyDeclarationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphPropertyDefinition(ResolvedArgument):
    """Generated model for ResolvedGraphPropertyDefinitionProto"""

    expr: Optional['ResolvedExpr'] = None
    sql: Optional[str] = None
    property_declaration_name: Optional[str] = None
    options_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphPropertyDefinitionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'sql': {
            'proto_field': 'sql',
            'is_message': False,
            'is_repeated': False,
        },
        'property_declaration_name': {
            'proto_field': 'property_declaration_name',
            'is_message': False,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedGraphRefScan(ResolvedScan):
    """Generated model for ResolvedGraphRefScanProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphRefScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedGraphScanBase(ResolvedScan):
    """Generated model for ResolvedGraphScanBaseProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphScanBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedGraphTableScan(ResolvedScan):
    """Generated model for ResolvedGraphTableScanProto"""

    property_graph: Optional['PropertyGraphRef'] = None
    input_scan: Optional['ResolvedGraphScanBase'] = None
    shape_expr_list: List['ResolvedComputedColumn'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphTableScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'property_graph': {
            'proto_field': 'property_graph',
            'is_message': True,
            'is_repeated': False,
        },
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'shape_expr_list': {
            'proto_field': 'shape_expr_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedGroupRowsScan(ResolvedScan):
    """Generated model for ResolvedGroupRowsScanProto"""

    input_column_list: List['ResolvedComputedColumn'] = field(default_factory=list)
    alias: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGroupRowsScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_column_list': {
            'proto_field': 'input_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGroupingCall(ResolvedArgument):
    """Generated model for ResolvedGroupingCallProto"""

    group_by_column: Optional['ResolvedColumnRef'] = None
    output_column: Optional['ResolvedColumn'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGroupingCallProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'group_by_column': {
            'proto_field': 'group_by_column',
            'is_message': True,
            'is_repeated': False,
        },
        'output_column': {
            'proto_field': 'output_column',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGroupingSetBase(ResolvedArgument):
    """Generated model for ResolvedGroupingSetBaseProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGroupingSetBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedGroupingSetMultiColumn(ResolvedArgument):
    """Generated model for ResolvedGroupingSetMultiColumnProto"""

    column_list: List['ResolvedColumnRef'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGroupingSetMultiColumnProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_list': {
            'proto_field': 'column_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedIdentityColumnInfo(ResolvedArgument):
    """Generated model for ResolvedIdentityColumnInfoProto"""

    start_with_value: Optional['ValueWithType'] = None
    increment_by_value: Optional['ValueWithType'] = None
    max_value: Optional['ValueWithType'] = None
    min_value: Optional['ValueWithType'] = None
    cycling_enabled: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedIdentityColumnInfoProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'start_with_value': {
            'proto_field': 'start_with_value',
            'is_message': True,
            'is_repeated': False,
        },
        'increment_by_value': {
            'proto_field': 'increment_by_value',
            'is_message': True,
            'is_repeated': False,
        },
        'max_value': {
            'proto_field': 'max_value',
            'is_message': True,
            'is_repeated': False,
        },
        'min_value': {
            'proto_field': 'min_value',
            'is_message': True,
            'is_repeated': False,
        },
        'cycling_enabled': {
            'proto_field': 'cycling_enabled',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedImportStmt(ResolvedStatement):
    """Generated model for ResolvedImportStmtProto"""

    import_kind: Optional['ResolvedImportStmtEnums.ImportKind'] = None
    name_path: List[str] = field(default_factory=list)
    file_path: Optional[str] = None
    alias_path: List[str] = field(default_factory=list)
    into_alias_path: List[str] = field(default_factory=list)
    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedImportStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'import_kind': {
            'proto_field': 'import_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ImportKind',
            'enum_parent_message': 'ResolvedImportStmtEnums',
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'file_path': {
            'proto_field': 'file_path',
            'is_message': False,
            'is_repeated': False,
        },
        'alias_path': {
            'proto_field': 'alias_path',
            'is_message': False,
            'is_repeated': True,
        },
        'into_alias_path': {
            'proto_field': 'into_alias_path',
            'is_message': False,
            'is_repeated': True,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedIndexItem(ResolvedArgument):
    """Generated model for ResolvedIndexItemProto"""

    column_ref: Optional['ResolvedColumnRef'] = None
    descending: Optional[bool] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedIndexItemProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_ref': {
            'proto_field': 'column_ref',
            'is_message': True,
            'is_repeated': False,
        },
        'descending': {
            'proto_field': 'descending',
            'is_message': False,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedInlineLambda(ResolvedArgument):
    """Generated model for ResolvedInlineLambdaProto"""

    argument_list: List['ResolvedColumn'] = field(default_factory=list)
    parameter_list: List['ResolvedColumnRef'] = field(default_factory=list)
    body: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedInlineLambdaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'argument_list': {
            'proto_field': 'argument_list',
            'is_message': True,
            'is_repeated': True,
        },
        'parameter_list': {
            'proto_field': 'parameter_list',
            'is_message': True,
            'is_repeated': True,
        },
        'body': {
            'proto_field': 'body',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedInsertRow(ResolvedArgument):
    """Generated model for ResolvedInsertRowProto"""

    value_list: List['ResolvedDMLValue'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedInsertRowProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value_list': {
            'proto_field': 'value_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedInsertStmt(ResolvedStatement):
    """Generated model for ResolvedInsertStmtProto"""

    table_scan: Optional['ResolvedTableScan'] = None
    insert_mode: Optional['ResolvedInsertStmtEnums.InsertMode'] = None
    assert_rows_modified: Optional['ResolvedAssertRowsModified'] = None
    returning: Optional['ResolvedReturningClause'] = None
    insert_column_list: List['ResolvedColumn'] = field(default_factory=list)
    query_parameter_list: List['ResolvedColumnRef'] = field(default_factory=list)
    query: Optional['ResolvedScan'] = None
    query_output_column_list: List['ResolvedColumn'] = field(default_factory=list)
    row_list: List['ResolvedInsertRow'] = field(default_factory=list)
    column_access_list: List['ResolvedStatementEnums.ObjectAccess'] = field(default_factory=list)
    on_conflict_clause: Optional['ResolvedOnConflictClause'] = None
    topologically_sorted_generated_column_id_list: List[int] = field(default_factory=list)
    generated_column_expr_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedInsertStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_scan': {
            'proto_field': 'table_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'insert_mode': {
            'proto_field': 'insert_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'InsertMode',
            'enum_parent_message': 'ResolvedInsertStmtEnums',
        },
        'assert_rows_modified': {
            'proto_field': 'assert_rows_modified',
            'is_message': True,
            'is_repeated': False,
        },
        'returning': {
            'proto_field': 'returning',
            'is_message': True,
            'is_repeated': False,
        },
        'insert_column_list': {
            'proto_field': 'insert_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'query_parameter_list': {
            'proto_field': 'query_parameter_list',
            'is_message': True,
            'is_repeated': True,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'query_output_column_list': {
            'proto_field': 'query_output_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'row_list': {
            'proto_field': 'row_list',
            'is_message': True,
            'is_repeated': True,
        },
        'column_access_list': {
            'proto_field': 'column_access_list',
            'is_message': False,
            'is_repeated': True,
            'is_enum': True,
            'enum_type_name': 'ObjectAccess',
            'enum_parent_message': 'ResolvedStatementEnums',
        },
        'on_conflict_clause': {
            'proto_field': 'on_conflict_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'topologically_sorted_generated_column_id_list': {
            'proto_field': 'topologically_sorted_generated_column_id_list',
            'is_message': False,
            'is_repeated': True,
        },
        'generated_column_expr_list': {
            'proto_field': 'generated_column_expr_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedJoinScan(ResolvedScan):
    """Generated model for ResolvedJoinScanProto"""

    join_type: Optional['ResolvedJoinScanEnums.JoinType'] = None
    left_scan: Optional['ResolvedScan'] = None
    right_scan: Optional['ResolvedScan'] = None
    join_expr: Optional['ResolvedExpr'] = None
    has_using: Optional[bool] = None
    is_lateral: Optional[bool] = None
    parameter_list: List['ResolvedColumnRef'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedJoinScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'join_type': {
            'proto_field': 'join_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'JoinType',
            'enum_parent_message': 'ResolvedJoinScanEnums',
        },
        'left_scan': {
            'proto_field': 'left_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'right_scan': {
            'proto_field': 'right_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'join_expr': {
            'proto_field': 'join_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'has_using': {
            'proto_field': 'has_using',
            'is_message': False,
            'is_repeated': False,
        },
        'is_lateral': {
            'proto_field': 'is_lateral',
            'is_message': False,
            'is_repeated': False,
        },
        'parameter_list': {
            'proto_field': 'parameter_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedLimitOffsetScan(ResolvedScan):
    """Generated model for ResolvedLimitOffsetScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    limit: Optional['ResolvedExpr'] = None
    offset: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedLimitOffsetScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'limit': {
            'proto_field': 'limit',
            'is_message': True,
            'is_repeated': False,
        },
        'offset': {
            'proto_field': 'offset',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedLiteral(ResolvedExpr):
    """Generated model for ResolvedLiteralProto"""

    value: Optional['ValueWithType'] = None
    has_explicit_type: Optional[bool] = None
    float_literal_id: Optional[int] = None
    preserve_in_literal_remover: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
        'has_explicit_type': {
            'proto_field': 'has_explicit_type',
            'is_message': False,
            'is_repeated': False,
        },
        'float_literal_id': {
            'proto_field': 'float_literal_id',
            'is_message': False,
            'is_repeated': False,
        },
        'preserve_in_literal_remover': {
            'proto_field': 'preserve_in_literal_remover',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedLockMode(ResolvedArgument):
    """Generated model for ResolvedLockModeProto"""

    strength: Optional['ResolvedLockModeEnums.LockStrengthType'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedLockModeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'strength': {
            'proto_field': 'strength',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'LockStrengthType',
            'enum_parent_message': 'ResolvedLockModeEnums',
        },
    }


@dataclass
class ResolvedLogScan(ResolvedScan):
    """Generated model for ResolvedLogScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    subpipeline: Optional['ResolvedSubpipeline'] = None
    output_schema: Optional['ResolvedOutputSchema'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedLogScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'subpipeline': {
            'proto_field': 'subpipeline',
            'is_message': True,
            'is_repeated': False,
        },
        'output_schema': {
            'proto_field': 'output_schema',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedMakeProto(ResolvedExpr):
    """Generated model for ResolvedMakeProtoProto"""

    field_list: List['ResolvedMakeProtoField'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMakeProtoProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'field_list': {
            'proto_field': 'field_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedMakeProtoField(ResolvedArgument):
    """Generated model for ResolvedMakeProtoFieldProto"""

    field_descriptor: Optional['FieldDescriptorRef'] = None
    format: Optional['FieldFormat.Format'] = None
    expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMakeProtoFieldProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'field_descriptor': {
            'proto_field': 'field_descriptor',
            'is_message': True,
            'is_repeated': False,
        },
        'format': {
            'proto_field': 'format',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Format',
            'enum_parent_message': 'FieldFormat',
        },
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedMakeStruct(ResolvedExpr):
    """Generated model for ResolvedMakeStructProto"""

    field_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMakeStructProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'field_list': {
            'proto_field': 'field_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedMatchRecognizePatternExpr(ResolvedArgument):
    """Generated model for ResolvedMatchRecognizePatternExprProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMatchRecognizePatternExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedMatchRecognizeScan(ResolvedScan):
    """Generated model for ResolvedMatchRecognizeScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)
    analytic_function_group_list: List['ResolvedAnalyticFunctionGroup'] = field(default_factory=list)
    pattern_variable_definition_list: List['ResolvedMatchRecognizeVariableDefinition'] = field(default_factory=list)
    pattern: Optional['ResolvedMatchRecognizePatternExpr'] = None
    after_match_skip_mode: Optional['ResolvedMatchRecognizeScanEnums.AfterMatchSkipMode'] = None
    measure_group_list: List['ResolvedMeasureGroup'] = field(default_factory=list)
    match_number_column: Optional['ResolvedColumn'] = None
    match_row_number_column: Optional['ResolvedColumn'] = None
    classifier_column: Optional['ResolvedColumn'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMatchRecognizeScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'analytic_function_group_list': {
            'proto_field': 'analytic_function_group_list',
            'is_message': True,
            'is_repeated': True,
        },
        'pattern_variable_definition_list': {
            'proto_field': 'pattern_variable_definition_list',
            'is_message': True,
            'is_repeated': True,
        },
        'pattern': {
            'proto_field': 'pattern',
            'is_message': True,
            'is_repeated': False,
        },
        'after_match_skip_mode': {
            'proto_field': 'after_match_skip_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'AfterMatchSkipMode',
            'enum_parent_message': 'ResolvedMatchRecognizeScanEnums',
        },
        'measure_group_list': {
            'proto_field': 'measure_group_list',
            'is_message': True,
            'is_repeated': True,
        },
        'match_number_column': {
            'proto_field': 'match_number_column',
            'is_message': True,
            'is_repeated': False,
        },
        'match_row_number_column': {
            'proto_field': 'match_row_number_column',
            'is_message': True,
            'is_repeated': False,
        },
        'classifier_column': {
            'proto_field': 'classifier_column',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedMatchRecognizeVariableDefinition(ResolvedArgument):
    """Generated model for ResolvedMatchRecognizeVariableDefinitionProto"""

    name: Optional[str] = None
    predicate: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMatchRecognizeVariableDefinitionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'predicate': {
            'proto_field': 'predicate',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedMeasureGroup(ResolvedArgument):
    """Generated model for ResolvedMeasureGroupProto"""

    pattern_variable_ref: Optional['ResolvedMatchRecognizePatternVariableRef'] = None
    aggregate_list: List['ResolvedComputedColumnBase'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMeasureGroupProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'pattern_variable_ref': {
            'proto_field': 'pattern_variable_ref',
            'is_message': True,
            'is_repeated': False,
        },
        'aggregate_list': {
            'proto_field': 'aggregate_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedMergeStmt(ResolvedStatement):
    """Generated model for ResolvedMergeStmtProto"""

    table_scan: Optional['ResolvedTableScan'] = None
    column_access_list: List['ResolvedStatementEnums.ObjectAccess'] = field(default_factory=list)
    from_scan: Optional['ResolvedScan'] = None
    merge_expr: Optional['ResolvedExpr'] = None
    when_clause_list: List['ResolvedMergeWhen'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMergeStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_scan': {
            'proto_field': 'table_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'column_access_list': {
            'proto_field': 'column_access_list',
            'is_message': False,
            'is_repeated': True,
            'is_enum': True,
            'enum_type_name': 'ObjectAccess',
            'enum_parent_message': 'ResolvedStatementEnums',
        },
        'from_scan': {
            'proto_field': 'from_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'merge_expr': {
            'proto_field': 'merge_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'when_clause_list': {
            'proto_field': 'when_clause_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedMergeWhen(ResolvedArgument):
    """Generated model for ResolvedMergeWhenProto"""

    match_type: Optional['ResolvedMergeWhenEnums.MatchType'] = None
    match_expr: Optional['ResolvedExpr'] = None
    action_type: Optional['ResolvedMergeWhenEnums.ActionType'] = None
    insert_column_list: List['ResolvedColumn'] = field(default_factory=list)
    insert_row: Optional['ResolvedInsertRow'] = None
    update_item_list: List['ResolvedUpdateItem'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMergeWhenProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'match_type': {
            'proto_field': 'match_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'MatchType',
            'enum_parent_message': 'ResolvedMergeWhenEnums',
        },
        'match_expr': {
            'proto_field': 'match_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'action_type': {
            'proto_field': 'action_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ActionType',
            'enum_parent_message': 'ResolvedMergeWhenEnums',
        },
        'insert_column_list': {
            'proto_field': 'insert_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'insert_row': {
            'proto_field': 'insert_row',
            'is_message': True,
            'is_repeated': False,
        },
        'update_item_list': {
            'proto_field': 'update_item_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedModel(ResolvedArgument):
    """Generated model for ResolvedModelProto"""

    model: Optional['ModelRef'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedModelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'model': {
            'proto_field': 'model',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedModuleStmt(ResolvedStatement):
    """Generated model for ResolvedModuleStmtProto"""

    name_path: List[str] = field(default_factory=list)
    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedModuleStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedMultiStmt(ResolvedStatement):
    """Generated model for ResolvedMultiStmtProto"""

    statement_list: List['ResolvedStatement'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMultiStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'statement_list': {
            'proto_field': 'statement_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedObjectUnit(ResolvedArgument):
    """Generated model for ResolvedObjectUnitProto"""

    name_path: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedObjectUnitProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedOnConflictClause(ResolvedArgument):
    """Generated model for ResolvedOnConflictClauseProto"""

    conflict_action: Optional['ResolvedOnConflictClauseEnums.ConflictAction'] = None
    conflict_target_column_list: List['ResolvedColumn'] = field(default_factory=list)
    unique_constraint_name: Optional[str] = None
    insert_row_scan: Optional['ResolvedTableScan'] = None
    update_item_list: List['ResolvedUpdateItem'] = field(default_factory=list)
    update_where_expression: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedOnConflictClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'conflict_action': {
            'proto_field': 'conflict_action',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ConflictAction',
            'enum_parent_message': 'ResolvedOnConflictClauseEnums',
        },
        'conflict_target_column_list': {
            'proto_field': 'conflict_target_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'unique_constraint_name': {
            'proto_field': 'unique_constraint_name',
            'is_message': False,
            'is_repeated': False,
        },
        'insert_row_scan': {
            'proto_field': 'insert_row_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'update_item_list': {
            'proto_field': 'update_item_list',
            'is_message': True,
            'is_repeated': True,
        },
        'update_where_expression': {
            'proto_field': 'update_where_expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedOption(ResolvedArgument):
    """Generated model for ResolvedOptionProto"""

    qualifier: Optional[str] = None
    name: Optional[str] = None
    value: Optional['ResolvedExpr'] = None
    assignment_op: Optional['ResolvedOptionEnums.AssignmentOp'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedOptionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'qualifier': {
            'proto_field': 'qualifier',
            'is_message': False,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'value': {
            'proto_field': 'value',
            'is_message': True,
            'is_repeated': False,
        },
        'assignment_op': {
            'proto_field': 'assignment_op',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'AssignmentOp',
            'enum_parent_message': 'ResolvedOptionEnums',
        },
    }


@dataclass
class ResolvedOrderByItem(ResolvedArgument):
    """Generated model for ResolvedOrderByItemProto"""

    column_ref: Optional['ResolvedColumnRef'] = None
    collation_name: Optional['ResolvedExpr'] = None
    is_descending: Optional[bool] = None
    null_order: Optional['ResolvedOrderByItemEnums.NullOrderMode'] = None
    collation: Optional['ResolvedCollation'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedOrderByItemProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_ref': {
            'proto_field': 'column_ref',
            'is_message': True,
            'is_repeated': False,
        },
        'collation_name': {
            'proto_field': 'collation_name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_descending': {
            'proto_field': 'is_descending',
            'is_message': False,
            'is_repeated': False,
        },
        'null_order': {
            'proto_field': 'null_order',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'NullOrderMode',
            'enum_parent_message': 'ResolvedOrderByItemEnums',
        },
        'collation': {
            'proto_field': 'collation',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedOrderByScan(ResolvedScan):
    """Generated model for ResolvedOrderByScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    order_by_item_list: List['ResolvedOrderByItem'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedOrderByScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'order_by_item_list': {
            'proto_field': 'order_by_item_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedOutputColumn(ResolvedArgument):
    """Generated model for ResolvedOutputColumnProto"""

    name: Optional[str] = None
    column: Optional['ResolvedColumn'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedOutputColumnProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedOutputSchema(ResolvedArgument):
    """Generated model for ResolvedOutputSchemaProto"""

    output_column_list: List['ResolvedOutputColumn'] = field(default_factory=list)
    is_value_table: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedOutputSchemaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'output_column_list': {
            'proto_field': 'output_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'is_value_table': {
            'proto_field': 'is_value_table',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedParameter(ResolvedExpr):
    """Generated model for ResolvedParameterProto"""

    name: Optional[str] = None
    position: Optional[int] = None
    is_untyped: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedParameterProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'position': {
            'proto_field': 'position',
            'is_message': False,
            'is_repeated': False,
        },
        'is_untyped': {
            'proto_field': 'is_untyped',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedPipeCreateTableScan(ResolvedScan):
    """Generated model for ResolvedPipeCreateTableScanProto"""

    create_table_as_select_stmt: Optional['ResolvedCreateTableAsSelectStmt'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedPipeCreateTableScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'create_table_as_select_stmt': {
            'proto_field': 'create_table_as_select_stmt',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedPipeExportDataScan(ResolvedScan):
    """Generated model for ResolvedPipeExportDataScanProto"""

    export_data_stmt: Optional['ResolvedExportDataStmt'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedPipeExportDataScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'export_data_stmt': {
            'proto_field': 'export_data_stmt',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedPipeForkScan(ResolvedScan):
    """Generated model for ResolvedPipeForkScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    subpipeline_list: List['ResolvedGeneralizedQuerySubpipeline'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedPipeForkScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'subpipeline_list': {
            'proto_field': 'subpipeline_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedPipeIfCase(ResolvedArgument):
    """Generated model for ResolvedPipeIfCaseProto"""

    condition: Optional['ResolvedExpr'] = None
    subpipeline_sql: Optional[str] = None
    subpipeline: Optional['ResolvedSubpipeline'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedPipeIfCaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'condition': {
            'proto_field': 'condition',
            'is_message': True,
            'is_repeated': False,
        },
        'subpipeline_sql': {
            'proto_field': 'subpipeline_sql',
            'is_message': False,
            'is_repeated': False,
        },
        'subpipeline': {
            'proto_field': 'subpipeline',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedPipeIfScan(ResolvedScan):
    """Generated model for ResolvedPipeIfScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    selected_case: Optional[int] = None
    if_case_list: List['ResolvedPipeIfCase'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedPipeIfScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'selected_case': {
            'proto_field': 'selected_case',
            'is_message': False,
            'is_repeated': False,
        },
        'if_case_list': {
            'proto_field': 'if_case_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedPipeInsertScan(ResolvedScan):
    """Generated model for ResolvedPipeInsertScanProto"""

    insert_stmt: Optional['ResolvedInsertStmt'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedPipeInsertScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'insert_stmt': {
            'proto_field': 'insert_stmt',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedPipeTeeScan(ResolvedScan):
    """Generated model for ResolvedPipeTeeScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    subpipeline_list: List['ResolvedGeneralizedQuerySubpipeline'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedPipeTeeScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'subpipeline_list': {
            'proto_field': 'subpipeline_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedPivotColumn(ResolvedArgument):
    """Generated model for ResolvedPivotColumnProto"""

    column: Optional['ResolvedColumn'] = None
    pivot_expr_index: Optional[int] = None
    pivot_value_index: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedPivotColumnProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': False,
        },
        'pivot_expr_index': {
            'proto_field': 'pivot_expr_index',
            'is_message': False,
            'is_repeated': False,
        },
        'pivot_value_index': {
            'proto_field': 'pivot_value_index',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedPivotScan(ResolvedScan):
    """Generated model for ResolvedPivotScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    group_by_list: List['ResolvedComputedColumn'] = field(default_factory=list)
    pivot_expr_list: List['ResolvedExpr'] = field(default_factory=list)
    for_expr: Optional['ResolvedExpr'] = None
    pivot_value_list: List['ResolvedExpr'] = field(default_factory=list)
    pivot_column_list: List['ResolvedPivotColumn'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedPivotScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'group_by_list': {
            'proto_field': 'group_by_list',
            'is_message': True,
            'is_repeated': True,
        },
        'pivot_expr_list': {
            'proto_field': 'pivot_expr_list',
            'is_message': True,
            'is_repeated': True,
        },
        'for_expr': {
            'proto_field': 'for_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'pivot_value_list': {
            'proto_field': 'pivot_value_list',
            'is_message': True,
            'is_repeated': True,
        },
        'pivot_column_list': {
            'proto_field': 'pivot_column_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedPrivilege(ResolvedArgument):
    """Generated model for ResolvedPrivilegeProto"""

    action_type: Optional[str] = None
    unit_list: List['ResolvedObjectUnit'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedPrivilegeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'action_type': {
            'proto_field': 'action_type',
            'is_message': False,
            'is_repeated': False,
        },
        'unit_list': {
            'proto_field': 'unit_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedProjectScan(ResolvedScan):
    """Generated model for ResolvedProjectScanProto"""

    expr_list: List['ResolvedComputedColumn'] = field(default_factory=list)
    input_scan: Optional['ResolvedScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedProjectScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr_list': {
            'proto_field': 'expr_list',
            'is_message': True,
            'is_repeated': True,
        },
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedQueryStmt(ResolvedStatement):
    """Generated model for ResolvedQueryStmtProto"""

    output_column_list: List['ResolvedOutputColumn'] = field(default_factory=list)
    is_value_table: Optional[bool] = None
    query: Optional['ResolvedScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedQueryStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'output_column_list': {
            'proto_field': 'output_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'is_value_table': {
            'proto_field': 'is_value_table',
            'is_message': False,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedRecursionDepthModifier(ResolvedArgument):
    """Generated model for ResolvedRecursionDepthModifierProto"""

    lower_bound: Optional['ResolvedExpr'] = None
    upper_bound: Optional['ResolvedExpr'] = None
    recursion_depth_column: Optional['ResolvedColumnHolder'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRecursionDepthModifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'lower_bound': {
            'proto_field': 'lower_bound',
            'is_message': True,
            'is_repeated': False,
        },
        'upper_bound': {
            'proto_field': 'upper_bound',
            'is_message': True,
            'is_repeated': False,
        },
        'recursion_depth_column': {
            'proto_field': 'recursion_depth_column',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedRecursiveRefScan(ResolvedScan):
    """Generated model for ResolvedRecursiveRefScanProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRecursiveRefScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedRecursiveScan(ResolvedScan):
    """Generated model for ResolvedRecursiveScanProto"""

    op_type: Optional['ResolvedRecursiveScanEnums.RecursiveSetOperationType'] = None
    non_recursive_term: Optional['ResolvedSetOperationItem'] = None
    recursive_term: Optional['ResolvedSetOperationItem'] = None
    recursion_depth_modifier: Optional['ResolvedRecursionDepthModifier'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRecursiveScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'op_type': {
            'proto_field': 'op_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'RecursiveSetOperationType',
            'enum_parent_message': 'ResolvedRecursiveScanEnums',
        },
        'non_recursive_term': {
            'proto_field': 'non_recursive_term',
            'is_message': True,
            'is_repeated': False,
        },
        'recursive_term': {
            'proto_field': 'recursive_term',
            'is_message': True,
            'is_repeated': False,
        },
        'recursion_depth_modifier': {
            'proto_field': 'recursion_depth_modifier',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedRelationArgumentScan(ResolvedScan):
    """Generated model for ResolvedRelationArgumentScanProto"""

    name: Optional[str] = None
    is_value_table: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRelationArgumentScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'is_value_table': {
            'proto_field': 'is_value_table',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedRenameStmt(ResolvedStatement):
    """Generated model for ResolvedRenameStmtProto"""

    object_type: Optional[str] = None
    old_name_path: List[str] = field(default_factory=list)
    new_name_path: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRenameStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'object_type': {
            'proto_field': 'object_type',
            'is_message': False,
            'is_repeated': False,
        },
        'old_name_path': {
            'proto_field': 'old_name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'new_name_path': {
            'proto_field': 'new_name_path',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedReplaceField(ResolvedExpr):
    """Generated model for ResolvedReplaceFieldProto"""

    expr: Optional['ResolvedExpr'] = None
    replace_field_item_list: List['ResolvedReplaceFieldItem'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedReplaceFieldProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'replace_field_item_list': {
            'proto_field': 'replace_field_item_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedReplaceFieldItem(ResolvedArgument):
    """Generated model for ResolvedReplaceFieldItemProto"""

    expr: Optional['ResolvedExpr'] = None
    struct_index_path: List[int] = field(default_factory=list)
    proto_field_path: List['FieldDescriptorRef'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedReplaceFieldItemProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'struct_index_path': {
            'proto_field': 'struct_index_path',
            'is_message': False,
            'is_repeated': True,
        },
        'proto_field_path': {
            'proto_field': 'proto_field_path',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedReturningClause(ResolvedArgument):
    """Generated model for ResolvedReturningClauseProto"""

    output_column_list: List['ResolvedOutputColumn'] = field(default_factory=list)
    action_column: Optional['ResolvedColumnHolder'] = None
    expr_list: List['ResolvedComputedColumn'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedReturningClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'output_column_list': {
            'proto_field': 'output_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'action_column': {
            'proto_field': 'action_column',
            'is_message': True,
            'is_repeated': False,
        },
        'expr_list': {
            'proto_field': 'expr_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedRollbackStmt(ResolvedStatement):
    """Generated model for ResolvedRollbackStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRollbackStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedRunBatchStmt(ResolvedStatement):
    """Generated model for ResolvedRunBatchStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRunBatchStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedSampleScan(ResolvedScan):
    """Generated model for ResolvedSampleScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    method: Optional[str] = None
    size: Optional['ResolvedExpr'] = None
    unit: Optional['ResolvedSampleScanEnums.SampleUnit'] = None
    repeatable_argument: Optional['ResolvedExpr'] = None
    weight_column: Optional['ResolvedColumnHolder'] = None
    partition_by_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSampleScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'method': {
            'proto_field': 'method',
            'is_message': False,
            'is_repeated': False,
        },
        'size': {
            'proto_field': 'size',
            'is_message': True,
            'is_repeated': False,
        },
        'unit': {
            'proto_field': 'unit',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SampleUnit',
            'enum_parent_message': 'ResolvedSampleScanEnums',
        },
        'repeatable_argument': {
            'proto_field': 'repeatable_argument',
            'is_message': True,
            'is_repeated': False,
        },
        'weight_column': {
            'proto_field': 'weight_column',
            'is_message': True,
            'is_repeated': False,
        },
        'partition_by_list': {
            'proto_field': 'partition_by_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedSequence(ResolvedArgument):
    """Generated model for ResolvedSequenceProto"""

    sequence: Optional['SequenceRef'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSequenceProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'sequence': {
            'proto_field': 'sequence',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedSetOperationItem(ResolvedArgument):
    """Generated model for ResolvedSetOperationItemProto"""

    scan: Optional['ResolvedScan'] = None
    output_column_list: List['ResolvedColumn'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSetOperationItemProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'scan': {
            'proto_field': 'scan',
            'is_message': True,
            'is_repeated': False,
        },
        'output_column_list': {
            'proto_field': 'output_column_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedSetOperationScan(ResolvedScan):
    """Generated model for ResolvedSetOperationScanProto"""

    op_type: Optional['ResolvedSetOperationScanEnums.SetOperationType'] = None
    input_item_list: List['ResolvedSetOperationItem'] = field(default_factory=list)
    column_match_mode: Optional['ResolvedSetOperationScanEnums.SetOperationColumnMatchMode'] = None
    column_propagation_mode: Optional['ResolvedSetOperationScanEnums.SetOperationColumnPropagationMode'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSetOperationScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'op_type': {
            'proto_field': 'op_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SetOperationType',
            'enum_parent_message': 'ResolvedSetOperationScanEnums',
        },
        'input_item_list': {
            'proto_field': 'input_item_list',
            'is_message': True,
            'is_repeated': True,
        },
        'column_match_mode': {
            'proto_field': 'column_match_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SetOperationColumnMatchMode',
            'enum_parent_message': 'ResolvedSetOperationScanEnums',
        },
        'column_propagation_mode': {
            'proto_field': 'column_propagation_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SetOperationColumnPropagationMode',
            'enum_parent_message': 'ResolvedSetOperationScanEnums',
        },
    }


@dataclass
class ResolvedSetTransactionStmt(ResolvedStatement):
    """Generated model for ResolvedSetTransactionStmtProto"""

    read_write_mode: Optional['ResolvedBeginStmtEnums.ReadWriteMode'] = None
    isolation_level_list: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSetTransactionStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'read_write_mode': {
            'proto_field': 'read_write_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ReadWriteMode',
            'enum_parent_message': 'ResolvedBeginStmtEnums',
        },
        'isolation_level_list': {
            'proto_field': 'isolation_level_list',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedShowStmt(ResolvedStatement):
    """Generated model for ResolvedShowStmtProto"""

    identifier: Optional[str] = None
    name_path: List[str] = field(default_factory=list)
    like_expr: Optional['ResolvedLiteral'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedShowStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'identifier': {
            'proto_field': 'identifier',
            'is_message': False,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'like_expr': {
            'proto_field': 'like_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedSingleRowScan(ResolvedScan):
    """Generated model for ResolvedSingleRowScanProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSingleRowScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedStartBatchStmt(ResolvedStatement):
    """Generated model for ResolvedStartBatchStmtProto"""

    batch_type: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedStartBatchStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'batch_type': {
            'proto_field': 'batch_type',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedStatementWithPipeOperatorsStmt(ResolvedStatement):
    """Generated model for ResolvedStatementWithPipeOperatorsStmtProto"""

    statement: Optional['ResolvedStatement'] = None
    suffix_subpipeline_sql: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedStatementWithPipeOperatorsStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'statement': {
            'proto_field': 'statement',
            'is_message': True,
            'is_repeated': False,
        },
        'suffix_subpipeline_sql': {
            'proto_field': 'suffix_subpipeline_sql',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedStaticDescribeScan(ResolvedScan):
    """Generated model for ResolvedStaticDescribeScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    describe_text: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedStaticDescribeScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'describe_text': {
            'proto_field': 'describe_text',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedSubpipeline(ResolvedArgument):
    """Generated model for ResolvedSubpipelineProto"""

    scan: Optional['ResolvedScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSubpipelineProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'scan': {
            'proto_field': 'scan',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedSubpipelineInputScan(ResolvedScan):
    """Generated model for ResolvedSubpipelineInputScanProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSubpipelineInputScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedSubpipelineStmt(ResolvedStatement):
    """Generated model for ResolvedSubpipelineStmtProto"""

    table_scan: Optional['ResolvedTableScan'] = None
    subpipeline: Optional['ResolvedSubpipeline'] = None
    output_schema: Optional['ResolvedOutputSchema'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSubpipelineStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_scan': {
            'proto_field': 'table_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'subpipeline': {
            'proto_field': 'subpipeline',
            'is_message': True,
            'is_repeated': False,
        },
        'output_schema': {
            'proto_field': 'output_schema',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedSubqueryExpr(ResolvedExpr):
    """Generated model for ResolvedSubqueryExprProto"""

    subquery_type: Optional['ResolvedSubqueryExprEnums.SubqueryType'] = None
    parameter_list: List['ResolvedColumnRef'] = field(default_factory=list)
    in_expr: Optional['ResolvedExpr'] = None
    in_collation: Optional['ResolvedCollation'] = None
    subquery: Optional['ResolvedScan'] = None
    hint_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSubqueryExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'subquery_type': {
            'proto_field': 'subquery_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SubqueryType',
            'enum_parent_message': 'ResolvedSubqueryExprEnums',
        },
        'parameter_list': {
            'proto_field': 'parameter_list',
            'is_message': True,
            'is_repeated': True,
        },
        'in_expr': {
            'proto_field': 'in_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'in_collation': {
            'proto_field': 'in_collation',
            'is_message': True,
            'is_repeated': False,
        },
        'subquery': {
            'proto_field': 'subquery',
            'is_message': True,
            'is_repeated': False,
        },
        'hint_list': {
            'proto_field': 'hint_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedSystemVariable(ResolvedExpr):
    """Generated model for ResolvedSystemVariableProto"""

    name_path: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSystemVariableProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedTVFScan(ResolvedScan):
    """Generated model for ResolvedTVFScanProto"""

    tvf: Optional['TableValuedFunctionRef'] = None
    signature: Optional['TVFSignature'] = None
    argument_list: List['ResolvedFunctionArgument'] = field(default_factory=list)
    column_index_list: List[int] = field(default_factory=list)
    alias: Optional[str] = None
    function_call_signature: Optional['FunctionSignature'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedTVFScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'tvf': {
            'proto_field': 'tvf',
            'is_message': True,
            'is_repeated': False,
        },
        'signature': {
            'proto_field': 'signature',
            'is_message': True,
            'is_repeated': False,
        },
        'argument_list': {
            'proto_field': 'argument_list',
            'is_message': True,
            'is_repeated': True,
        },
        'column_index_list': {
            'proto_field': 'column_index_list',
            'is_message': False,
            'is_repeated': True,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': False,
            'is_repeated': False,
        },
        'function_call_signature': {
            'proto_field': 'function_call_signature',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedTableAndColumnInfo(ResolvedArgument):
    """Generated model for ResolvedTableAndColumnInfoProto"""

    table: Optional['TableRef'] = None
    column_index_list: List[int] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedTableAndColumnInfoProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table': {
            'proto_field': 'table',
            'is_message': True,
            'is_repeated': False,
        },
        'column_index_list': {
            'proto_field': 'column_index_list',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedTableScan(ResolvedScan):
    """Generated model for ResolvedTableScanProto"""

    table: Optional['TableRef'] = None
    for_system_time_expr: Optional['ResolvedExpr'] = None
    column_index_list: List[int] = field(default_factory=list)
    alias: Optional[str] = None
    lock_mode: Optional['ResolvedLockMode'] = None
    read_as_row_type: Optional[bool] = None
    table_column_list: List['ColumnRef'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedTableScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table': {
            'proto_field': 'table',
            'is_message': True,
            'is_repeated': False,
        },
        'for_system_time_expr': {
            'proto_field': 'for_system_time_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'column_index_list': {
            'proto_field': 'column_index_list',
            'is_message': False,
            'is_repeated': True,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': False,
            'is_repeated': False,
        },
        'lock_mode': {
            'proto_field': 'lock_mode',
            'is_message': True,
            'is_repeated': False,
        },
        'read_as_row_type': {
            'proto_field': 'read_as_row_type',
            'is_message': False,
            'is_repeated': False,
        },
        'table_column_list': {
            'proto_field': 'table_column_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedTruncateStmt(ResolvedStatement):
    """Generated model for ResolvedTruncateStmtProto"""

    table_scan: Optional['ResolvedTableScan'] = None
    where_expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedTruncateStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_scan': {
            'proto_field': 'table_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'where_expr': {
            'proto_field': 'where_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedUndropStmt(ResolvedStatement):
    """Generated model for ResolvedUndropStmtProto"""

    schema_object_kind: Optional[str] = None
    is_if_not_exists: Optional[bool] = None
    name_path: List[str] = field(default_factory=list)
    for_system_time_expr: Optional['ResolvedExpr'] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedUndropStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'schema_object_kind': {
            'proto_field': 'schema_object_kind',
            'is_message': False,
            'is_repeated': False,
        },
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'for_system_time_expr': {
            'proto_field': 'for_system_time_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedUnnestItem(ResolvedArgument):
    """Generated model for ResolvedUnnestItemProto"""

    array_expr: Optional['ResolvedExpr'] = None
    element_column: Optional['ResolvedColumn'] = None
    array_offset_column: Optional['ResolvedColumnHolder'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedUnnestItemProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'array_expr': {
            'proto_field': 'array_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'element_column': {
            'proto_field': 'element_column',
            'is_message': True,
            'is_repeated': False,
        },
        'array_offset_column': {
            'proto_field': 'array_offset_column',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedUnpivotArg(ResolvedArgument):
    """Generated model for ResolvedUnpivotArgProto"""

    column_list: List['ResolvedColumnRef'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedUnpivotArgProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_list': {
            'proto_field': 'column_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedUnpivotScan(ResolvedScan):
    """Generated model for ResolvedUnpivotScanProto"""

    input_scan: Optional['ResolvedScan'] = None
    value_column_list: List['ResolvedColumn'] = field(default_factory=list)
    label_column: Optional['ResolvedColumn'] = None
    label_list: List['ResolvedLiteral'] = field(default_factory=list)
    unpivot_arg_list: List['ResolvedUnpivotArg'] = field(default_factory=list)
    projected_input_column_list: List['ResolvedComputedColumn'] = field(default_factory=list)
    include_nulls: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedUnpivotScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'value_column_list': {
            'proto_field': 'value_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'label_column': {
            'proto_field': 'label_column',
            'is_message': True,
            'is_repeated': False,
        },
        'label_list': {
            'proto_field': 'label_list',
            'is_message': True,
            'is_repeated': True,
        },
        'unpivot_arg_list': {
            'proto_field': 'unpivot_arg_list',
            'is_message': True,
            'is_repeated': True,
        },
        'projected_input_column_list': {
            'proto_field': 'projected_input_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'include_nulls': {
            'proto_field': 'include_nulls',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedUnsetArgumentScan(ResolvedScan):
    """Generated model for ResolvedUnsetArgumentScanProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedUnsetArgumentScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedUpdateConstructor(ResolvedExpr):
    """Generated model for ResolvedUpdateConstructorProto"""

    expr: Optional['ResolvedExpr'] = None
    alias: Optional[str] = None
    update_field_item_list: List['ResolvedUpdateFieldItem'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedUpdateConstructorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'alias': {
            'proto_field': 'alias',
            'is_message': False,
            'is_repeated': False,
        },
        'update_field_item_list': {
            'proto_field': 'update_field_item_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedUpdateFieldItem(ResolvedArgument):
    """Generated model for ResolvedUpdateFieldItemProto"""

    expr: Optional['ResolvedExpr'] = None
    proto_field_path: List['FieldDescriptorRef'] = field(default_factory=list)
    operation: Optional['ResolvedUpdateFieldItemEnums.Operation'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedUpdateFieldItemProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'proto_field_path': {
            'proto_field': 'proto_field_path',
            'is_message': True,
            'is_repeated': True,
        },
        'operation': {
            'proto_field': 'operation',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Operation',
            'enum_parent_message': 'ResolvedUpdateFieldItemEnums',
        },
    }


@dataclass
class ResolvedUpdateItem(ResolvedArgument):
    """Generated model for ResolvedUpdateItemProto"""

    target: Optional['ResolvedExpr'] = None
    set_value: Optional['ResolvedDMLValue'] = None
    element_column: Optional['ResolvedColumnHolder'] = None
    update_item_element_list: List['ResolvedUpdateItemElement'] = field(default_factory=list)
    delete_list: List['ResolvedDeleteStmt'] = field(default_factory=list)
    update_list: List['ResolvedUpdateStmt'] = field(default_factory=list)
    insert_list: List['ResolvedInsertStmt'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedUpdateItemProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'target': {
            'proto_field': 'target',
            'is_message': True,
            'is_repeated': False,
        },
        'set_value': {
            'proto_field': 'set_value',
            'is_message': True,
            'is_repeated': False,
        },
        'element_column': {
            'proto_field': 'element_column',
            'is_message': True,
            'is_repeated': False,
        },
        'update_item_element_list': {
            'proto_field': 'update_item_element_list',
            'is_message': True,
            'is_repeated': True,
        },
        'delete_list': {
            'proto_field': 'delete_list',
            'is_message': True,
            'is_repeated': True,
        },
        'update_list': {
            'proto_field': 'update_list',
            'is_message': True,
            'is_repeated': True,
        },
        'insert_list': {
            'proto_field': 'insert_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedUpdateItemElement(ResolvedArgument):
    """Generated model for ResolvedUpdateItemElementProto"""

    subscript: Optional['ResolvedExpr'] = None
    update_item: Optional['ResolvedUpdateItem'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedUpdateItemElementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'subscript': {
            'proto_field': 'subscript',
            'is_message': True,
            'is_repeated': False,
        },
        'update_item': {
            'proto_field': 'update_item',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedUpdateStmt(ResolvedStatement):
    """Generated model for ResolvedUpdateStmtProto"""

    table_scan: Optional['ResolvedTableScan'] = None
    column_access_list: List['ResolvedStatementEnums.ObjectAccess'] = field(default_factory=list)
    assert_rows_modified: Optional['ResolvedAssertRowsModified'] = None
    returning: Optional['ResolvedReturningClause'] = None
    array_offset_column: Optional['ResolvedColumnHolder'] = None
    where_expr: Optional['ResolvedExpr'] = None
    update_item_list: List['ResolvedUpdateItem'] = field(default_factory=list)
    from_scan: Optional['ResolvedScan'] = None
    topologically_sorted_generated_column_id_list: List[int] = field(default_factory=list)
    generated_column_expr_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedUpdateStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_scan': {
            'proto_field': 'table_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'column_access_list': {
            'proto_field': 'column_access_list',
            'is_message': False,
            'is_repeated': True,
            'is_enum': True,
            'enum_type_name': 'ObjectAccess',
            'enum_parent_message': 'ResolvedStatementEnums',
        },
        'assert_rows_modified': {
            'proto_field': 'assert_rows_modified',
            'is_message': True,
            'is_repeated': False,
        },
        'returning': {
            'proto_field': 'returning',
            'is_message': True,
            'is_repeated': False,
        },
        'array_offset_column': {
            'proto_field': 'array_offset_column',
            'is_message': True,
            'is_repeated': False,
        },
        'where_expr': {
            'proto_field': 'where_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'update_item_list': {
            'proto_field': 'update_item_list',
            'is_message': True,
            'is_repeated': True,
        },
        'from_scan': {
            'proto_field': 'from_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'topologically_sorted_generated_column_id_list': {
            'proto_field': 'topologically_sorted_generated_column_id_list',
            'is_message': False,
            'is_repeated': True,
        },
        'generated_column_expr_list': {
            'proto_field': 'generated_column_expr_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedWindowFrame(ResolvedArgument):
    """Generated model for ResolvedWindowFrameProto"""

    frame_unit: Optional['ResolvedWindowFrameEnums.FrameUnit'] = None
    start_expr: Optional['ResolvedWindowFrameExpr'] = None
    end_expr: Optional['ResolvedWindowFrameExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedWindowFrameProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'frame_unit': {
            'proto_field': 'frame_unit',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'FrameUnit',
            'enum_parent_message': 'ResolvedWindowFrameEnums',
        },
        'start_expr': {
            'proto_field': 'start_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'end_expr': {
            'proto_field': 'end_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedWindowFrameExpr(ResolvedArgument):
    """Generated model for ResolvedWindowFrameExprProto"""

    boundary_type: Optional['ResolvedWindowFrameExprEnums.BoundaryType'] = None
    expression: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedWindowFrameExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'boundary_type': {
            'proto_field': 'boundary_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'BoundaryType',
            'enum_parent_message': 'ResolvedWindowFrameExprEnums',
        },
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedWindowOrdering(ResolvedArgument):
    """Generated model for ResolvedWindowOrderingProto"""

    order_by_item_list: List['ResolvedOrderByItem'] = field(default_factory=list)
    hint_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedWindowOrderingProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'order_by_item_list': {
            'proto_field': 'order_by_item_list',
            'is_message': True,
            'is_repeated': True,
        },
        'hint_list': {
            'proto_field': 'hint_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedWindowPartitioning(ResolvedArgument):
    """Generated model for ResolvedWindowPartitioningProto"""

    partition_by_list: List['ResolvedColumnRef'] = field(default_factory=list)
    hint_list: List['ResolvedOption'] = field(default_factory=list)
    collation_list: List['ResolvedCollation'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedWindowPartitioningProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'partition_by_list': {
            'proto_field': 'partition_by_list',
            'is_message': True,
            'is_repeated': True,
        },
        'hint_list': {
            'proto_field': 'hint_list',
            'is_message': True,
            'is_repeated': True,
        },
        'collation_list': {
            'proto_field': 'collation_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedWithEntry(ResolvedArgument):
    """Generated model for ResolvedWithEntryProto"""

    with_query_name: Optional[str] = None
    with_subquery: Optional['ResolvedScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedWithEntryProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'with_query_name': {
            'proto_field': 'with_query_name',
            'is_message': False,
            'is_repeated': False,
        },
        'with_subquery': {
            'proto_field': 'with_subquery',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedWithExpr(ResolvedExpr):
    """Generated model for ResolvedWithExprProto"""

    assignment_list: List['ResolvedComputedColumn'] = field(default_factory=list)
    expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedWithExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'assignment_list': {
            'proto_field': 'assignment_list',
            'is_message': True,
            'is_repeated': True,
        },
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedWithPartitionColumns(ResolvedArgument):
    """Generated model for ResolvedWithPartitionColumnsProto"""

    column_definition_list: List['ResolvedColumnDefinition'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedWithPartitionColumnsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_definition_list': {
            'proto_field': 'column_definition_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedWithRefScan(ResolvedScan):
    """Generated model for ResolvedWithRefScanProto"""

    with_query_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedWithRefScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'with_query_name': {
            'proto_field': 'with_query_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedWithScan(ResolvedScan):
    """Generated model for ResolvedWithScanProto"""

    with_entry_list: List['ResolvedWithEntry'] = field(default_factory=list)
    query: Optional['ResolvedScan'] = None
    recursive: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedWithScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'with_entry_list': {
            'proto_field': 'with_entry_list',
            'is_message': True,
            'is_repeated': True,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'recursive': {
            'proto_field': 'recursive',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterStatementBase(ASTDdlStatement):
    """Generated model for ASTAlterStatementBaseProto"""

    path: Optional['ASTPathExpression'] = None
    action_list: Optional['ASTAlterActionList'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterStatementBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'path': {
            'proto_field': 'path',
            'is_message': True,
            'is_repeated': False,
        },
        'action_list': {
            'proto_field': 'action_list',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTArrayColumnSchema(ASTElementTypeColumnSchema):
    """Generated model for ASTArrayColumnSchemaProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTArrayColumnSchemaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTArrayElement(ASTGeneralizedPathExpression):
    """Generated model for ASTArrayElementProto"""

    array: Optional['ASTExpression'] = None
    position: Optional['ASTExpression'] = None
    open_bracket_location: Optional['ASTLocation'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTArrayElementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'array': {
            'proto_field': 'array',
            'is_message': True,
            'is_repeated': False,
        },
        'position': {
            'proto_field': 'position',
            'is_message': True,
            'is_repeated': False,
        },
        'open_bracket_location': {
            'proto_field': 'open_bracket_location',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAssignmentFromStruct(ASTScriptStatement):
    """Generated model for ASTAssignmentFromStructProto"""

    variables: Optional['ASTIdentifierList'] = None
    struct_expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAssignmentFromStructProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'variables': {
            'proto_field': 'variables',
            'is_message': True,
            'is_repeated': False,
        },
        'struct_expression': {
            'proto_field': 'struct_expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTBeginEndBlock(ASTScriptStatement):
    """Generated model for ASTBeginEndBlockProto"""

    label: Optional['ASTLabel'] = None
    statement_list_node: Optional['ASTStatementList'] = None
    handler_list: Optional['ASTExceptionHandlerList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBeginEndBlockProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'label': {
            'proto_field': 'label',
            'is_message': True,
            'is_repeated': False,
        },
        'statement_list_node': {
            'proto_field': 'statement_list_node',
            'is_message': True,
            'is_repeated': False,
        },
        'handler_list': {
            'proto_field': 'handler_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTBigNumericLiteral(ASTLeaf):
    """Generated model for ASTBigNumericLiteralProto"""

    string_literal: Optional['ASTStringLiteral'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBigNumericLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'string_literal': {
            'proto_field': 'string_literal',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTBreakContinueStatement(ASTScriptStatement):
    """Generated model for ASTBreakContinueStatementProto"""

    label: Optional['ASTLabel'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBreakContinueStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'label': {
            'proto_field': 'label',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTBytesLiteral(ASTLeaf):
    """Generated model for ASTBytesLiteralProto"""

    components: List['ASTBytesLiteralComponent'] = field(default_factory=list)
    bytes_value: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBytesLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'components': {
            'proto_field': 'components',
            'is_message': True,
            'is_repeated': True,
        },
        'bytes_value': {
            'proto_field': 'bytes_value',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCaseStatement(ASTScriptStatement):
    """Generated model for ASTCaseStatementProto"""

    expression: Optional['ASTExpression'] = None
    when_then_clauses: Optional['ASTWhenThenClauseList'] = None
    else_list: Optional['ASTStatementList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCaseStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'when_then_clauses': {
            'proto_field': 'when_then_clauses',
            'is_message': True,
            'is_repeated': False,
        },
        'else_list': {
            'proto_field': 'else_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCheckConstraint(ASTTableConstraint):
    """Generated model for ASTCheckConstraintProto"""

    expression: Optional['ASTExpression'] = None
    options_list: Optional['ASTOptionsList'] = None
    constraint_name: Optional['ASTIdentifier'] = None
    is_enforced: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCheckConstraintProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'constraint_name': {
            'proto_field': 'constraint_name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_enforced': {
            'proto_field': 'is_enforced',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCloneDataSource(ASTTableDataSource):
    """Generated model for ASTCloneDataSourceProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCloneDataSourceProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTCopyDataSource(ASTTableDataSource):
    """Generated model for ASTCopyDataSourceProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCopyDataSourceProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTCreateStatement(ASTDdlStatement):
    """Generated model for ASTCreateStatementProto"""

    scope: Optional['ASTCreateStatementEnums.Scope'] = None
    is_or_replace: Optional[bool] = None
    is_if_not_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'scope': {
            'proto_field': 'scope',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Scope',
            'enum_parent_message': 'ASTCreateStatementEnums',
        },
        'is_or_replace': {
            'proto_field': 'is_or_replace',
            'is_message': False,
            'is_repeated': False,
        },
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDotGeneralizedField(ASTGeneralizedPathExpression):
    """Generated model for ASTDotGeneralizedFieldProto"""

    expr: Optional['ASTExpression'] = None
    path: Optional['ASTPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDotGeneralizedFieldProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'path': {
            'proto_field': 'path',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDotIdentifier(ASTGeneralizedPathExpression):
    """Generated model for ASTDotIdentifierProto"""

    expr: Optional['ASTExpression'] = None
    name: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDotIdentifierProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropEntityStatement(ASTDdlStatement):
    """Generated model for ASTDropEntityStatementProto"""

    entity_type: Optional['ASTIdentifier'] = None
    name: Optional['ASTPathExpression'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropEntityStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'entity_type': {
            'proto_field': 'entity_type',
            'is_message': True,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropFunctionStatement(ASTDdlStatement):
    """Generated model for ASTDropFunctionStatementProto"""

    name: Optional['ASTPathExpression'] = None
    parameters: Optional['ASTFunctionParameters'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropFunctionStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'parameters': {
            'proto_field': 'parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropIndexStatement(ASTDdlStatement):
    """Generated model for ASTDropIndexStatementProto"""

    name: Optional['ASTPathExpression'] = None
    table_name: Optional['ASTPathExpression'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropIndexStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'table_name': {
            'proto_field': 'table_name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropMaterializedViewStatement(ASTDdlStatement):
    """Generated model for ASTDropMaterializedViewStatementProto"""

    name: Optional['ASTPathExpression'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropMaterializedViewStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropPrivilegeRestrictionStatement(ASTDdlStatement):
    """Generated model for ASTDropPrivilegeRestrictionStatementProto"""

    is_if_exists: Optional[bool] = None
    privileges: Optional['ASTPrivileges'] = None
    object_type: Optional['ASTIdentifier'] = None
    name_path: Optional['ASTPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropPrivilegeRestrictionStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'privileges': {
            'proto_field': 'privileges',
            'is_message': True,
            'is_repeated': False,
        },
        'object_type': {
            'proto_field': 'object_type',
            'is_message': True,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropRowAccessPolicyStatement(ASTDdlStatement):
    """Generated model for ASTDropRowAccessPolicyStatementProto"""

    name: Optional['ASTPathExpression'] = None
    table_name: Optional['ASTPathExpression'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropRowAccessPolicyStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'table_name': {
            'proto_field': 'table_name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropSnapshotTableStatement(ASTDdlStatement):
    """Generated model for ASTDropSnapshotTableStatementProto"""

    name: Optional['ASTPathExpression'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropSnapshotTableStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropStatement(ASTDdlStatement):
    """Generated model for ASTDropStatementProto"""

    name: Optional['ASTPathExpression'] = None
    drop_mode: Optional['ASTDropStatementEnums.DropMode'] = None
    is_if_exists: Optional[bool] = None
    schema_object_kind: Optional['SchemaObjectKind'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'drop_mode': {
            'proto_field': 'drop_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'DropMode',
            'enum_parent_message': 'ASTDropStatementEnums',
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'schema_object_kind': {
            'proto_field': 'schema_object_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SchemaObjectKind',
        },
    }


@dataclass
class ASTDropTableFunctionStatement(ASTDdlStatement):
    """Generated model for ASTDropTableFunctionStatementProto"""

    name: Optional['ASTPathExpression'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropTableFunctionStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTExtendedPathExpression(ASTGeneralizedPathExpression):
    """Generated model for ASTExtendedPathExpressionProto"""

    parenthesized_path: Optional['ASTGeneralizedPathExpression'] = None
    generalized_path_expression: Optional['ASTGeneralizedPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTExtendedPathExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'parenthesized_path': {
            'proto_field': 'parenthesized_path',
            'is_message': True,
            'is_repeated': False,
        },
        'generalized_path_expression': {
            'proto_field': 'generalized_path_expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTForeignKey(ASTTableConstraint):
    """Generated model for ASTForeignKeyProto"""

    column_list: Optional['ASTColumnList'] = None
    reference: Optional['ASTForeignKeyReference'] = None
    options_list: Optional['ASTOptionsList'] = None
    constraint_name: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTForeignKeyProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_list': {
            'proto_field': 'column_list',
            'is_message': True,
            'is_repeated': False,
        },
        'reference': {
            'proto_field': 'reference',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'constraint_name': {
            'proto_field': 'constraint_name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlInlineSubqueryCall(ASTGqlCallBase):
    """Generated model for ASTGqlInlineSubqueryCallProto"""

    subquery: Optional['ASTQuery'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlInlineSubqueryCallProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'subquery': {
            'proto_field': 'subquery',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGqlNamedCall(ASTGqlCallBase):
    """Generated model for ASTGqlNamedCallProto"""

    tvf_call: Optional['ASTTVF'] = None
    yield_clause: Optional['ASTYieldItemList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGqlNamedCallProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'tvf_call': {
            'proto_field': 'tvf_call',
            'is_message': True,
            'is_repeated': False,
        },
        'yield_clause': {
            'proto_field': 'yield_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphEdgePattern(ASTGraphElementPattern):
    """Generated model for ASTGraphEdgePatternProto"""

    orientation: Optional['ASTGraphEdgePatternEnums.EdgeOrientation'] = None
    lhs_hint: Optional['ASTGraphLhsHint'] = None
    rhs_hint: Optional['ASTGraphRhsHint'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphEdgePatternProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'orientation': {
            'proto_field': 'orientation',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'EdgeOrientation',
            'enum_parent_message': 'ASTGraphEdgePatternEnums',
        },
        'lhs_hint': {
            'proto_field': 'lhs_hint',
            'is_message': True,
            'is_repeated': False,
        },
        'rhs_hint': {
            'proto_field': 'rhs_hint',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTGraphNodePattern(ASTGraphElementPattern):
    """Generated model for ASTGraphNodePatternProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTGraphNodePatternProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTIfStatement(ASTScriptStatement):
    """Generated model for ASTIfStatementProto"""

    condition: Optional['ASTExpression'] = None
    then_list: Optional['ASTStatementList'] = None
    elseif_clauses: Optional['ASTElseifClauseList'] = None
    else_list: Optional['ASTStatementList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIfStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'condition': {
            'proto_field': 'condition',
            'is_message': True,
            'is_repeated': False,
        },
        'then_list': {
            'proto_field': 'then_list',
            'is_message': True,
            'is_repeated': False,
        },
        'elseif_clauses': {
            'proto_field': 'elseif_clauses',
            'is_message': True,
            'is_repeated': False,
        },
        'else_list': {
            'proto_field': 'else_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTJSONLiteral(ASTLeaf):
    """Generated model for ASTJSONLiteralProto"""

    string_literal: Optional['ASTStringLiteral'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTJSONLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'string_literal': {
            'proto_field': 'string_literal',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTLoopStatement(ASTScriptStatement):
    """Generated model for ASTLoopStatementProto"""

    label: Optional['ASTLabel'] = None
    body: Optional['ASTStatementList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTLoopStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'label': {
            'proto_field': 'label',
            'is_message': True,
            'is_repeated': False,
        },
        'body': {
            'proto_field': 'body',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTNumericLiteral(ASTLeaf):
    """Generated model for ASTNumericLiteralProto"""

    string_literal: Optional['ASTStringLiteral'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTNumericLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'string_literal': {
            'proto_field': 'string_literal',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTParameterExpr(ASTParameterExprBase):
    """Generated model for ASTParameterExprProto"""

    name: Optional['ASTIdentifier'] = None
    position: Optional[int] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTParameterExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'position': {
            'proto_field': 'position',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPathExpression(ASTGeneralizedPathExpression):
    """Generated model for ASTPathExpressionProto"""

    names: List['ASTIdentifier'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPathExpressionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'names': {
            'proto_field': 'names',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTPrimaryKey(ASTTableConstraint):
    """Generated model for ASTPrimaryKeyProto"""

    element_list: Optional['ASTPrimaryKeyElementList'] = None
    options_list: Optional['ASTOptionsList'] = None
    constraint_name: Optional['ASTIdentifier'] = None
    enforced: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPrimaryKeyProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'element_list': {
            'proto_field': 'element_list',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'constraint_name': {
            'proto_field': 'constraint_name',
            'is_message': True,
            'is_repeated': False,
        },
        'enforced': {
            'proto_field': 'enforced',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTPrintableLeaf(ASTLeaf):
    """Generated model for ASTPrintableLeafProto"""

    image: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTPrintableLeafProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'image': {
            'proto_field': 'image',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRaiseStatement(ASTScriptStatement):
    """Generated model for ASTRaiseStatementProto"""

    message: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRaiseStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'message': {
            'proto_field': 'message',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTRangeColumnSchema(ASTElementTypeColumnSchema):
    """Generated model for ASTRangeColumnSchemaProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRangeColumnSchemaProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTReturnStatement(ASTScriptStatement):
    """Generated model for ASTReturnStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTReturnStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTSingleAssignment(ASTScriptStatement):
    """Generated model for ASTSingleAssignmentProto"""

    variable: Optional['ASTIdentifier'] = None
    expression: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSingleAssignmentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'variable': {
            'proto_field': 'variable',
            'is_message': True,
            'is_repeated': False,
        },
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTStringLiteral(ASTLeaf):
    """Generated model for ASTStringLiteralProto"""

    components: List['ASTStringLiteralComponent'] = field(default_factory=list)
    string_value: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStringLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'components': {
            'proto_field': 'components',
            'is_message': True,
            'is_repeated': True,
        },
        'string_value': {
            'proto_field': 'string_value',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTSystemVariableExpr(ASTParameterExprBase):
    """Generated model for ASTSystemVariableExprProto"""

    path: Optional['ASTPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTSystemVariableExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'path': {
            'proto_field': 'path',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTUndropStatement(ASTDdlStatement):
    """Generated model for ASTUndropStatementProto"""

    schema_object_kind: Optional['SchemaObjectKind'] = None
    name: Optional['ASTPathExpression'] = None
    is_if_not_exists: Optional[bool] = None
    for_system_time: Optional['ASTForSystemTime'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTUndropStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'schema_object_kind': {
            'proto_field': 'schema_object_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SchemaObjectKind',
        },
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'for_system_time': {
            'proto_field': 'for_system_time',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTVariableDeclaration(ASTScriptStatement):
    """Generated model for ASTVariableDeclarationProto"""

    variable_list: Optional['ASTIdentifierList'] = None
    type: Optional['ASTType'] = None
    default_value: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTVariableDeclarationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'variable_list': {
            'proto_field': 'variable_list',
            'is_message': True,
            'is_repeated': False,
        },
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'default_value': {
            'proto_field': 'default_value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAddColumnAction(ResolvedAlterAction):
    """Generated model for ResolvedAddColumnActionProto"""

    is_if_not_exists: Optional[bool] = None
    column_definition: Optional['ResolvedColumnDefinition'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAddColumnActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'column_definition': {
            'proto_field': 'column_definition',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAddColumnIdentifierAction(ResolvedAlterAction):
    """Generated model for ResolvedAddColumnIdentifierActionProto"""

    name: Optional[str] = None
    options_list: List['ResolvedOption'] = field(default_factory=list)
    is_if_not_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAddColumnIdentifierActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': True,
        },
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAddConstraintAction(ResolvedAlterAction):
    """Generated model for ResolvedAddConstraintActionProto"""

    is_if_not_exists: Optional[bool] = None
    constraint: Optional['ResolvedConstraint'] = None
    table: Optional['TableRef'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAddConstraintActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'constraint': {
            'proto_field': 'constraint',
            'is_message': True,
            'is_repeated': False,
        },
        'table': {
            'proto_field': 'table',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAddSubEntityAction(ResolvedAlterAction):
    """Generated model for ResolvedAddSubEntityActionProto"""

    entity_type: Optional[str] = None
    name: Optional[str] = None
    options_list: List['ResolvedOption'] = field(default_factory=list)
    is_if_not_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAddSubEntityActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'entity_type': {
            'proto_field': 'entity_type',
            'is_message': False,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': True,
        },
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAddToRestricteeListAction(ResolvedAlterAction):
    """Generated model for ResolvedAddToRestricteeListActionProto"""

    is_if_not_exists: Optional[bool] = None
    restrictee_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAddToRestricteeListActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_not_exists': {
            'proto_field': 'is_if_not_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'restrictee_list': {
            'proto_field': 'restrictee_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedAggregateScan(ResolvedAggregateScanBase):
    """Generated model for ResolvedAggregateScanProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAggregateScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAggregationThresholdAggregateScan(ResolvedAggregateScanBase):
    """Generated model for ResolvedAggregationThresholdAggregateScanProto"""

    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAggregationThresholdAggregateScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedAlterAllRowAccessPoliciesStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterAllRowAccessPoliciesStmtProto"""

    table_scan: Optional['ResolvedTableScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterAllRowAccessPoliciesStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_scan': {
            'proto_field': 'table_scan',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAlterApproxViewStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterApproxViewStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterApproxViewStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterColumnAction(ResolvedAlterAction):
    """Generated model for ResolvedAlterColumnActionProto"""

    is_if_exists: Optional[bool] = None
    column: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterColumnActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'column': {
            'proto_field': 'column',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAlterConnectionStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterConnectionStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterConnectionStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterDatabaseStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterDatabaseStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterDatabaseStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterEntityStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterEntityStmtProto"""

    entity_type: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterEntityStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'entity_type': {
            'proto_field': 'entity_type',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAlterExternalSchemaStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterExternalSchemaStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterExternalSchemaStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterIndexStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterIndexStmtProto"""

    table_name_path: List[str] = field(default_factory=list)
    index_type: Optional['ResolvedAlterIndexStmtEnums.AlterIndexType'] = None
    table_scan: Optional['ResolvedTableScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterIndexStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_name_path': {
            'proto_field': 'table_name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'index_type': {
            'proto_field': 'index_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'AlterIndexType',
            'enum_parent_message': 'ResolvedAlterIndexStmtEnums',
        },
        'table_scan': {
            'proto_field': 'table_scan',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAlterMaterializedViewStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterMaterializedViewStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterMaterializedViewStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterModelStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterModelStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterModelStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterPrivilegeRestrictionStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterPrivilegeRestrictionStmtProto"""

    column_privilege_list: List['ResolvedPrivilege'] = field(default_factory=list)
    object_type: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterPrivilegeRestrictionStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_privilege_list': {
            'proto_field': 'column_privilege_list',
            'is_message': True,
            'is_repeated': True,
        },
        'object_type': {
            'proto_field': 'object_type',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAlterRowAccessPolicyStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterRowAccessPolicyStmtProto"""

    name: Optional[str] = None
    table_scan: Optional['ResolvedTableScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterRowAccessPolicyStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'table_scan': {
            'proto_field': 'table_scan',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAlterSchemaStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterSchemaStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterSchemaStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterSequenceStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterSequenceStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterSequenceStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterSubEntityAction(ResolvedAlterAction):
    """Generated model for ResolvedAlterSubEntityActionProto"""

    entity_type: Optional[str] = None
    name: Optional[str] = None
    alter_action: Optional['ResolvedAlterAction'] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterSubEntityActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'entity_type': {
            'proto_field': 'entity_type',
            'is_message': False,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'alter_action': {
            'proto_field': 'alter_action',
            'is_message': True,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAlterTableStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterTableStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterTableStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterViewStmt(ResolvedAlterObjectStmt):
    """Generated model for ResolvedAlterViewStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterViewStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAnonymizedAggregateScan(ResolvedAggregateScanBase):
    """Generated model for ResolvedAnonymizedAggregateScanProto"""

    k_threshold_expr: Optional['ResolvedExpr'] = None
    anonymization_option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAnonymizedAggregateScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'k_threshold_expr': {
            'proto_field': 'k_threshold_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'anonymization_option_list': {
            'proto_field': 'anonymization_option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCheckConstraint(ResolvedConstraint):
    """Generated model for ResolvedCheckConstraintProto"""

    constraint_name: Optional[str] = None
    expression: Optional['ResolvedExpr'] = None
    enforced: Optional[bool] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCheckConstraintProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'constraint_name': {
            'proto_field': 'constraint_name',
            'is_message': False,
            'is_repeated': False,
        },
        'expression': {
            'proto_field': 'expression',
            'is_message': True,
            'is_repeated': False,
        },
        'enforced': {
            'proto_field': 'enforced',
            'is_message': False,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedComputedColumnImpl(ResolvedComputedColumnBase):
    """Generated model for ResolvedComputedColumnImplProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedComputedColumnImplProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedCreateConnectionStmt(ResolvedCreateStatement):
    """Generated model for ResolvedCreateConnectionStmtProto"""

    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateConnectionStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCreateConstantStmt(ResolvedCreateStatement):
    """Generated model for ResolvedCreateConstantStmtProto"""

    expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateConstantStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCreateEntityStmt(ResolvedCreateStatement):
    """Generated model for ResolvedCreateEntityStmtProto"""

    entity_type: Optional[str] = None
    entity_body_json: Optional[str] = None
    entity_body_text: Optional[str] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateEntityStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'entity_type': {
            'proto_field': 'entity_type',
            'is_message': False,
            'is_repeated': False,
        },
        'entity_body_json': {
            'proto_field': 'entity_body_json',
            'is_message': False,
            'is_repeated': False,
        },
        'entity_body_text': {
            'proto_field': 'entity_body_text',
            'is_message': False,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCreateFunctionStmt(ResolvedCreateStatement):
    """Generated model for ResolvedCreateFunctionStmtProto"""

    has_explicit_return_type: Optional[bool] = None
    return_type: Optional['Type'] = None
    argument_name_list: List[str] = field(default_factory=list)
    signature: Optional['FunctionSignature'] = None
    is_aggregate: Optional[bool] = None
    language: Optional[str] = None
    code: Optional[str] = None
    aggregate_expression_list: List['ResolvedComputedColumn'] = field(default_factory=list)
    function_expression: Optional['ResolvedExpr'] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)
    sql_security: Optional['ResolvedCreateStatementEnums.SqlSecurity'] = None
    determinism_level: Optional['ResolvedCreateStatementEnums.DeterminismLevel'] = None
    is_remote: Optional[bool] = None
    connection: Optional['ResolvedConnection'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateFunctionStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'has_explicit_return_type': {
            'proto_field': 'has_explicit_return_type',
            'is_message': False,
            'is_repeated': False,
        },
        'return_type': {
            'proto_field': 'return_type',
            'is_message': True,
            'is_repeated': False,
        },
        'argument_name_list': {
            'proto_field': 'argument_name_list',
            'is_message': False,
            'is_repeated': True,
        },
        'signature': {
            'proto_field': 'signature',
            'is_message': True,
            'is_repeated': False,
        },
        'is_aggregate': {
            'proto_field': 'is_aggregate',
            'is_message': False,
            'is_repeated': False,
        },
        'language': {
            'proto_field': 'language',
            'is_message': False,
            'is_repeated': False,
        },
        'code': {
            'proto_field': 'code',
            'is_message': False,
            'is_repeated': False,
        },
        'aggregate_expression_list': {
            'proto_field': 'aggregate_expression_list',
            'is_message': True,
            'is_repeated': True,
        },
        'function_expression': {
            'proto_field': 'function_expression',
            'is_message': True,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'sql_security': {
            'proto_field': 'sql_security',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SqlSecurity',
            'enum_parent_message': 'ResolvedCreateStatementEnums',
        },
        'determinism_level': {
            'proto_field': 'determinism_level',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'DeterminismLevel',
            'enum_parent_message': 'ResolvedCreateStatementEnums',
        },
        'is_remote': {
            'proto_field': 'is_remote',
            'is_message': False,
            'is_repeated': False,
        },
        'connection': {
            'proto_field': 'connection',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCreateIndexStmt(ResolvedCreateStatement):
    """Generated model for ResolvedCreateIndexStmtProto"""

    table_name_path: List[str] = field(default_factory=list)
    table_scan: Optional['ResolvedTableScan'] = None
    is_unique: Optional[bool] = None
    is_search: Optional[bool] = None
    is_vector: Optional[bool] = None
    index_all_columns: Optional[bool] = None
    index_item_list: List['ResolvedIndexItem'] = field(default_factory=list)
    storing_expression_list: List['ResolvedExpr'] = field(default_factory=list)
    partition_by_list: List['ResolvedExpr'] = field(default_factory=list)
    option_list: List['ResolvedOption'] = field(default_factory=list)
    computed_columns_list: List['ResolvedComputedColumn'] = field(default_factory=list)
    unnest_expressions_list: List['ResolvedUnnestItem'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateIndexStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_name_path': {
            'proto_field': 'table_name_path',
            'is_message': False,
            'is_repeated': True,
        },
        'table_scan': {
            'proto_field': 'table_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'is_unique': {
            'proto_field': 'is_unique',
            'is_message': False,
            'is_repeated': False,
        },
        'is_search': {
            'proto_field': 'is_search',
            'is_message': False,
            'is_repeated': False,
        },
        'is_vector': {
            'proto_field': 'is_vector',
            'is_message': False,
            'is_repeated': False,
        },
        'index_all_columns': {
            'proto_field': 'index_all_columns',
            'is_message': False,
            'is_repeated': False,
        },
        'index_item_list': {
            'proto_field': 'index_item_list',
            'is_message': True,
            'is_repeated': True,
        },
        'storing_expression_list': {
            'proto_field': 'storing_expression_list',
            'is_message': True,
            'is_repeated': True,
        },
        'partition_by_list': {
            'proto_field': 'partition_by_list',
            'is_message': True,
            'is_repeated': True,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'computed_columns_list': {
            'proto_field': 'computed_columns_list',
            'is_message': True,
            'is_repeated': True,
        },
        'unnest_expressions_list': {
            'proto_field': 'unnest_expressions_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCreateModelStmt(ResolvedCreateStatement):
    """Generated model for ResolvedCreateModelStmtProto"""

    option_list: List['ResolvedOption'] = field(default_factory=list)
    output_column_list: List['ResolvedOutputColumn'] = field(default_factory=list)
    query: Optional['ResolvedScan'] = None
    aliased_query_list: List['ResolvedCreateModelAliasedQuery'] = field(default_factory=list)
    transform_input_column_list: List['ResolvedColumnDefinition'] = field(default_factory=list)
    transform_list: List['ResolvedComputedColumn'] = field(default_factory=list)
    transform_output_column_list: List['ResolvedOutputColumn'] = field(default_factory=list)
    transform_analytic_function_group_list: List['ResolvedAnalyticFunctionGroup'] = field(default_factory=list)
    input_column_definition_list: List['ResolvedColumnDefinition'] = field(default_factory=list)
    output_column_definition_list: List['ResolvedColumnDefinition'] = field(default_factory=list)
    is_remote: Optional[bool] = None
    connection: Optional['ResolvedConnection'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateModelStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'output_column_list': {
            'proto_field': 'output_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'aliased_query_list': {
            'proto_field': 'aliased_query_list',
            'is_message': True,
            'is_repeated': True,
        },
        'transform_input_column_list': {
            'proto_field': 'transform_input_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'transform_list': {
            'proto_field': 'transform_list',
            'is_message': True,
            'is_repeated': True,
        },
        'transform_output_column_list': {
            'proto_field': 'transform_output_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'transform_analytic_function_group_list': {
            'proto_field': 'transform_analytic_function_group_list',
            'is_message': True,
            'is_repeated': True,
        },
        'input_column_definition_list': {
            'proto_field': 'input_column_definition_list',
            'is_message': True,
            'is_repeated': True,
        },
        'output_column_definition_list': {
            'proto_field': 'output_column_definition_list',
            'is_message': True,
            'is_repeated': True,
        },
        'is_remote': {
            'proto_field': 'is_remote',
            'is_message': False,
            'is_repeated': False,
        },
        'connection': {
            'proto_field': 'connection',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCreatePrivilegeRestrictionStmt(ResolvedCreateStatement):
    """Generated model for ResolvedCreatePrivilegeRestrictionStmtProto"""

    column_privilege_list: List['ResolvedPrivilege'] = field(default_factory=list)
    object_type: Optional[str] = None
    restrictee_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreatePrivilegeRestrictionStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_privilege_list': {
            'proto_field': 'column_privilege_list',
            'is_message': True,
            'is_repeated': True,
        },
        'object_type': {
            'proto_field': 'object_type',
            'is_message': False,
            'is_repeated': False,
        },
        'restrictee_list': {
            'proto_field': 'restrictee_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCreateProcedureStmt(ResolvedCreateStatement):
    """Generated model for ResolvedCreateProcedureStmtProto"""

    argument_name_list: List[str] = field(default_factory=list)
    signature: Optional['FunctionSignature'] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)
    procedure_body: Optional[str] = None
    connection: Optional['ResolvedConnection'] = None
    language: Optional[str] = None
    code: Optional[str] = None
    external_security: Optional['ResolvedCreateStatementEnums.SqlSecurity'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateProcedureStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'argument_name_list': {
            'proto_field': 'argument_name_list',
            'is_message': False,
            'is_repeated': True,
        },
        'signature': {
            'proto_field': 'signature',
            'is_message': True,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'procedure_body': {
            'proto_field': 'procedure_body',
            'is_message': False,
            'is_repeated': False,
        },
        'connection': {
            'proto_field': 'connection',
            'is_message': True,
            'is_repeated': False,
        },
        'language': {
            'proto_field': 'language',
            'is_message': False,
            'is_repeated': False,
        },
        'code': {
            'proto_field': 'code',
            'is_message': False,
            'is_repeated': False,
        },
        'external_security': {
            'proto_field': 'external_security',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SqlSecurity',
            'enum_parent_message': 'ResolvedCreateStatementEnums',
        },
    }


@dataclass
class ResolvedCreatePropertyGraphStmt(ResolvedCreateStatement):
    """Generated model for ResolvedCreatePropertyGraphStmtProto"""

    node_table_list: List['ResolvedGraphElementTable'] = field(default_factory=list)
    edge_table_list: List['ResolvedGraphElementTable'] = field(default_factory=list)
    label_list: List['ResolvedGraphElementLabel'] = field(default_factory=list)
    property_declaration_list: List['ResolvedGraphPropertyDeclaration'] = field(default_factory=list)
    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreatePropertyGraphStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'node_table_list': {
            'proto_field': 'node_table_list',
            'is_message': True,
            'is_repeated': True,
        },
        'edge_table_list': {
            'proto_field': 'edge_table_list',
            'is_message': True,
            'is_repeated': True,
        },
        'label_list': {
            'proto_field': 'label_list',
            'is_message': True,
            'is_repeated': True,
        },
        'property_declaration_list': {
            'proto_field': 'property_declaration_list',
            'is_message': True,
            'is_repeated': True,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCreateSchemaStmtBase(ResolvedCreateStatement):
    """Generated model for ResolvedCreateSchemaStmtBaseProto"""

    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateSchemaStmtBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCreateSequenceStmt(ResolvedCreateStatement):
    """Generated model for ResolvedCreateSequenceStmtProto"""

    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateSequenceStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCreateSnapshotTableStmt(ResolvedCreateStatement):
    """Generated model for ResolvedCreateSnapshotTableStmtProto"""

    clone_from: Optional['ResolvedScan'] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateSnapshotTableStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'clone_from': {
            'proto_field': 'clone_from',
            'is_message': True,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCreateTableFunctionStmt(ResolvedCreateStatement):
    """Generated model for ResolvedCreateTableFunctionStmtProto"""

    argument_name_list: List[str] = field(default_factory=list)
    signature: Optional['FunctionSignature'] = None
    has_explicit_return_schema: Optional[bool] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)
    language: Optional[str] = None
    code: Optional[str] = None
    query: Optional['ResolvedScan'] = None
    output_column_list: List['ResolvedOutputColumn'] = field(default_factory=list)
    is_value_table: Optional[bool] = None
    sql_security: Optional['ResolvedCreateStatementEnums.SqlSecurity'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateTableFunctionStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'argument_name_list': {
            'proto_field': 'argument_name_list',
            'is_message': False,
            'is_repeated': True,
        },
        'signature': {
            'proto_field': 'signature',
            'is_message': True,
            'is_repeated': False,
        },
        'has_explicit_return_schema': {
            'proto_field': 'has_explicit_return_schema',
            'is_message': False,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'language': {
            'proto_field': 'language',
            'is_message': False,
            'is_repeated': False,
        },
        'code': {
            'proto_field': 'code',
            'is_message': False,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'output_column_list': {
            'proto_field': 'output_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'is_value_table': {
            'proto_field': 'is_value_table',
            'is_message': False,
            'is_repeated': False,
        },
        'sql_security': {
            'proto_field': 'sql_security',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SqlSecurity',
            'enum_parent_message': 'ResolvedCreateStatementEnums',
        },
    }


@dataclass
class ResolvedCreateTableStmtBase(ResolvedCreateStatement):
    """Generated model for ResolvedCreateTableStmtBaseProto"""

    option_list: List['ResolvedOption'] = field(default_factory=list)
    column_definition_list: List['ResolvedColumnDefinition'] = field(default_factory=list)
    pseudo_column_list: List['ResolvedColumn'] = field(default_factory=list)
    primary_key: Optional['ResolvedPrimaryKey'] = None
    foreign_key_list: List['ResolvedForeignKey'] = field(default_factory=list)
    check_constraint_list: List['ResolvedCheckConstraint'] = field(default_factory=list)
    is_value_table: Optional[bool] = None
    like_table: Optional['TableRef'] = None
    collation_name: Optional['ResolvedExpr'] = None
    connection: Optional['ResolvedConnection'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateTableStmtBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'column_definition_list': {
            'proto_field': 'column_definition_list',
            'is_message': True,
            'is_repeated': True,
        },
        'pseudo_column_list': {
            'proto_field': 'pseudo_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'primary_key': {
            'proto_field': 'primary_key',
            'is_message': True,
            'is_repeated': False,
        },
        'foreign_key_list': {
            'proto_field': 'foreign_key_list',
            'is_message': True,
            'is_repeated': True,
        },
        'check_constraint_list': {
            'proto_field': 'check_constraint_list',
            'is_message': True,
            'is_repeated': True,
        },
        'is_value_table': {
            'proto_field': 'is_value_table',
            'is_message': False,
            'is_repeated': False,
        },
        'like_table': {
            'proto_field': 'like_table',
            'is_message': True,
            'is_repeated': False,
        },
        'collation_name': {
            'proto_field': 'collation_name',
            'is_message': True,
            'is_repeated': False,
        },
        'connection': {
            'proto_field': 'connection',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCreateViewBase(ResolvedCreateStatement):
    """Generated model for ResolvedCreateViewBaseProto"""

    option_list: List['ResolvedOption'] = field(default_factory=list)
    output_column_list: List['ResolvedOutputColumn'] = field(default_factory=list)
    has_explicit_columns: Optional[bool] = None
    query: Optional['ResolvedScan'] = None
    sql: Optional[str] = None
    sql_security: Optional['ResolvedCreateStatementEnums.SqlSecurity'] = None
    is_value_table: Optional[bool] = None
    recursive: Optional[bool] = None
    column_definition_list: List['ResolvedColumnDefinition'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateViewBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'output_column_list': {
            'proto_field': 'output_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'has_explicit_columns': {
            'proto_field': 'has_explicit_columns',
            'is_message': False,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'sql': {
            'proto_field': 'sql',
            'is_message': False,
            'is_repeated': False,
        },
        'sql_security': {
            'proto_field': 'sql_security',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SqlSecurity',
            'enum_parent_message': 'ResolvedCreateStatementEnums',
        },
        'is_value_table': {
            'proto_field': 'is_value_table',
            'is_message': False,
            'is_repeated': False,
        },
        'recursive': {
            'proto_field': 'recursive',
            'is_message': False,
            'is_repeated': False,
        },
        'column_definition_list': {
            'proto_field': 'column_definition_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCube(ResolvedGroupingSetBase):
    """Generated model for ResolvedCubeProto"""

    cube_column_list: List['ResolvedGroupingSetMultiColumn'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCubeProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'cube_column_list': {
            'proto_field': 'cube_column_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedDifferentialPrivacyAggregateScan(ResolvedAggregateScanBase):
    """Generated model for ResolvedDifferentialPrivacyAggregateScanProto"""

    group_selection_threshold_expr: Optional['ResolvedExpr'] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDifferentialPrivacyAggregateScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'group_selection_threshold_expr': {
            'proto_field': 'group_selection_threshold_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedDropColumnAction(ResolvedAlterAction):
    """Generated model for ResolvedDropColumnActionProto"""

    is_if_exists: Optional[bool] = None
    name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDropColumnActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedDropConstraintAction(ResolvedAlterAction):
    """Generated model for ResolvedDropConstraintActionProto"""

    is_if_exists: Optional[bool] = None
    name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDropConstraintActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedDropPrimaryKeyAction(ResolvedAlterAction):
    """Generated model for ResolvedDropPrimaryKeyActionProto"""

    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDropPrimaryKeyActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedDropSubEntityAction(ResolvedAlterAction):
    """Generated model for ResolvedDropSubEntityActionProto"""

    entity_type: Optional[str] = None
    name: Optional[str] = None
    is_if_exists: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDropSubEntityActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'entity_type': {
            'proto_field': 'entity_type',
            'is_message': False,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedFilterUsingAction(ResolvedAlterAction):
    """Generated model for ResolvedFilterUsingActionProto"""

    predicate: Optional['ResolvedExpr'] = None
    predicate_str: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedFilterUsingActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'predicate': {
            'proto_field': 'predicate',
            'is_message': True,
            'is_repeated': False,
        },
        'predicate_str': {
            'proto_field': 'predicate_str',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedForeignKey(ResolvedConstraint):
    """Generated model for ResolvedForeignKeyProto"""

    constraint_name: Optional[str] = None
    referencing_column_offset_list: List[int] = field(default_factory=list)
    referenced_table: Optional['TableRef'] = None
    referenced_column_offset_list: List[int] = field(default_factory=list)
    match_mode: Optional['ResolvedForeignKeyEnums.MatchMode'] = None
    update_action: Optional['ResolvedForeignKeyEnums.ActionOperation'] = None
    delete_action: Optional['ResolvedForeignKeyEnums.ActionOperation'] = None
    enforced: Optional[bool] = None
    option_list: List['ResolvedOption'] = field(default_factory=list)
    referencing_column_list: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedForeignKeyProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'constraint_name': {
            'proto_field': 'constraint_name',
            'is_message': False,
            'is_repeated': False,
        },
        'referencing_column_offset_list': {
            'proto_field': 'referencing_column_offset_list',
            'is_message': False,
            'is_repeated': True,
        },
        'referenced_table': {
            'proto_field': 'referenced_table',
            'is_message': True,
            'is_repeated': False,
        },
        'referenced_column_offset_list': {
            'proto_field': 'referenced_column_offset_list',
            'is_message': False,
            'is_repeated': True,
        },
        'match_mode': {
            'proto_field': 'match_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'MatchMode',
            'enum_parent_message': 'ResolvedForeignKeyEnums',
        },
        'update_action': {
            'proto_field': 'update_action',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ActionOperation',
            'enum_parent_message': 'ResolvedForeignKeyEnums',
        },
        'delete_action': {
            'proto_field': 'delete_action',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'ActionOperation',
            'enum_parent_message': 'ResolvedForeignKeyEnums',
        },
        'enforced': {
            'proto_field': 'enforced',
            'is_message': False,
            'is_repeated': False,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'referencing_column_list': {
            'proto_field': 'referencing_column_list',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedFunctionCall(ResolvedFunctionCallBase):
    """Generated model for ResolvedFunctionCallProto"""

    function_call_info: Optional['ResolvedFunctionCallInfo'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedFunctionCallProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'function_call_info': {
            'proto_field': 'function_call_info',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGrantStmt(ResolvedGrantOrRevokeStmt):
    """Generated model for ResolvedGrantStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGrantStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedGrantToAction(ResolvedAlterAction):
    """Generated model for ResolvedGrantToActionProto"""

    grantee_expr_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGrantToActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'grantee_expr_list': {
            'proto_field': 'grantee_expr_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedGraphElementScan(ResolvedGraphPathScanBase):
    """Generated model for ResolvedGraphElementScanProto"""

    filter_expr: Optional['ResolvedExpr'] = None
    label_expr: Optional['ResolvedGraphLabelExpr'] = None
    target_element_table_list: List['GraphElementTableRef'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphElementScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'filter_expr': {
            'proto_field': 'filter_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'label_expr': {
            'proto_field': 'label_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'target_element_table_list': {
            'proto_field': 'target_element_table_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedGraphLabel(ResolvedGraphLabelExpr):
    """Generated model for ResolvedGraphLabelProto"""

    label: Optional['GraphElementLabelRef'] = None
    label_name: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphLabelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'label': {
            'proto_field': 'label',
            'is_message': True,
            'is_repeated': False,
        },
        'label_name': {
            'proto_field': 'label_name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphLabelNaryExpr(ResolvedGraphLabelExpr):
    """Generated model for ResolvedGraphLabelNaryExprProto"""

    op: Optional['ResolvedGraphLabelNaryExprEnums.GraphLogicalOpType'] = None
    operand_list: List['ResolvedGraphLabelExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphLabelNaryExprProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'op': {
            'proto_field': 'op',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'GraphLogicalOpType',
            'enum_parent_message': 'ResolvedGraphLabelNaryExprEnums',
        },
        'operand_list': {
            'proto_field': 'operand_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedGraphLinearScan(ResolvedGraphScanBase):
    """Generated model for ResolvedGraphLinearScanProto"""

    scan_list: List['ResolvedScan'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphLinearScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'scan_list': {
            'proto_field': 'scan_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedGraphPathScan(ResolvedGraphPathScanBase):
    """Generated model for ResolvedGraphPathScanProto"""

    input_scan_list: List['ResolvedGraphPathScanBase'] = field(default_factory=list)
    filter_expr: Optional['ResolvedExpr'] = None
    path: Optional['ResolvedColumnHolder'] = None
    head: Optional['ResolvedColumn'] = None
    tail: Optional['ResolvedColumn'] = None
    path_hint_list: List['ResolvedOption'] = field(default_factory=list)
    quantifier: Optional['ResolvedGraphPathPatternQuantifier'] = None
    group_variable_list: List['ResolvedGraphMakeArrayVariable'] = field(default_factory=list)
    path_mode: Optional['ResolvedGraphPathMode'] = None
    search_prefix: Optional['ResolvedGraphPathSearchPrefix'] = None
    path_cost: Optional['ResolvedGraphPathCost'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphPathScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan_list': {
            'proto_field': 'input_scan_list',
            'is_message': True,
            'is_repeated': True,
        },
        'filter_expr': {
            'proto_field': 'filter_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'path': {
            'proto_field': 'path',
            'is_message': True,
            'is_repeated': False,
        },
        'head': {
            'proto_field': 'head',
            'is_message': True,
            'is_repeated': False,
        },
        'tail': {
            'proto_field': 'tail',
            'is_message': True,
            'is_repeated': False,
        },
        'path_hint_list': {
            'proto_field': 'path_hint_list',
            'is_message': True,
            'is_repeated': True,
        },
        'quantifier': {
            'proto_field': 'quantifier',
            'is_message': True,
            'is_repeated': False,
        },
        'group_variable_list': {
            'proto_field': 'group_variable_list',
            'is_message': True,
            'is_repeated': True,
        },
        'path_mode': {
            'proto_field': 'path_mode',
            'is_message': True,
            'is_repeated': False,
        },
        'search_prefix': {
            'proto_field': 'search_prefix',
            'is_message': True,
            'is_repeated': False,
        },
        'path_cost': {
            'proto_field': 'path_cost',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphScan(ResolvedGraphScanBase):
    """Generated model for ResolvedGraphScanProto"""

    input_scan_list: List['ResolvedGraphPathScan'] = field(default_factory=list)
    filter_expr: Optional['ResolvedExpr'] = None
    input_scan: Optional['ResolvedScan'] = None
    optional: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_scan_list': {
            'proto_field': 'input_scan_list',
            'is_message': True,
            'is_repeated': True,
        },
        'filter_expr': {
            'proto_field': 'filter_expr',
            'is_message': True,
            'is_repeated': False,
        },
        'input_scan': {
            'proto_field': 'input_scan',
            'is_message': True,
            'is_repeated': False,
        },
        'optional': {
            'proto_field': 'optional',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphWildCardLabel(ResolvedGraphLabelExpr):
    """Generated model for ResolvedGraphWildCardLabelProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphWildCardLabelProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedGroupingSet(ResolvedGroupingSetBase):
    """Generated model for ResolvedGroupingSetProto"""

    group_by_column_list: List['ResolvedColumnRef'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGroupingSetProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'group_by_column_list': {
            'proto_field': 'group_by_column_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedGroupingSetList(ResolvedGroupingSetBase):
    """Generated model for ResolvedGroupingSetListProto"""

    elem_list: List['ResolvedGroupingSetBase'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGroupingSetListProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'elem_list': {
            'proto_field': 'elem_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedGroupingSetProduct(ResolvedGroupingSetBase):
    """Generated model for ResolvedGroupingSetProductProto"""

    input_list: List['ResolvedGroupingSetBase'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGroupingSetProductProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'input_list': {
            'proto_field': 'input_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedMatchRecognizePatternAnchor(ResolvedMatchRecognizePatternExpr):
    """Generated model for ResolvedMatchRecognizePatternAnchorProto"""

    mode: Optional['ResolvedMatchRecognizePatternAnchorEnums.Mode'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMatchRecognizePatternAnchorProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'mode': {
            'proto_field': 'mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'Mode',
            'enum_parent_message': 'ResolvedMatchRecognizePatternAnchorEnums',
        },
    }


@dataclass
class ResolvedMatchRecognizePatternEmpty(ResolvedMatchRecognizePatternExpr):
    """Generated model for ResolvedMatchRecognizePatternEmptyProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMatchRecognizePatternEmptyProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedMatchRecognizePatternOperation(ResolvedMatchRecognizePatternExpr):
    """Generated model for ResolvedMatchRecognizePatternOperationProto"""

    op_type: Optional['ResolvedMatchRecognizePatternOperationEnums.MatchRecognizePatternOperationType'] = None
    operand_list: List['ResolvedMatchRecognizePatternExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMatchRecognizePatternOperationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'op_type': {
            'proto_field': 'op_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'MatchRecognizePatternOperationType',
            'enum_parent_message': 'ResolvedMatchRecognizePatternOperationEnums',
        },
        'operand_list': {
            'proto_field': 'operand_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedMatchRecognizePatternQuantification(ResolvedMatchRecognizePatternExpr):
    """Generated model for ResolvedMatchRecognizePatternQuantificationProto"""

    operand: Optional['ResolvedMatchRecognizePatternExpr'] = None
    lower_bound: Optional['ResolvedExpr'] = None
    upper_bound: Optional['ResolvedExpr'] = None
    is_reluctant: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMatchRecognizePatternQuantificationProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'operand': {
            'proto_field': 'operand',
            'is_message': True,
            'is_repeated': False,
        },
        'lower_bound': {
            'proto_field': 'lower_bound',
            'is_message': True,
            'is_repeated': False,
        },
        'upper_bound': {
            'proto_field': 'upper_bound',
            'is_message': True,
            'is_repeated': False,
        },
        'is_reluctant': {
            'proto_field': 'is_reluctant',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedMatchRecognizePatternVariableRef(ResolvedMatchRecognizePatternExpr):
    """Generated model for ResolvedMatchRecognizePatternVariableRefProto"""

    name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedMatchRecognizePatternVariableRefProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedNonScalarFunctionCallBase(ResolvedFunctionCallBase):
    """Generated model for ResolvedNonScalarFunctionCallBaseProto"""

    distinct: Optional[bool] = None
    null_handling_modifier: Optional['ResolvedNonScalarFunctionCallBaseEnums.NullHandlingModifier'] = None
    where_expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedNonScalarFunctionCallBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'distinct': {
            'proto_field': 'distinct',
            'is_message': False,
            'is_repeated': False,
        },
        'null_handling_modifier': {
            'proto_field': 'null_handling_modifier',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'NullHandlingModifier',
            'enum_parent_message': 'ResolvedNonScalarFunctionCallBaseEnums',
        },
        'where_expr': {
            'proto_field': 'where_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedPrimaryKey(ResolvedConstraint):
    """Generated model for ResolvedPrimaryKeyProto"""

    column_offset_list: List[int] = field(default_factory=list)
    option_list: List['ResolvedOption'] = field(default_factory=list)
    unenforced: Optional[bool] = None
    constraint_name: Optional[str] = None
    column_name_list: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedPrimaryKeyProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_offset_list': {
            'proto_field': 'column_offset_list',
            'is_message': False,
            'is_repeated': True,
        },
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
        'unenforced': {
            'proto_field': 'unenforced',
            'is_message': False,
            'is_repeated': False,
        },
        'constraint_name': {
            'proto_field': 'constraint_name',
            'is_message': False,
            'is_repeated': False,
        },
        'column_name_list': {
            'proto_field': 'column_name_list',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedRebuildAction(ResolvedAlterAction):
    """Generated model for ResolvedRebuildActionProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRebuildActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedRemoveFromRestricteeListAction(ResolvedAlterAction):
    """Generated model for ResolvedRemoveFromRestricteeListActionProto"""

    is_if_exists: Optional[bool] = None
    restrictee_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRemoveFromRestricteeListActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'restrictee_list': {
            'proto_field': 'restrictee_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedRenameColumnAction(ResolvedAlterAction):
    """Generated model for ResolvedRenameColumnActionProto"""

    is_if_exists: Optional[bool] = None
    name: Optional[str] = None
    new_name: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRenameColumnActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'is_if_exists': {
            'proto_field': 'is_if_exists',
            'is_message': False,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': False,
            'is_repeated': False,
        },
        'new_name': {
            'proto_field': 'new_name',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedRenameToAction(ResolvedAlterAction):
    """Generated model for ResolvedRenameToActionProto"""

    new_path: List[str] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRenameToActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'new_path': {
            'proto_field': 'new_path',
            'is_message': False,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedRestrictToAction(ResolvedAlterAction):
    """Generated model for ResolvedRestrictToActionProto"""

    restrictee_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRestrictToActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'restrictee_list': {
            'proto_field': 'restrictee_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedRevokeFromAction(ResolvedAlterAction):
    """Generated model for ResolvedRevokeFromActionProto"""

    revokee_expr_list: List['ResolvedExpr'] = field(default_factory=list)
    is_revoke_from_all: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRevokeFromActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'revokee_expr_list': {
            'proto_field': 'revokee_expr_list',
            'is_message': True,
            'is_repeated': True,
        },
        'is_revoke_from_all': {
            'proto_field': 'is_revoke_from_all',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedRevokeStmt(ResolvedGrantOrRevokeStmt):
    """Generated model for ResolvedRevokeStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRevokeStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedRollup(ResolvedGroupingSetBase):
    """Generated model for ResolvedRollupProto"""

    rollup_column_list: List['ResolvedGroupingSetMultiColumn'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedRollupProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'rollup_column_list': {
            'proto_field': 'rollup_column_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedSetAsAction(ResolvedAlterAction):
    """Generated model for ResolvedSetAsActionProto"""

    entity_body_json: Optional[str] = None
    entity_body_text: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSetAsActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'entity_body_json': {
            'proto_field': 'entity_body_json',
            'is_message': False,
            'is_repeated': False,
        },
        'entity_body_text': {
            'proto_field': 'entity_body_text',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedSetCollateClause(ResolvedAlterAction):
    """Generated model for ResolvedSetCollateClauseProto"""

    collation_name: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSetCollateClauseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'collation_name': {
            'proto_field': 'collation_name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedSetOptionsAction(ResolvedAlterAction):
    """Generated model for ResolvedSetOptionsActionProto"""

    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedSetOptionsActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ASTAlterApproxViewStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterApproxViewStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterApproxViewStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAlterConnectionStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterConnectionStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterConnectionStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAlterDatabaseStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterDatabaseStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterDatabaseStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAlterEntityStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterEntityStatementProto"""

    type: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterEntityStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterExternalSchemaStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterExternalSchemaStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterExternalSchemaStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAlterIndexStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterIndexStatementProto"""

    table_name: Optional['ASTPathExpression'] = None
    index_type: Optional['ASTAlterIndexStatementEnums.IndexType'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterIndexStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'table_name': {
            'proto_field': 'table_name',
            'is_message': True,
            'is_repeated': False,
        },
        'index_type': {
            'proto_field': 'index_type',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'IndexType',
            'enum_parent_message': 'ASTAlterIndexStatementEnums',
        },
    }


@dataclass
class ASTAlterMaterializedViewStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterMaterializedViewStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterMaterializedViewStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAlterModelStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterModelStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterModelStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAlterPrivilegeRestrictionStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterPrivilegeRestrictionStatementProto"""

    privileges: Optional['ASTPrivileges'] = None
    object_type: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterPrivilegeRestrictionStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'privileges': {
            'proto_field': 'privileges',
            'is_message': True,
            'is_repeated': False,
        },
        'object_type': {
            'proto_field': 'object_type',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterRowAccessPolicyStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterRowAccessPolicyStatementProto"""

    name: Optional['ASTIdentifier'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterRowAccessPolicyStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTAlterSchemaStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterSchemaStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterSchemaStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAlterSequenceStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterSequenceStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterSequenceStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAlterTableStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterTableStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterTableStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAlterViewStatement(ASTAlterStatementBase):
    """Generated model for ASTAlterViewStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAlterViewStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTBooleanLiteral(ASTPrintableLeaf):
    """Generated model for ASTBooleanLiteralProto"""

    value: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBooleanLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'value': {
            'proto_field': 'value',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTBreakStatement(ASTBreakContinueStatement):
    """Generated model for ASTBreakStatementProto"""

    keyword: Optional['ASTBreakContinueStatementEnums.BreakContinueKeyword'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBreakStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'keyword': {
            'proto_field': 'keyword',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'BreakContinueKeyword',
            'enum_parent_message': 'ASTBreakContinueStatementEnums',
        },
    }


@dataclass
class ASTBytesLiteralComponent(ASTPrintableLeaf):
    """Generated model for ASTBytesLiteralComponentProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTBytesLiteralComponentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTContinueStatement(ASTBreakContinueStatement):
    """Generated model for ASTContinueStatementProto"""

    keyword: Optional['ASTBreakContinueStatementEnums.BreakContinueKeyword'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTContinueStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'keyword': {
            'proto_field': 'keyword',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'BreakContinueKeyword',
            'enum_parent_message': 'ASTBreakContinueStatementEnums',
        },
    }


@dataclass
class ASTCreateConnectionStatement(ASTCreateStatement):
    """Generated model for ASTCreateConnectionStatementProto"""

    name: Optional['ASTPathExpression'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateConnectionStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateConstantStatement(ASTCreateStatement):
    """Generated model for ASTCreateConstantStatementProto"""

    name: Optional['ASTPathExpression'] = None
    expr: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateConstantStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateEntityStatement(ASTCreateStatement):
    """Generated model for ASTCreateEntityStatementProto"""

    type: Optional['ASTIdentifier'] = None
    name: Optional['ASTPathExpression'] = None
    options_list: Optional['ASTOptionsList'] = None
    json_body: Optional['ASTJSONLiteral'] = None
    text_body: Optional['ASTStringLiteral'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateEntityStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'type': {
            'proto_field': 'type',
            'is_message': True,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'json_body': {
            'proto_field': 'json_body',
            'is_message': True,
            'is_repeated': False,
        },
        'text_body': {
            'proto_field': 'text_body',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateFunctionStmtBase(ASTCreateStatement):
    """Generated model for ASTCreateFunctionStmtBaseProto"""

    function_declaration: Optional['ASTFunctionDeclaration'] = None
    language: Optional['ASTIdentifier'] = None
    code: Optional['ASTStringLiteral'] = None
    options_list: Optional['ASTOptionsList'] = None
    determinism_level: Optional['ASTCreateFunctionStmtBaseEnums.DeterminismLevel'] = None
    sql_security: Optional['ASTCreateStatementEnums.SqlSecurity'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateFunctionStmtBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'function_declaration': {
            'proto_field': 'function_declaration',
            'is_message': True,
            'is_repeated': False,
        },
        'language': {
            'proto_field': 'language',
            'is_message': True,
            'is_repeated': False,
        },
        'code': {
            'proto_field': 'code',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'determinism_level': {
            'proto_field': 'determinism_level',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'DeterminismLevel',
            'enum_parent_message': 'ASTCreateFunctionStmtBaseEnums',
        },
        'sql_security': {
            'proto_field': 'sql_security',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SqlSecurity',
            'enum_parent_message': 'ASTCreateStatementEnums',
        },
    }


@dataclass
class ASTCreateIndexStatement(ASTCreateStatement):
    """Generated model for ASTCreateIndexStatementProto"""

    name: Optional['ASTPathExpression'] = None
    table_name: Optional['ASTPathExpression'] = None
    optional_table_alias: Optional['ASTAlias'] = None
    optional_index_unnest_expression_list: Optional['ASTIndexUnnestExpressionList'] = None
    index_item_list: Optional['ASTIndexItemList'] = None
    optional_index_storing_expressions: Optional['ASTIndexStoringExpressionList'] = None
    optional_partition_by: Optional['ASTPartitionBy'] = None
    options_list: Optional['ASTOptionsList'] = None
    is_unique: Optional[bool] = None
    is_search: Optional[bool] = None
    spanner_interleave_clause: Optional['ASTSpannerInterleaveClause'] = None
    spanner_is_null_filtered: Optional[bool] = None
    is_vector: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateIndexStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'table_name': {
            'proto_field': 'table_name',
            'is_message': True,
            'is_repeated': False,
        },
        'optional_table_alias': {
            'proto_field': 'optional_table_alias',
            'is_message': True,
            'is_repeated': False,
        },
        'optional_index_unnest_expression_list': {
            'proto_field': 'optional_index_unnest_expression_list',
            'is_message': True,
            'is_repeated': False,
        },
        'index_item_list': {
            'proto_field': 'index_item_list',
            'is_message': True,
            'is_repeated': False,
        },
        'optional_index_storing_expressions': {
            'proto_field': 'optional_index_storing_expressions',
            'is_message': True,
            'is_repeated': False,
        },
        'optional_partition_by': {
            'proto_field': 'optional_partition_by',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'is_unique': {
            'proto_field': 'is_unique',
            'is_message': False,
            'is_repeated': False,
        },
        'is_search': {
            'proto_field': 'is_search',
            'is_message': False,
            'is_repeated': False,
        },
        'spanner_interleave_clause': {
            'proto_field': 'spanner_interleave_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'spanner_is_null_filtered': {
            'proto_field': 'spanner_is_null_filtered',
            'is_message': False,
            'is_repeated': False,
        },
        'is_vector': {
            'proto_field': 'is_vector',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateModelStatement(ASTCreateStatement):
    """Generated model for ASTCreateModelStatementProto"""

    name: Optional['ASTPathExpression'] = None
    transform_clause: Optional['ASTTransformClause'] = None
    options_list: Optional['ASTOptionsList'] = None
    query: Optional['ASTQuery'] = None
    input_output_clause: Optional['ASTInputOutputClause'] = None
    is_remote: Optional[bool] = None
    with_connection_clause: Optional['ASTWithConnectionClause'] = None
    aliased_query_list: Optional['ASTAliasedQueryList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateModelStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'transform_clause': {
            'proto_field': 'transform_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'input_output_clause': {
            'proto_field': 'input_output_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'is_remote': {
            'proto_field': 'is_remote',
            'is_message': False,
            'is_repeated': False,
        },
        'with_connection_clause': {
            'proto_field': 'with_connection_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'aliased_query_list': {
            'proto_field': 'aliased_query_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreatePrivilegeRestrictionStatement(ASTCreateStatement):
    """Generated model for ASTCreatePrivilegeRestrictionStatementProto"""

    privileges: Optional['ASTPrivileges'] = None
    object_type: Optional['ASTIdentifier'] = None
    name_path: Optional['ASTPathExpression'] = None
    restrict_to: Optional['ASTRestrictToClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreatePrivilegeRestrictionStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'privileges': {
            'proto_field': 'privileges',
            'is_message': True,
            'is_repeated': False,
        },
        'object_type': {
            'proto_field': 'object_type',
            'is_message': True,
            'is_repeated': False,
        },
        'name_path': {
            'proto_field': 'name_path',
            'is_message': True,
            'is_repeated': False,
        },
        'restrict_to': {
            'proto_field': 'restrict_to',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateProcedureStatement(ASTCreateStatement):
    """Generated model for ASTCreateProcedureStatementProto"""

    name: Optional['ASTPathExpression'] = None
    parameters: Optional['ASTFunctionParameters'] = None
    options_list: Optional['ASTOptionsList'] = None
    body: Optional['ASTScript'] = None
    with_connection_clause: Optional['ASTWithConnectionClause'] = None
    language: Optional['ASTIdentifier'] = None
    code: Optional['ASTStringLiteral'] = None
    external_security: Optional['ASTCreateStatementEnums.SqlSecurity'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateProcedureStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'parameters': {
            'proto_field': 'parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'body': {
            'proto_field': 'body',
            'is_message': True,
            'is_repeated': False,
        },
        'with_connection_clause': {
            'proto_field': 'with_connection_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'language': {
            'proto_field': 'language',
            'is_message': True,
            'is_repeated': False,
        },
        'code': {
            'proto_field': 'code',
            'is_message': True,
            'is_repeated': False,
        },
        'external_security': {
            'proto_field': 'external_security',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SqlSecurity',
            'enum_parent_message': 'ASTCreateStatementEnums',
        },
    }


@dataclass
class ASTCreatePropertyGraphStatement(ASTCreateStatement):
    """Generated model for ASTCreatePropertyGraphStatementProto"""

    name: Optional['ASTPathExpression'] = None
    node_table_list: Optional['ASTGraphElementTableList'] = None
    edge_table_list: Optional['ASTGraphElementTableList'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreatePropertyGraphStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'node_table_list': {
            'proto_field': 'node_table_list',
            'is_message': True,
            'is_repeated': False,
        },
        'edge_table_list': {
            'proto_field': 'edge_table_list',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateRowAccessPolicyStatement(ASTCreateStatement):
    """Generated model for ASTCreateRowAccessPolicyStatementProto"""

    target_path: Optional['ASTPathExpression'] = None
    grant_to: Optional['ASTGrantToClause'] = None
    filter_using: Optional['ASTFilterUsingClause'] = None
    name: Optional['ASTPathExpression'] = None
    has_access_keyword: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateRowAccessPolicyStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'target_path': {
            'proto_field': 'target_path',
            'is_message': True,
            'is_repeated': False,
        },
        'grant_to': {
            'proto_field': 'grant_to',
            'is_message': True,
            'is_repeated': False,
        },
        'filter_using': {
            'proto_field': 'filter_using',
            'is_message': True,
            'is_repeated': False,
        },
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'has_access_keyword': {
            'proto_field': 'has_access_keyword',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateSchemaStmtBase(ASTCreateStatement):
    """Generated model for ASTCreateSchemaStmtBaseProto"""

    name: Optional['ASTPathExpression'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateSchemaStmtBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateSequenceStatement(ASTCreateStatement):
    """Generated model for ASTCreateSequenceStatementProto"""

    name: Optional['ASTPathExpression'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateSequenceStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateSnapshotStatement(ASTCreateStatement):
    """Generated model for ASTCreateSnapshotStatementProto"""

    schema_object_kind: Optional['SchemaObjectKind'] = None
    name: Optional['ASTPathExpression'] = None
    clone_data_source: Optional['ASTCloneDataSource'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateSnapshotStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'schema_object_kind': {
            'proto_field': 'schema_object_kind',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SchemaObjectKind',
        },
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'clone_data_source': {
            'proto_field': 'clone_data_source',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateSnapshotTableStatement(ASTCreateStatement):
    """Generated model for ASTCreateSnapshotTableStatementProto"""

    name: Optional['ASTPathExpression'] = None
    clone_data_source: Optional['ASTCloneDataSource'] = None
    options_list: Optional['ASTOptionsList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateSnapshotTableStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'clone_data_source': {
            'proto_field': 'clone_data_source',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateTableStmtBase(ASTCreateStatement):
    """Generated model for ASTCreateTableStmtBaseProto"""

    name: Optional['ASTPathExpression'] = None
    table_element_list: Optional['ASTTableElementList'] = None
    options_list: Optional['ASTOptionsList'] = None
    like_table_name: Optional['ASTPathExpression'] = None
    collate: Optional['ASTCollate'] = None
    with_connection_clause: Optional['ASTWithConnectionClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateTableStmtBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'table_element_list': {
            'proto_field': 'table_element_list',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'like_table_name': {
            'proto_field': 'like_table_name',
            'is_message': True,
            'is_repeated': False,
        },
        'collate': {
            'proto_field': 'collate',
            'is_message': True,
            'is_repeated': False,
        },
        'with_connection_clause': {
            'proto_field': 'with_connection_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateViewStatementBase(ASTCreateStatement):
    """Generated model for ASTCreateViewStatementBaseProto"""

    name: Optional['ASTPathExpression'] = None
    column_with_options_list: Optional['ASTColumnWithOptionsList'] = None
    options_list: Optional['ASTOptionsList'] = None
    query: Optional['ASTQuery'] = None
    sql_security: Optional['ASTCreateStatementEnums.SqlSecurity'] = None
    recursive: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateViewStatementBaseProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'name': {
            'proto_field': 'name',
            'is_message': True,
            'is_repeated': False,
        },
        'column_with_options_list': {
            'proto_field': 'column_with_options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'options_list': {
            'proto_field': 'options_list',
            'is_message': True,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'sql_security': {
            'proto_field': 'sql_security',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'SqlSecurity',
            'enum_parent_message': 'ASTCreateStatementEnums',
        },
        'recursive': {
            'proto_field': 'recursive',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTDropSearchIndexStatement(ASTDropIndexStatement):
    """Generated model for ASTDropSearchIndexStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropSearchIndexStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTDropVectorIndexStatement(ASTDropIndexStatement):
    """Generated model for ASTDropVectorIndexStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTDropVectorIndexStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTFloatLiteral(ASTPrintableLeaf):
    """Generated model for ASTFloatLiteralProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTFloatLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTForInStatement(ASTLoopStatement):
    """Generated model for ASTForInStatementProto"""

    variable: Optional['ASTIdentifier'] = None
    query: Optional['ASTQuery'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTForInStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'variable': {
            'proto_field': 'variable',
            'is_message': True,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTIndexAllColumns(ASTPrintableLeaf):
    """Generated model for ASTIndexAllColumnsProto"""

    column_options: Optional['ASTIndexItemList'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIndexAllColumnsProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column_options': {
            'proto_field': 'column_options',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTIntLiteral(ASTPrintableLeaf):
    """Generated model for ASTIntLiteralProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTIntLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTMacroBody(ASTPrintableLeaf):
    """Generated model for ASTMacroBodyProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTMacroBodyProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTMaxLiteral(ASTPrintableLeaf):
    """Generated model for ASTMaxLiteralProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTMaxLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTNullLiteral(ASTPrintableLeaf):
    """Generated model for ASTNullLiteralProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTNullLiteralProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTRepeatStatement(ASTLoopStatement):
    """Generated model for ASTRepeatStatementProto"""

    until_clause: Optional['ASTUntilClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTRepeatStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'until_clause': {
            'proto_field': 'until_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTStar(ASTPrintableLeaf):
    """Generated model for ASTStarProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStarProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTStringLiteralComponent(ASTPrintableLeaf):
    """Generated model for ASTStringLiteralComponentProto"""

    string_value: Optional[str] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTStringLiteralComponentProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'string_value': {
            'proto_field': 'string_value',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTWhileStatement(ASTLoopStatement):
    """Generated model for ASTWhileStatementProto"""

    condition: Optional['ASTExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTWhileStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'condition': {
            'proto_field': 'condition',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAggregateFunctionCall(ResolvedNonScalarFunctionCallBase):
    """Generated model for ResolvedAggregateFunctionCallProto"""

    having_modifier: Optional['ResolvedAggregateHavingModifier'] = None
    order_by_item_list: List['ResolvedOrderByItem'] = field(default_factory=list)
    limit: Optional['ResolvedExpr'] = None
    function_call_info: Optional['ResolvedFunctionCallInfo'] = None
    group_by_list: List['ResolvedComputedColumn'] = field(default_factory=list)
    group_by_hint_list: List['ResolvedOption'] = field(default_factory=list)
    group_by_aggregate_list: List['ResolvedComputedColumnBase'] = field(default_factory=list)
    having_expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAggregateFunctionCallProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'having_modifier': {
            'proto_field': 'having_modifier',
            'is_message': True,
            'is_repeated': False,
        },
        'order_by_item_list': {
            'proto_field': 'order_by_item_list',
            'is_message': True,
            'is_repeated': True,
        },
        'limit': {
            'proto_field': 'limit',
            'is_message': True,
            'is_repeated': False,
        },
        'function_call_info': {
            'proto_field': 'function_call_info',
            'is_message': True,
            'is_repeated': False,
        },
        'group_by_list': {
            'proto_field': 'group_by_list',
            'is_message': True,
            'is_repeated': True,
        },
        'group_by_hint_list': {
            'proto_field': 'group_by_hint_list',
            'is_message': True,
            'is_repeated': True,
        },
        'group_by_aggregate_list': {
            'proto_field': 'group_by_aggregate_list',
            'is_message': True,
            'is_repeated': True,
        },
        'having_expr': {
            'proto_field': 'having_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAlterColumnDropDefaultAction(ResolvedAlterColumnAction):
    """Generated model for ResolvedAlterColumnDropDefaultActionProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterColumnDropDefaultActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterColumnDropGeneratedAction(ResolvedAlterColumnAction):
    """Generated model for ResolvedAlterColumnDropGeneratedActionProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterColumnDropGeneratedActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterColumnDropNotNullAction(ResolvedAlterColumnAction):
    """Generated model for ResolvedAlterColumnDropNotNullActionProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterColumnDropNotNullActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedAlterColumnOptionsAction(ResolvedAlterColumnAction):
    """Generated model for ResolvedAlterColumnOptionsActionProto"""

    option_list: List['ResolvedOption'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterColumnOptionsActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'option_list': {
            'proto_field': 'option_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedAlterColumnSetDataTypeAction(ResolvedAlterColumnAction):
    """Generated model for ResolvedAlterColumnSetDataTypeActionProto"""

    updated_type: Optional['Type'] = None
    updated_type_parameters: Optional['TypeParameters'] = None
    updated_annotations: Optional['ResolvedColumnAnnotations'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterColumnSetDataTypeActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'updated_type': {
            'proto_field': 'updated_type',
            'is_message': True,
            'is_repeated': False,
        },
        'updated_type_parameters': {
            'proto_field': 'updated_type_parameters',
            'is_message': True,
            'is_repeated': False,
        },
        'updated_annotations': {
            'proto_field': 'updated_annotations',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAlterColumnSetDefaultAction(ResolvedAlterColumnAction):
    """Generated model for ResolvedAlterColumnSetDefaultActionProto"""

    default_value: Optional['ResolvedColumnDefaultValue'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterColumnSetDefaultActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'default_value': {
            'proto_field': 'default_value',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAlterColumnSetGeneratedAction(ResolvedAlterColumnAction):
    """Generated model for ResolvedAlterColumnSetGeneratedActionProto"""

    generated_column_info: Optional['ResolvedGeneratedColumnInfo'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAlterColumnSetGeneratedActionProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'generated_column_info': {
            'proto_field': 'generated_column_info',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedAnalyticFunctionCall(ResolvedNonScalarFunctionCallBase):
    """Generated model for ResolvedAnalyticFunctionCallProto"""

    window_frame: Optional['ResolvedWindowFrame'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedAnalyticFunctionCallProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'window_frame': {
            'proto_field': 'window_frame',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedComputedColumn(ResolvedComputedColumnImpl):
    """Generated model for ResolvedComputedColumnProto"""

    column: Optional['ResolvedColumn'] = None
    expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedComputedColumnProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': False,
        },
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCreateApproxViewStmt(ResolvedCreateViewBase):
    """Generated model for ResolvedCreateApproxViewStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateApproxViewStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedCreateExternalSchemaStmt(ResolvedCreateSchemaStmtBase):
    """Generated model for ResolvedCreateExternalSchemaStmtProto"""

    connection: Optional['ResolvedConnection'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateExternalSchemaStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'connection': {
            'proto_field': 'connection',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCreateExternalTableStmt(ResolvedCreateTableStmtBase):
    """Generated model for ResolvedCreateExternalTableStmtProto"""

    with_partition_columns: Optional['ResolvedWithPartitionColumns'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateExternalTableStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'with_partition_columns': {
            'proto_field': 'with_partition_columns',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCreateMaterializedViewStmt(ResolvedCreateViewBase):
    """Generated model for ResolvedCreateMaterializedViewStmtProto"""

    partition_by_list: List['ResolvedExpr'] = field(default_factory=list)
    cluster_by_list: List['ResolvedExpr'] = field(default_factory=list)
    replica_source: Optional['ResolvedScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateMaterializedViewStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'partition_by_list': {
            'proto_field': 'partition_by_list',
            'is_message': True,
            'is_repeated': True,
        },
        'cluster_by_list': {
            'proto_field': 'cluster_by_list',
            'is_message': True,
            'is_repeated': True,
        },
        'replica_source': {
            'proto_field': 'replica_source',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCreateSchemaStmt(ResolvedCreateSchemaStmtBase):
    """Generated model for ResolvedCreateSchemaStmtProto"""

    collation_name: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateSchemaStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'collation_name': {
            'proto_field': 'collation_name',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCreateTableAsSelectStmt(ResolvedCreateTableStmtBase):
    """Generated model for ResolvedCreateTableAsSelectStmtProto"""

    partition_by_list: List['ResolvedExpr'] = field(default_factory=list)
    cluster_by_list: List['ResolvedExpr'] = field(default_factory=list)
    output_column_list: List['ResolvedOutputColumn'] = field(default_factory=list)
    query: Optional['ResolvedScan'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateTableAsSelectStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'partition_by_list': {
            'proto_field': 'partition_by_list',
            'is_message': True,
            'is_repeated': True,
        },
        'cluster_by_list': {
            'proto_field': 'cluster_by_list',
            'is_message': True,
            'is_repeated': True,
        },
        'output_column_list': {
            'proto_field': 'output_column_list',
            'is_message': True,
            'is_repeated': True,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedCreateTableStmt(ResolvedCreateTableStmtBase):
    """Generated model for ResolvedCreateTableStmtProto"""

    clone_from: Optional['ResolvedScan'] = None
    copy_from: Optional['ResolvedScan'] = None
    partition_by_list: List['ResolvedExpr'] = field(default_factory=list)
    cluster_by_list: List['ResolvedExpr'] = field(default_factory=list)

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateTableStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'clone_from': {
            'proto_field': 'clone_from',
            'is_message': True,
            'is_repeated': False,
        },
        'copy_from': {
            'proto_field': 'copy_from',
            'is_message': True,
            'is_repeated': False,
        },
        'partition_by_list': {
            'proto_field': 'partition_by_list',
            'is_message': True,
            'is_repeated': True,
        },
        'cluster_by_list': {
            'proto_field': 'cluster_by_list',
            'is_message': True,
            'is_repeated': True,
        },
    }


@dataclass
class ResolvedCreateViewStmt(ResolvedCreateViewBase):
    """Generated model for ResolvedCreateViewStmtProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedCreateViewStmtProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ResolvedDeferredComputedColumn(ResolvedComputedColumnImpl):
    """Generated model for ResolvedDeferredComputedColumnProto"""

    column: Optional['ResolvedColumn'] = None
    expr: Optional['ResolvedExpr'] = None
    side_effect_column: Optional['ResolvedColumn'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedDeferredComputedColumnProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'column': {
            'proto_field': 'column',
            'is_message': True,
            'is_repeated': False,
        },
        'expr': {
            'proto_field': 'expr',
            'is_message': True,
            'is_repeated': False,
        },
        'side_effect_column': {
            'proto_field': 'side_effect_column',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphEdgeScan(ResolvedGraphElementScan):
    """Generated model for ResolvedGraphEdgeScanProto"""

    orientation: Optional['ResolvedGraphEdgeScanEnums.EdgeOrientation'] = None
    lhs_hint_list: List['ResolvedOption'] = field(default_factory=list)
    rhs_hint_list: List['ResolvedOption'] = field(default_factory=list)
    cost_expr: Optional['ResolvedExpr'] = None

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphEdgeScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'orientation': {
            'proto_field': 'orientation',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'EdgeOrientation',
            'enum_parent_message': 'ResolvedGraphEdgeScanEnums',
        },
        'lhs_hint_list': {
            'proto_field': 'lhs_hint_list',
            'is_message': True,
            'is_repeated': True,
        },
        'rhs_hint_list': {
            'proto_field': 'rhs_hint_list',
            'is_message': True,
            'is_repeated': True,
        },
        'cost_expr': {
            'proto_field': 'cost_expr',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ResolvedGraphNodeScan(ResolvedGraphElementScan):
    """Generated model for ResolvedGraphNodeScanProto"""

    _PROTO_CLASS: ClassVar[type] = resolved_ast_resolved_ast_pb2.ResolvedGraphNodeScanProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTAuxLoadDataStatement(ASTCreateTableStmtBase):
    """Generated model for ASTAuxLoadDataStatementProto"""

    insertion_mode: Optional['ASTAuxLoadDataStatementEnums.InsertionMode'] = None
    partition_by: Optional['ASTPartitionBy'] = None
    cluster_by: Optional['ASTClusterBy'] = None
    from_files: Optional['ASTAuxLoadDataFromFilesOptionsList'] = None
    with_partition_columns_clause: Optional['ASTWithPartitionColumnsClause'] = None
    load_data_partitions_clause: Optional['ASTAuxLoadDataPartitionsClause'] = None
    is_temp_table: Optional[bool] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTAuxLoadDataStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'insertion_mode': {
            'proto_field': 'insertion_mode',
            'is_message': False,
            'is_repeated': False,
            'is_enum': True,
            'enum_type_name': 'InsertionMode',
            'enum_parent_message': 'ASTAuxLoadDataStatementEnums',
        },
        'partition_by': {
            'proto_field': 'partition_by',
            'is_message': True,
            'is_repeated': False,
        },
        'cluster_by': {
            'proto_field': 'cluster_by',
            'is_message': True,
            'is_repeated': False,
        },
        'from_files': {
            'proto_field': 'from_files',
            'is_message': True,
            'is_repeated': False,
        },
        'with_partition_columns_clause': {
            'proto_field': 'with_partition_columns_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'load_data_partitions_clause': {
            'proto_field': 'load_data_partitions_clause',
            'is_message': True,
            'is_repeated': False,
        },
        'is_temp_table': {
            'proto_field': 'is_temp_table',
            'is_message': False,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateApproxViewStatement(ASTCreateViewStatementBase):
    """Generated model for ASTCreateApproxViewStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateApproxViewStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


@dataclass
class ASTCreateExternalSchemaStatement(ASTCreateSchemaStmtBase):
    """Generated model for ASTCreateExternalSchemaStatementProto"""

    with_connection_clause: Optional['ASTWithConnectionClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateExternalSchemaStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'with_connection_clause': {
            'proto_field': 'with_connection_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateExternalTableStatement(ASTCreateTableStmtBase):
    """Generated model for ASTCreateExternalTableStatementProto"""

    with_partition_columns_clause: Optional['ASTWithPartitionColumnsClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateExternalTableStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'with_partition_columns_clause': {
            'proto_field': 'with_partition_columns_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateFunctionStatement(ASTCreateFunctionStmtBase):
    """Generated model for ASTCreateFunctionStatementProto"""

    return_type: Optional['ASTType'] = None
    sql_function_body: Optional['ASTSqlFunctionBody'] = None
    is_aggregate: Optional[bool] = None
    is_remote: Optional[bool] = None
    with_connection_clause: Optional['ASTWithConnectionClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateFunctionStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'return_type': {
            'proto_field': 'return_type',
            'is_message': True,
            'is_repeated': False,
        },
        'sql_function_body': {
            'proto_field': 'sql_function_body',
            'is_message': True,
            'is_repeated': False,
        },
        'is_aggregate': {
            'proto_field': 'is_aggregate',
            'is_message': False,
            'is_repeated': False,
        },
        'is_remote': {
            'proto_field': 'is_remote',
            'is_message': False,
            'is_repeated': False,
        },
        'with_connection_clause': {
            'proto_field': 'with_connection_clause',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateMaterializedViewStatement(ASTCreateViewStatementBase):
    """Generated model for ASTCreateMaterializedViewStatementProto"""

    partition_by: Optional['ASTPartitionBy'] = None
    cluster_by: Optional['ASTClusterBy'] = None
    replica_source: Optional['ASTPathExpression'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateMaterializedViewStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'partition_by': {
            'proto_field': 'partition_by',
            'is_message': True,
            'is_repeated': False,
        },
        'cluster_by': {
            'proto_field': 'cluster_by',
            'is_message': True,
            'is_repeated': False,
        },
        'replica_source': {
            'proto_field': 'replica_source',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateSchemaStatement(ASTCreateSchemaStmtBase):
    """Generated model for ASTCreateSchemaStatementProto"""

    collate: Optional['ASTCollate'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateSchemaStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'collate': {
            'proto_field': 'collate',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateTableFunctionStatement(ASTCreateFunctionStmtBase):
    """Generated model for ASTCreateTableFunctionStatementProto"""

    return_tvf_schema: Optional['ASTTVFSchema'] = None
    query: Optional['ASTQuery'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateTableFunctionStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'return_tvf_schema': {
            'proto_field': 'return_tvf_schema',
            'is_message': True,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateTableStatement(ASTCreateTableStmtBase):
    """Generated model for ASTCreateTableStatementProto"""

    clone_data_source: Optional['ASTCloneDataSource'] = None
    copy_data_source: Optional['ASTCopyDataSource'] = None
    partition_by: Optional['ASTPartitionBy'] = None
    cluster_by: Optional['ASTClusterBy'] = None
    query: Optional['ASTQuery'] = None
    spanner_options: Optional['ASTSpannerTableOptions'] = None
    ttl: Optional['ASTTtlClause'] = None

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateTableStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {
        'clone_data_source': {
            'proto_field': 'clone_data_source',
            'is_message': True,
            'is_repeated': False,
        },
        'copy_data_source': {
            'proto_field': 'copy_data_source',
            'is_message': True,
            'is_repeated': False,
        },
        'partition_by': {
            'proto_field': 'partition_by',
            'is_message': True,
            'is_repeated': False,
        },
        'cluster_by': {
            'proto_field': 'cluster_by',
            'is_message': True,
            'is_repeated': False,
        },
        'query': {
            'proto_field': 'query',
            'is_message': True,
            'is_repeated': False,
        },
        'spanner_options': {
            'proto_field': 'spanner_options',
            'is_message': True,
            'is_repeated': False,
        },
        'ttl': {
            'proto_field': 'ttl',
            'is_message': True,
            'is_repeated': False,
        },
    }


@dataclass
class ASTCreateViewStatement(ASTCreateViewStatementBase):
    """Generated model for ASTCreateViewStatementProto"""

    _PROTO_CLASS: ClassVar[type] = parser_parse_tree_pb2.ASTCreateViewStatementProto
    _PROTO_FIELD_MAP: ClassVar[Dict[str, Dict[str, Any]]] = {}


# Export all generated types
__all__ = [
    'DateTimestampPart',
    'ErrorMessageMode',
    'ErrorMessageStability',
    'FunctionSignatureId',
    'KnownErrorMode',
    'LanguageFeature',
    'LanguageVersion',
    'NameResolutionMode',
    'NormalizeMode',
    'ParameterMode',
    'ParseLocationRecordType',
    'ProductMode',
    'ResolvedASTRewrite',
    'ResolvedNodeKind',
    'RoundingMode',
    'SchemaObjectKind',
    'SignatureArgumentKind',
    'StatementContext',
    'TableType',
    'TypeKind',
    'ASTAfterMatchSkipClauseEnums',
    'ASTAlterIndexStatementEnums',
    'ASTAnySomeAllOpEnums',
    'ASTAuxLoadDataStatementEnums',
    'ASTBinaryExpressionEnums',
    'ASTBracedConstructorLhsEnums',
    'ASTBreakContinueStatementEnums',
    'ASTColumnPositionEnums',
    'ASTCreateFunctionStmtBaseEnums',
    'ASTCreateStatementEnums',
    'ASTDropStatementEnums',
    'ASTExpressionSubqueryEnums',
    'ASTFilterFieldsArgEnums',
    'ASTForeignKeyActionsEnums',
    'ASTForeignKeyReferenceEnums',
    'ASTFunctionCallEnums',
    'ASTFunctionParameterEnums',
    'ASTGeneratedColumnInfoEnums',
    'ASTGraphEdgePatternEnums',
    'ASTGraphLabelOperationEnums',
    'ASTGraphNodeTableReferenceEnums',
    'ASTGraphPathModeEnums',
    'ASTGraphPathSearchPrefixEnums',
    'ASTHavingModifierEnums',
    'ASTImportStatementEnums',
    'ASTInsertStatementEnums',
    'ASTJoinEnums',
    'ASTLockModeEnums',
    'ASTMergeActionEnums',
    'ASTMergeWhenClauseEnums',
    'ASTNode',
    'ASTOnConflictClauseEnums',
    'ASTOptionsEntryEnums',
    'ASTOrderingExpressionEnums',
    'ASTRowPatternAnchorEnums',
    'ASTRowPatternOperationEnums',
    'ASTSampleSizeEnums',
    'ASTSelectAsEnums',
    'ASTSetOperationEnums',
    'ASTSpannerInterleaveClauseEnums',
    'ASTSymbolQuantifierEnums',
    'ASTTemplatedParameterTypeEnums',
    'ASTTransactionReadWriteModeEnums',
    'ASTUnaryExpressionEnums',
    'ASTUnpivotClauseEnums',
    'ASTWindowFrameEnums',
    'ASTWindowFrameExprEnums',
    'AllowedHintsAndOptions',
    'AnalyzeRequest',
    'AnalyzeResponse',
    'AnalyzerLogEntry',
    'AnalyzerOptions',
    'AnalyzerOptionsRequest',
    'Annotation',
    'AnnotationMap',
    'AnonOutputValue',
    'AnonOutputValues',
    'AnonOutputWithReport',
    'AnyASTAlterAction',
    'AnyASTAlterStatementBase',
    'AnyASTBreakContinueStatement',
    'AnyASTColumnAttribute',
    'AnyASTColumnSchema',
    'AnyASTCreateFunctionStmtBase',
    'AnyASTCreateSchemaStmtBase',
    'AnyASTCreateStatement',
    'AnyASTCreateTableStmtBase',
    'AnyASTCreateViewStatementBase',
    'AnyASTDdlStatement',
    'AnyASTDropIndexStatement',
    'AnyASTElementTypeColumnSchema',
    'AnyASTExpression',
    'AnyASTGeneralizedPathExpression',
    'AnyASTGqlCallBase',
    'AnyASTGqlOperator',
    'AnyASTGraphElementPattern',
    'AnyASTGraphLabelExpression',
    'AnyASTGraphPathBase',
    'AnyASTLeaf',
    'AnyASTLoopStatement',
    'AnyASTNode',
    'AnyASTParameterExprBase',
    'AnyASTPipeOperator',
    'AnyASTPostfixTableOperator',
    'AnyASTPrintableLeaf',
    'AnyASTQuantifier',
    'AnyASTQueryExpression',
    'AnyASTRowPatternExpression',
    'AnyASTScriptStatement',
    'AnyASTStatement',
    'AnyASTTableConstraint',
    'AnyASTTableDataSource',
    'AnyASTTableElement',
    'AnyASTTableExpression',
    'AnyASTTransactionMode',
    'AnyASTType',
    'AnyResolvedAggregateScanBase',
    'AnyResolvedAlterAction',
    'AnyResolvedAlterColumnAction',
    'AnyResolvedAlterObjectStmt',
    'AnyResolvedArgument',
    'AnyResolvedComputedColumnBase',
    'AnyResolvedComputedColumnImpl',
    'AnyResolvedConstraint',
    'AnyResolvedCreateSchemaStmtBase',
    'AnyResolvedCreateStatement',
    'AnyResolvedCreateTableStmtBase',
    'AnyResolvedCreateViewBase',
    'AnyResolvedExpr',
    'AnyResolvedFunctionCallBase',
    'AnyResolvedGrantOrRevokeStmt',
    'AnyResolvedGraphElementScan',
    'AnyResolvedGraphLabelExpr',
    'AnyResolvedGraphPathScanBase',
    'AnyResolvedGraphScanBase',
    'AnyResolvedGroupingSetBase',
    'AnyResolvedMatchRecognizePatternExpr',
    'AnyResolvedNode',
    'AnyResolvedNonScalarFunctionCallBase',
    'AnyResolvedScan',
    'AnyResolvedStatement',
    'ArgumentTypeLambda',
    'ArrayFindEnums',
    'ArrayType',
    'ArrayZipEnums',
    'BitwiseAggEnums',
    'BoundingReport',
    'BuildSqlRequest',
    'BuildSqlResponse',
    'Collation',
    'Column',
    'ColumnRef',
    'CompiledPattern',
    'ComplianceTestCaseLabels',
    'ComplianceTestsLabels',
    'ConnectionRef',
    'ConstantRef',
    'ConstnessLevel',
    'DeprecatedEncoding',
    'DeprecationWarning',
    'DescriptorPoolIdList',
    'DescriptorPoolList',
    'DifferentialPrivacyBoundingReport',
    'DifferentialPrivacyEnums',
    'DifferentialPrivacyOutputValue',
    'DifferentialPrivacyOutputValues',
    'DifferentialPrivacyOutputWithReport',
    'DifferentiallyPrivateCountDistinctBoundingReport',
    'Edits',
    'EnabledRewrite',
    'EnumType',
    'ErrorFixSuggestions',
    'ErrorLocation',
    'ErrorMessageModeForPayload',
    'ErrorSource',
    'EvaluateModifyBatchRequest',
    'EvaluateModifyBatchResponse',
    'EvaluateModifyRequest',
    'EvaluateModifyResponse',
    'EvaluateQueryBatchRequest',
    'EvaluateQueryBatchResponse',
    'EvaluateQueryRequest',
    'EvaluateQueryResponse',
    'EvaluateRequest',
    'EvaluateRequestBatch',
    'EvaluateResponse',
    'EvaluateResponseBatch',
    'EvaluatorTableIterator',
    'ExecutionStats',
    'ExpressionAttribute',
    'ExtendedTypeParameters',
    'ExtractTableNamesFromNextStatementRequest',
    'ExtractTableNamesFromNextStatementResponse',
    'ExtractTableNamesFromStatementRequest',
    'ExtractTableNamesFromStatementResponse',
    'FeatureLabelDictionary',
    'FieldDescriptorRef',
    'FieldFormat',
    'Fix',
    'FixRange',
    'FormatSqlRequest',
    'FormatSqlResponse',
    'FormatterOptions',
    'FormatterRange',
    'FreestandingDeprecationWarning',
    'Function',
    'FunctionArgumentType',
    'FunctionArgumentTypeOptions',
    'FunctionEnums',
    'FunctionOptions',
    'FunctionRef',
    'FunctionSignature',
    'FunctionSignatureOptions',
    'FunctionSignatureRewriteOptions',
    'GetBuiltinFunctionsResponse',
    'GraphElementLabel',
    'GraphElementLabelRef',
    'GraphElementTable',
    'GraphElementTableRef',
    'GraphElementType',
    'GraphNodeTableReference',
    'GraphPathType',
    'GraphPropertyDeclaration',
    'GraphPropertyDeclarationRef',
    'GraphPropertyDefinition',
    'GroupingSetRewriteOptions',
    'InternalEdits',
    'InternalErrorFixSuggestions',
    'InternalErrorLocation',
    'InternalFix',
    'InternalFixRange',
    'InternalTextEdit',
    'KnownErrorEntry',
    'KnownErrorFile',
    'LanguageFeatureOptions',
    'LanguageOptions',
    'LanguageOptionsRequest',
    'MapType',
    'MatchPartitionResult',
    'MatchResult',
    'MeasureType',
    'ModelRef',
    'ModuleOptions',
    'NoiseConfidenceInterval',
    'NumericTypeParameters',
    'OneofDescriptorRef',
    'OpaqueEnumTypeOptions',
    'OpaqueEnumValueOptions',
    'Parameter',
    'ParseLocationRange',
    'ParseRequest',
    'ParseResponse',
    'ParseResumeLocation',
    'ParserErrorContext',
    'PerModuleOptions',
    'PlaceholderDescriptor',
    'PrepareModifyRequest',
    'PrepareModifyResponse',
    'PrepareQueryRequest',
    'PrepareQueryResponse',
    'PrepareRequest',
    'PrepareResponse',
    'PreparedModifyState',
    'PreparedQueryState',
    'PreparedState',
    'Procedure',
    'ProcedureExtension',
    'ProcedureRef',
    'PropertyGraph',
    'PropertyGraphRef',
    'ProtoType',
    'RangeSessionizeEnums',
    'RangeType',
    'RankTypeEnums',
    'RegisterCatalogRequest',
    'RegisterResponse',
    'ResolvedASTRewriteOptions',
    'ResolvedAggregateHavingModifierEnums',
    'ResolvedAlterIndexStmtEnums',
    'ResolvedArgumentDefEnums',
    'ResolvedAuxLoadDataStmtEnums',
    'ResolvedBeginStmtEnums',
    'ResolvedCollation',
    'ResolvedColumn',
    'ResolvedCreateStatementEnums',
    'ResolvedDropIndexStmtEnums',
    'ResolvedDropStmtEnums',
    'ResolvedForeignKeyEnums',
    'ResolvedFunctionCallBaseEnums',
    'ResolvedFunctionCallInfo',
    'ResolvedGeneratedColumnInfoEnums',
    'ResolvedGraphEdgeScanEnums',
    'ResolvedGraphLabelNaryExprEnums',
    'ResolvedGraphPathModeEnums',
    'ResolvedGraphPathSearchPrefixEnums',
    'ResolvedImportStmtEnums',
    'ResolvedInsertStmtEnums',
    'ResolvedJoinScanEnums',
    'ResolvedLockModeEnums',
    'ResolvedMatchRecognizePatternAnchorEnums',
    'ResolvedMatchRecognizePatternOperationEnums',
    'ResolvedMatchRecognizeScanEnums',
    'ResolvedMergeWhenEnums',
    'ResolvedNode',
    'ResolvedNonScalarFunctionCallBaseEnums',
    'ResolvedOnConflictClauseEnums',
    'ResolvedOptionEnums',
    'ResolvedOrderByItemEnums',
    'ResolvedRecursiveScanEnums',
    'ResolvedSampleScanEnums',
    'ResolvedSetOperationScanEnums',
    'ResolvedStatementEnums',
    'ResolvedSubqueryExprEnums',
    'ResolvedUpdateFieldItemEnums',
    'ResolvedWindowFrameEnums',
    'ResolvedWindowFrameExprEnums',
    'ResultTable',
    'RewriteOptions',
    'ScriptException',
    'ScriptExecutorState',
    'SequenceRef',
    'SimpleAnonymizationInfo',
    'SimpleCatalog',
    'SimpleColumn',
    'SimpleConnection',
    'SimpleConstant',
    'SimpleGraphElementDynamicLabel',
    'SimpleGraphElementDynamicProperties',
    'SimpleGraphElementLabel',
    'SimpleGraphElementTable',
    'SimpleGraphNodeTableReference',
    'SimpleGraphPropertyDeclaration',
    'SimpleGraphPropertyDefinition',
    'SimpleModel',
    'SimplePropertyGraph',
    'SimpleSequence',
    'SimpleTable',
    'SimpleTokenList',
    'SimpleValue',
    'StateMachine',
    'StringTypeParameters',
    'StructField',
    'StructType',
    'TVFArgument',
    'TVFConnection',
    'TVFDescriptor',
    'TVFGraph',
    'TVFModel',
    'TVFRelation',
    'TVFRelationColumn',
    'TVFSignature',
    'TVFSignatureOptions',
    'TableAlias',
    'TableContent',
    'TableData',
    'TableFromProtoRequest',
    'TableRef',
    'TableValuedFunction',
    'TableValuedFunctionOptions',
    'TableValuedFunctionRef',
    'TextEdit',
    'TextToken',
    'TimestampTypeParameters',
    'Token',
    'Type',
    'TypeModifiers',
    'TypeParameters',
    'UnprepareModifyRequest',
    'UnprepareQueryRequest',
    'UnprepareRequest',
    'UnregisterRequest',
    'UnsupportedFieldsEnum',
    'Value',
    'ValueWithType',
    'Variable',
    'WireFormatAnnotationEmptyMessage',
    'ZetaSQLBuiltinFunctionOptions',
    'ASTAfterMatchSkipClause',
    'ASTAlias',
    'ASTAliasedQuery',
    'ASTAliasedQueryList',
    'ASTAliasedQueryModifiers',
    'ASTAlterAction',
    'ASTAlterActionList',
    'ASTAnySomeAllOp',
    'ASTAssertRowsModified',
    'ASTAuxLoadDataFromFilesOptionsList',
    'ASTAuxLoadDataPartitionsClause',
    'ASTBracedConstructorField',
    'ASTBracedConstructorFieldValue',
    'ASTChainedBaseExpr',
    'ASTClampedBetweenModifier',
    'ASTCloneDataSourceList',
    'ASTClusterBy',
    'ASTCollate',
    'ASTColumnAttribute',
    'ASTColumnAttributeList',
    'ASTColumnList',
    'ASTColumnPosition',
    'ASTColumnSchema',
    'ASTColumnWithOptions',
    'ASTColumnWithOptionsList',
    'ASTConnectionClause',
    'ASTCube',
    'ASTDescriptor',
    'ASTDescriptorColumn',
    'ASTDescriptorColumnList',
    'ASTElseifClause',
    'ASTElseifClauseList',
    'ASTExceptionHandler',
    'ASTExceptionHandlerList',
    'ASTExecuteIntoClause',
    'ASTExecuteUsingArgument',
    'ASTExecuteUsingClause',
    'ASTExpression',
    'ASTExpressionWithOptAlias',
    'ASTFilterFieldsArg',
    'ASTForSystemTime',
    'ASTForeignKeyActions',
    'ASTForeignKeyReference',
    'ASTFormatClause',
    'ASTFromClause',
    'ASTFunctionDeclaration',
    'ASTFunctionParameter',
    'ASTFunctionParameters',
    'ASTFunctionTypeArgList',
    'ASTGeneratedColumnInfo',
    'ASTGqlLetVariableDefinition',
    'ASTGqlLetVariableDefinitionList',
    'ASTGqlOperator',
    'ASTGqlPage',
    'ASTGqlPageLimit',
    'ASTGqlPageOffset',
    'ASTGranteeList',
    'ASTGraphDerivedProperty',
    'ASTGraphDerivedPropertyList',
    'ASTGraphDynamicLabel',
    'ASTGraphDynamicProperties',
    'ASTGraphElementLabelAndProperties',
    'ASTGraphElementLabelAndPropertiesList',
    'ASTGraphElementPatternFiller',
    'ASTGraphElementTable',
    'ASTGraphElementTableList',
    'ASTGraphLabelExpression',
    'ASTGraphLabelFilter',
    'ASTGraphLhsHint',
    'ASTGraphNodeTableReference',
    'ASTGraphPathBase',
    'ASTGraphPathMode',
    'ASTGraphPathSearchPrefix',
    'ASTGraphPathSearchPrefixCount',
    'ASTGraphPattern',
    'ASTGraphProperties',
    'ASTGraphPropertyNameAndValue',
    'ASTGraphPropertySpecification',
    'ASTGraphRhsHint',
    'ASTGroupBy',
    'ASTGroupByAll',
    'ASTGroupingItem',
    'ASTGroupingItemOrder',
    'ASTGroupingSet',
    'ASTGroupingSetList',
    'ASTHaving',
    'ASTHavingModifier',
    'ASTHint',
    'ASTHintEntry',
    'ASTIdentifierList',
    'ASTIdentityColumnIncrementBy',
    'ASTIdentityColumnInfo',
    'ASTIdentityColumnMaxValue',
    'ASTIdentityColumnMinValue',
    'ASTIdentityColumnStartWith',
    'ASTInList',
    'ASTIndexItemList',
    'ASTIndexStoringExpressionList',
    'ASTIndexUnnestExpressionList',
    'ASTInputOutputClause',
    'ASTInsertValuesRow',
    'ASTInsertValuesRowList',
    'ASTIntoAlias',
    'ASTLabel',
    'ASTLimit',
    'ASTLimitAll',
    'ASTLimitOffset',
    'ASTLocation',
    'ASTLockMode',
    'ASTMergeAction',
    'ASTMergeWhenClause',
    'ASTMergeWhenClauseList',
    'ASTModelClause',
    'ASTNewConstructorArg',
    'ASTNullOrder',
    'ASTOnClause',
    'ASTOnConflictClause',
    'ASTOnOrUsingClauseList',
    'ASTOptionsEntry',
    'ASTOptionsList',
    'ASTOrderBy',
    'ASTOrderingExpression',
    'ASTPartitionBy',
    'ASTPathExpressionList',
    'ASTPipeOperator',
    'ASTPipeSetItem',
    'ASTPivotExpression',
    'ASTPivotExpressionList',
    'ASTPivotValue',
    'ASTPivotValueList',
    'ASTPostfixTableOperator',
    'ASTPrimaryKeyElement',
    'ASTPrimaryKeyElementList',
    'ASTPrivilege',
    'ASTPrivileges',
    'ASTQualify',
    'ASTQuantifier',
    'ASTQuantifierBound',
    'ASTQueryExpression',
    'ASTRecursionDepthModifier',
    'ASTRepeatableClause',
    'ASTReplaceFieldsArg',
    'ASTReturningClause',
    'ASTRollup',
    'ASTRowPatternExpression',
    'ASTSampleSize',
    'ASTSampleSuffix',
    'ASTScript',
    'ASTSelectAs',
    'ASTSelectColumn',
    'ASTSelectList',
    'ASTSelectWith',
    'ASTSetOperationAllOrDistinct',
    'ASTSetOperationColumnMatchMode',
    'ASTSetOperationColumnPropagationMode',
    'ASTSetOperationMetadata',
    'ASTSetOperationMetadataList',
    'ASTSetOperationType',
    'ASTSpannerInterleaveClause',
    'ASTSpannerTableOptions',
    'ASTSqlFunctionBody',
    'ASTStarExceptList',
    'ASTStarModifiers',
    'ASTStarReplaceItem',
    'ASTStatement',
    'ASTStatementList',
    'ASTStructColumnField',
    'ASTStructConstructorArg',
    'ASTStructField',
    'ASTSubpipeline',
    'ASTTVFArgument',
    'ASTTVFSchema',
    'ASTTVFSchemaColumn',
    'ASTTableAndColumnInfo',
    'ASTTableAndColumnInfoList',
    'ASTTableElement',
    'ASTTableElementList',
    'ASTTableExpression',
    'ASTTemplatedParameterType',
    'ASTTransactionMode',
    'ASTTransactionModeList',
    'ASTTransformClause',
    'ASTTtlClause',
    'ASTType',
    'ASTTypeParameterList',
    'ASTUnnestExpression',
    'ASTUnnestExpressionWithOptAliasAndOffset',
    'ASTUnpivotInItem',
    'ASTUnpivotInItemLabel',
    'ASTUnpivotInItemList',
    'ASTUntilClause',
    'ASTUpdateItem',
    'ASTUpdateItemList',
    'ASTUpdateSetValue',
    'ASTUsingClause',
    'ASTWhenThenClause',
    'ASTWhenThenClauseList',
    'ASTWhereClause',
    'ASTWindowClause',
    'ASTWindowDefinition',
    'ASTWindowFrame',
    'ASTWindowFrameExpr',
    'ASTWindowSpecification',
    'ASTWithClause',
    'ASTWithConnectionClause',
    'ASTWithOffset',
    'ASTWithPartitionColumnsClause',
    'ASTWithReportModifier',
    'ASTWithWeight',
    'ASTYieldItemList',
    'ResolvedArgument',
    'ResolvedExpr',
    'ResolvedScan',
    'ResolvedStatement',
    'ASTAbortBatchStatement',
    'ASTAddColumnAction',
    'ASTAddColumnIdentifierAction',
    'ASTAddConstraintAction',
    'ASTAddSubEntityAction',
    'ASTAddToRestricteeListClause',
    'ASTAddTtlAction',
    'ASTAliasedQueryExpression',
    'ASTAlterAllRowAccessPoliciesStatement',
    'ASTAlterColumnDropDefaultAction',
    'ASTAlterColumnDropGeneratedAction',
    'ASTAlterColumnDropNotNullAction',
    'ASTAlterColumnOptionsAction',
    'ASTAlterColumnSetDefaultAction',
    'ASTAlterColumnSetGeneratedAction',
    'ASTAlterColumnTypeAction',
    'ASTAlterConstraintEnforcementAction',
    'ASTAlterConstraintSetOptionsAction',
    'ASTAlterSubEntityAction',
    'ASTAnalyticFunctionCall',
    'ASTAnalyzeStatement',
    'ASTAndExpr',
    'ASTArrayConstructor',
    'ASTArrayType',
    'ASTAssertStatement',
    'ASTBeginStatement',
    'ASTBetweenExpression',
    'ASTBinaryExpression',
    'ASTBitwiseShiftExpression',
    'ASTBoundedQuantifier',
    'ASTBracedConstructor',
    'ASTBracedConstructorLhs',
    'ASTBracedNewConstructor',
    'ASTCallStatement',
    'ASTCaseNoValueExpression',
    'ASTCaseValueExpression',
    'ASTCastExpression',
    'ASTCloneDataStatement',
    'ASTColumnDefinition',
    'ASTCommitStatement',
    'ASTConcatExpr',
    'ASTCreateDatabaseStatement',
    'ASTCreateLocalityGroupStatement',
    'ASTDateOrTimeLiteral',
    'ASTDdlStatement',
    'ASTDefaultLiteral',
    'ASTDefineMacroStatement',
    'ASTDefineTableStatement',
    'ASTDeleteStatement',
    'ASTDescribeStatement',
    'ASTDotStar',
    'ASTDotStarWithModifiers',
    'ASTDropAllRowAccessPoliciesStatement',
    'ASTDropColumnAction',
    'ASTDropConstraintAction',
    'ASTDropPrimaryKeyAction',
    'ASTDropSubEntityAction',
    'ASTDropTtlAction',
    'ASTElementTypeColumnSchema',
    'ASTEmptyRowPattern',
    'ASTExecuteImmediateStatement',
    'ASTExplainStatement',
    'ASTExportDataStatement',
    'ASTExportMetadataStatement',
    'ASTExportModelStatement',
    'ASTExpressionSubquery',
    'ASTExpressionWithAlias',
    'ASTExtractExpression',
    'ASTFilterUsingClause',
    'ASTFixedQuantifier',
    'ASTForeignKeyColumnAttribute',
    'ASTFromQuery',
    'ASTFunctionCall',
    'ASTFunctionType',
    'ASTGeneralizedPathExpression',
    'ASTGqlCallBase',
    'ASTGqlFilter',
    'ASTGqlFor',
    'ASTGqlGraphPatternQuery',
    'ASTGqlLet',
    'ASTGqlLinearOpsQuery',
    'ASTGqlMatch',
    'ASTGqlOperatorList',
    'ASTGqlOrderByAndPage',
    'ASTGqlQuery',
    'ASTGqlReturn',
    'ASTGqlSample',
    'ASTGqlSetOperation',
    'ASTGqlWith',
    'ASTGrantStatement',
    'ASTGrantToClause',
    'ASTGraphElementLabel',
    'ASTGraphElementPattern',
    'ASTGraphIsLabeledPredicate',
    'ASTGraphLabelOperation',
    'ASTGraphPathPattern',
    'ASTGraphTableQuery',
    'ASTGraphWildcardLabel',
    'ASTHiddenColumnAttribute',
    'ASTHintedStatement',
    'ASTIdentifier',
    'ASTImportStatement',
    'ASTInExpression',
    'ASTInferredTypeColumnSchema',
    'ASTInputTableArgument',
    'ASTInsertStatement',
    'ASTIntOrUnbounded',
    'ASTIntervalExpr',
    'ASTJoin',
    'ASTLambda',
    'ASTLeaf',
    'ASTLikeExpression',
    'ASTMapType',
    'ASTMatchRecognizeClause',
    'ASTMergeStatement',
    'ASTModuleStatement',
    'ASTNamedArgument',
    'ASTNewConstructor',
    'ASTNotNullColumnAttribute',
    'ASTOrExpr',
    'ASTParameterAssignment',
    'ASTParameterExprBase',
    'ASTParenthesizedJoin',
    'ASTPipeAggregate',
    'ASTPipeAs',
    'ASTPipeAssert',
    'ASTPipeCall',
    'ASTPipeCreateTable',
    'ASTPipeDescribe',
    'ASTPipeDistinct',
    'ASTPipeDrop',
    'ASTPipeExportData',
    'ASTPipeExtend',
    'ASTPipeFork',
    'ASTPipeIf',
    'ASTPipeIfCase',
    'ASTPipeInsert',
    'ASTPipeJoin',
    'ASTPipeJoinLhsPlaceholder',
    'ASTPipeLimitOffset',
    'ASTPipeLog',
    'ASTPipeMatchRecognize',
    'ASTPipeOrderBy',
    'ASTPipePivot',
    'ASTPipeRecursiveUnion',
    'ASTPipeRename',
    'ASTPipeRenameItem',
    'ASTPipeSelect',
    'ASTPipeSet',
    'ASTPipeSetOperation',
    'ASTPipeStaticDescribe',
    'ASTPipeTablesample',
    'ASTPipeTee',
    'ASTPipeUnpivot',
    'ASTPipeWhere',
    'ASTPipeWindow',
    'ASTPipeWith',
    'ASTPivotClause',
    'ASTPrimaryKeyColumnAttribute',
    'ASTQuery',
    'ASTQueryStatement',
    'ASTRangeLiteral',
    'ASTRangeType',
    'ASTRebuildAction',
    'ASTRemoveFromRestricteeListClause',
    'ASTRenameColumnAction',
    'ASTRenameStatement',
    'ASTRenameToClause',
    'ASTReplaceFieldsExpression',
    'ASTReplaceTtlAction',
    'ASTRestrictToClause',
    'ASTRevokeFromClause',
    'ASTRevokeStatement',
    'ASTRollbackStatement',
    'ASTRowPatternAnchor',
    'ASTRowPatternOperation',
    'ASTRowPatternQuantification',
    'ASTRowPatternVariable',
    'ASTRunBatchStatement',
    'ASTRunStatement',
    'ASTSampleClause',
    'ASTScriptStatement',
    'ASTSelect',
    'ASTSequenceArg',
    'ASTSetAsAction',
    'ASTSetCollateClause',
    'ASTSetOperation',
    'ASTSetOptionsAction',
    'ASTSetTransactionStatement',
    'ASTShowStatement',
    'ASTSimpleColumnSchema',
    'ASTSimpleType',
    'ASTSpannerAlterColumnAction',
    'ASTSpannerSetOnDeleteAction',
    'ASTStarWithModifiers',
    'ASTStartBatchStatement',
    'ASTStatementWithPipeOperators',
    'ASTStructBracedConstructor',
    'ASTStructColumnSchema',
    'ASTStructConstructorWithKeyword',
    'ASTStructConstructorWithParens',
    'ASTStructType',
    'ASTSubpipelineStatement',
    'ASTSymbolQuantifier',
    'ASTSystemVariableAssignment',
    'ASTTVF',
    'ASTTableClause',
    'ASTTableConstraint',
    'ASTTableDataSource',
    'ASTTablePathExpression',
    'ASTTableSubquery',
    'ASTTransactionIsolationLevel',
    'ASTTransactionReadWriteMode',
    'ASTTruncateStatement',
    'ASTUnaryExpression',
    'ASTUnpivotClause',
    'ASTUpdateConstructor',
    'ASTUpdateStatement',
    'ASTWithExpression',
    'ResolvedAbortBatchStmt',
    'ResolvedAggregateHavingModifier',
    'ResolvedAggregateScanBase',
    'ResolvedAlterAction',
    'ResolvedAlterObjectStmt',
    'ResolvedAlterTableSetOptionsStmt',
    'ResolvedAnalyticFunctionGroup',
    'ResolvedAnalyticScan',
    'ResolvedAnalyzeStmt',
    'ResolvedArgumentDef',
    'ResolvedArgumentList',
    'ResolvedArgumentRef',
    'ResolvedArrayAggregate',
    'ResolvedArrayScan',
    'ResolvedAssertRowsModified',
    'ResolvedAssertScan',
    'ResolvedAssertStmt',
    'ResolvedAssignmentStmt',
    'ResolvedAuxLoadDataPartitionFilter',
    'ResolvedAuxLoadDataStmt',
    'ResolvedBarrierScan',
    'ResolvedBeginStmt',
    'ResolvedCallStmt',
    'ResolvedCast',
    'ResolvedCatalogColumnRef',
    'ResolvedCloneDataStmt',
    'ResolvedColumnAnnotations',
    'ResolvedColumnDefaultValue',
    'ResolvedColumnDefinition',
    'ResolvedColumnHolder',
    'ResolvedColumnRef',
    'ResolvedCommitStmt',
    'ResolvedComputedColumnBase',
    'ResolvedConnection',
    'ResolvedConstant',
    'ResolvedConstraint',
    'ResolvedCreateDatabaseStmt',
    'ResolvedCreateModelAliasedQuery',
    'ResolvedCreateRowAccessPolicyStmt',
    'ResolvedCreateStatement',
    'ResolvedCreateWithEntryStmt',
    'ResolvedDMLDefault',
    'ResolvedDMLValue',
    'ResolvedDefineTableStmt',
    'ResolvedDeleteStmt',
    'ResolvedDescribeScan',
    'ResolvedDescribeStmt',
    'ResolvedDescriptor',
    'ResolvedDropFunctionStmt',
    'ResolvedDropIndexStmt',
    'ResolvedDropMaterializedViewStmt',
    'ResolvedDropPrivilegeRestrictionStmt',
    'ResolvedDropRowAccessPolicyStmt',
    'ResolvedDropSnapshotTableStmt',
    'ResolvedDropStmt',
    'ResolvedDropTableFunctionStmt',
    'ResolvedExecuteAsRoleScan',
    'ResolvedExecuteImmediateArgument',
    'ResolvedExecuteImmediateStmt',
    'ResolvedExplainStmt',
    'ResolvedExportDataStmt',
    'ResolvedExportMetadataStmt',
    'ResolvedExportModelStmt',
    'ResolvedExpressionColumn',
    'ResolvedExtendedCast',
    'ResolvedExtendedCastElement',
    'ResolvedFilterField',
    'ResolvedFilterFieldArg',
    'ResolvedFilterScan',
    'ResolvedFlatten',
    'ResolvedFlattenedArg',
    'ResolvedFunctionArgument',
    'ResolvedFunctionCallBase',
    'ResolvedFunctionSignatureHolder',
    'ResolvedGeneralizedQueryStmt',
    'ResolvedGeneralizedQuerySubpipeline',
    'ResolvedGeneratedColumnInfo',
    'ResolvedGetJsonField',
    'ResolvedGetProtoField',
    'ResolvedGetProtoOneof',
    'ResolvedGetRowField',
    'ResolvedGetStructField',
    'ResolvedGrantOrRevokeStmt',
    'ResolvedGraphCallScan',
    'ResolvedGraphDynamicLabelSpecification',
    'ResolvedGraphDynamicPropertiesSpecification',
    'ResolvedGraphElementIdentifier',
    'ResolvedGraphElementLabel',
    'ResolvedGraphElementProperty',
    'ResolvedGraphElementTable',
    'ResolvedGraphGetElementProperty',
    'ResolvedGraphIsLabeledPredicate',
    'ResolvedGraphLabelExpr',
    'ResolvedGraphMakeArrayVariable',
    'ResolvedGraphMakeElement',
    'ResolvedGraphNodeTableReference',
    'ResolvedGraphPathCost',
    'ResolvedGraphPathMode',
    'ResolvedGraphPathPatternQuantifier',
    'ResolvedGraphPathScanBase',
    'ResolvedGraphPathSearchPrefix',
    'ResolvedGraphPropertyDeclaration',
    'ResolvedGraphPropertyDefinition',
    'ResolvedGraphRefScan',
    'ResolvedGraphScanBase',
    'ResolvedGraphTableScan',
    'ResolvedGroupRowsScan',
    'ResolvedGroupingCall',
    'ResolvedGroupingSetBase',
    'ResolvedGroupingSetMultiColumn',
    'ResolvedIdentityColumnInfo',
    'ResolvedImportStmt',
    'ResolvedIndexItem',
    'ResolvedInlineLambda',
    'ResolvedInsertRow',
    'ResolvedInsertStmt',
    'ResolvedJoinScan',
    'ResolvedLimitOffsetScan',
    'ResolvedLiteral',
    'ResolvedLockMode',
    'ResolvedLogScan',
    'ResolvedMakeProto',
    'ResolvedMakeProtoField',
    'ResolvedMakeStruct',
    'ResolvedMatchRecognizePatternExpr',
    'ResolvedMatchRecognizeScan',
    'ResolvedMatchRecognizeVariableDefinition',
    'ResolvedMeasureGroup',
    'ResolvedMergeStmt',
    'ResolvedMergeWhen',
    'ResolvedModel',
    'ResolvedModuleStmt',
    'ResolvedMultiStmt',
    'ResolvedObjectUnit',
    'ResolvedOnConflictClause',
    'ResolvedOption',
    'ResolvedOrderByItem',
    'ResolvedOrderByScan',
    'ResolvedOutputColumn',
    'ResolvedOutputSchema',
    'ResolvedParameter',
    'ResolvedPipeCreateTableScan',
    'ResolvedPipeExportDataScan',
    'ResolvedPipeForkScan',
    'ResolvedPipeIfCase',
    'ResolvedPipeIfScan',
    'ResolvedPipeInsertScan',
    'ResolvedPipeTeeScan',
    'ResolvedPivotColumn',
    'ResolvedPivotScan',
    'ResolvedPrivilege',
    'ResolvedProjectScan',
    'ResolvedQueryStmt',
    'ResolvedRecursionDepthModifier',
    'ResolvedRecursiveRefScan',
    'ResolvedRecursiveScan',
    'ResolvedRelationArgumentScan',
    'ResolvedRenameStmt',
    'ResolvedReplaceField',
    'ResolvedReplaceFieldItem',
    'ResolvedReturningClause',
    'ResolvedRollbackStmt',
    'ResolvedRunBatchStmt',
    'ResolvedSampleScan',
    'ResolvedSequence',
    'ResolvedSetOperationItem',
    'ResolvedSetOperationScan',
    'ResolvedSetTransactionStmt',
    'ResolvedShowStmt',
    'ResolvedSingleRowScan',
    'ResolvedStartBatchStmt',
    'ResolvedStatementWithPipeOperatorsStmt',
    'ResolvedStaticDescribeScan',
    'ResolvedSubpipeline',
    'ResolvedSubpipelineInputScan',
    'ResolvedSubpipelineStmt',
    'ResolvedSubqueryExpr',
    'ResolvedSystemVariable',
    'ResolvedTVFScan',
    'ResolvedTableAndColumnInfo',
    'ResolvedTableScan',
    'ResolvedTruncateStmt',
    'ResolvedUndropStmt',
    'ResolvedUnnestItem',
    'ResolvedUnpivotArg',
    'ResolvedUnpivotScan',
    'ResolvedUnsetArgumentScan',
    'ResolvedUpdateConstructor',
    'ResolvedUpdateFieldItem',
    'ResolvedUpdateItem',
    'ResolvedUpdateItemElement',
    'ResolvedUpdateStmt',
    'ResolvedWindowFrame',
    'ResolvedWindowFrameExpr',
    'ResolvedWindowOrdering',
    'ResolvedWindowPartitioning',
    'ResolvedWithEntry',
    'ResolvedWithExpr',
    'ResolvedWithPartitionColumns',
    'ResolvedWithRefScan',
    'ResolvedWithScan',
    'ASTAlterStatementBase',
    'ASTArrayColumnSchema',
    'ASTArrayElement',
    'ASTAssignmentFromStruct',
    'ASTBeginEndBlock',
    'ASTBigNumericLiteral',
    'ASTBreakContinueStatement',
    'ASTBytesLiteral',
    'ASTCaseStatement',
    'ASTCheckConstraint',
    'ASTCloneDataSource',
    'ASTCopyDataSource',
    'ASTCreateStatement',
    'ASTDotGeneralizedField',
    'ASTDotIdentifier',
    'ASTDropEntityStatement',
    'ASTDropFunctionStatement',
    'ASTDropIndexStatement',
    'ASTDropMaterializedViewStatement',
    'ASTDropPrivilegeRestrictionStatement',
    'ASTDropRowAccessPolicyStatement',
    'ASTDropSnapshotTableStatement',
    'ASTDropStatement',
    'ASTDropTableFunctionStatement',
    'ASTExtendedPathExpression',
    'ASTForeignKey',
    'ASTGqlInlineSubqueryCall',
    'ASTGqlNamedCall',
    'ASTGraphEdgePattern',
    'ASTGraphNodePattern',
    'ASTIfStatement',
    'ASTJSONLiteral',
    'ASTLoopStatement',
    'ASTNumericLiteral',
    'ASTParameterExpr',
    'ASTPathExpression',
    'ASTPrimaryKey',
    'ASTPrintableLeaf',
    'ASTRaiseStatement',
    'ASTRangeColumnSchema',
    'ASTReturnStatement',
    'ASTSingleAssignment',
    'ASTStringLiteral',
    'ASTSystemVariableExpr',
    'ASTUndropStatement',
    'ASTVariableDeclaration',
    'ResolvedAddColumnAction',
    'ResolvedAddColumnIdentifierAction',
    'ResolvedAddConstraintAction',
    'ResolvedAddSubEntityAction',
    'ResolvedAddToRestricteeListAction',
    'ResolvedAggregateScan',
    'ResolvedAggregationThresholdAggregateScan',
    'ResolvedAlterAllRowAccessPoliciesStmt',
    'ResolvedAlterApproxViewStmt',
    'ResolvedAlterColumnAction',
    'ResolvedAlterConnectionStmt',
    'ResolvedAlterDatabaseStmt',
    'ResolvedAlterEntityStmt',
    'ResolvedAlterExternalSchemaStmt',
    'ResolvedAlterIndexStmt',
    'ResolvedAlterMaterializedViewStmt',
    'ResolvedAlterModelStmt',
    'ResolvedAlterPrivilegeRestrictionStmt',
    'ResolvedAlterRowAccessPolicyStmt',
    'ResolvedAlterSchemaStmt',
    'ResolvedAlterSequenceStmt',
    'ResolvedAlterSubEntityAction',
    'ResolvedAlterTableStmt',
    'ResolvedAlterViewStmt',
    'ResolvedAnonymizedAggregateScan',
    'ResolvedCheckConstraint',
    'ResolvedComputedColumnImpl',
    'ResolvedCreateConnectionStmt',
    'ResolvedCreateConstantStmt',
    'ResolvedCreateEntityStmt',
    'ResolvedCreateFunctionStmt',
    'ResolvedCreateIndexStmt',
    'ResolvedCreateModelStmt',
    'ResolvedCreatePrivilegeRestrictionStmt',
    'ResolvedCreateProcedureStmt',
    'ResolvedCreatePropertyGraphStmt',
    'ResolvedCreateSchemaStmtBase',
    'ResolvedCreateSequenceStmt',
    'ResolvedCreateSnapshotTableStmt',
    'ResolvedCreateTableFunctionStmt',
    'ResolvedCreateTableStmtBase',
    'ResolvedCreateViewBase',
    'ResolvedCube',
    'ResolvedDifferentialPrivacyAggregateScan',
    'ResolvedDropColumnAction',
    'ResolvedDropConstraintAction',
    'ResolvedDropPrimaryKeyAction',
    'ResolvedDropSubEntityAction',
    'ResolvedFilterUsingAction',
    'ResolvedForeignKey',
    'ResolvedFunctionCall',
    'ResolvedGrantStmt',
    'ResolvedGrantToAction',
    'ResolvedGraphElementScan',
    'ResolvedGraphLabel',
    'ResolvedGraphLabelNaryExpr',
    'ResolvedGraphLinearScan',
    'ResolvedGraphPathScan',
    'ResolvedGraphScan',
    'ResolvedGraphWildCardLabel',
    'ResolvedGroupingSet',
    'ResolvedGroupingSetList',
    'ResolvedGroupingSetProduct',
    'ResolvedMatchRecognizePatternAnchor',
    'ResolvedMatchRecognizePatternEmpty',
    'ResolvedMatchRecognizePatternOperation',
    'ResolvedMatchRecognizePatternQuantification',
    'ResolvedMatchRecognizePatternVariableRef',
    'ResolvedNonScalarFunctionCallBase',
    'ResolvedPrimaryKey',
    'ResolvedRebuildAction',
    'ResolvedRemoveFromRestricteeListAction',
    'ResolvedRenameColumnAction',
    'ResolvedRenameToAction',
    'ResolvedRestrictToAction',
    'ResolvedRevokeFromAction',
    'ResolvedRevokeStmt',
    'ResolvedRollup',
    'ResolvedSetAsAction',
    'ResolvedSetCollateClause',
    'ResolvedSetOptionsAction',
    'ASTAlterApproxViewStatement',
    'ASTAlterConnectionStatement',
    'ASTAlterDatabaseStatement',
    'ASTAlterEntityStatement',
    'ASTAlterExternalSchemaStatement',
    'ASTAlterIndexStatement',
    'ASTAlterMaterializedViewStatement',
    'ASTAlterModelStatement',
    'ASTAlterPrivilegeRestrictionStatement',
    'ASTAlterRowAccessPolicyStatement',
    'ASTAlterSchemaStatement',
    'ASTAlterSequenceStatement',
    'ASTAlterTableStatement',
    'ASTAlterViewStatement',
    'ASTBooleanLiteral',
    'ASTBreakStatement',
    'ASTBytesLiteralComponent',
    'ASTContinueStatement',
    'ASTCreateConnectionStatement',
    'ASTCreateConstantStatement',
    'ASTCreateEntityStatement',
    'ASTCreateFunctionStmtBase',
    'ASTCreateIndexStatement',
    'ASTCreateModelStatement',
    'ASTCreatePrivilegeRestrictionStatement',
    'ASTCreateProcedureStatement',
    'ASTCreatePropertyGraphStatement',
    'ASTCreateRowAccessPolicyStatement',
    'ASTCreateSchemaStmtBase',
    'ASTCreateSequenceStatement',
    'ASTCreateSnapshotStatement',
    'ASTCreateSnapshotTableStatement',
    'ASTCreateTableStmtBase',
    'ASTCreateViewStatementBase',
    'ASTDropSearchIndexStatement',
    'ASTDropVectorIndexStatement',
    'ASTFloatLiteral',
    'ASTForInStatement',
    'ASTIndexAllColumns',
    'ASTIntLiteral',
    'ASTMacroBody',
    'ASTMaxLiteral',
    'ASTNullLiteral',
    'ASTRepeatStatement',
    'ASTStar',
    'ASTStringLiteralComponent',
    'ASTWhileStatement',
    'ResolvedAggregateFunctionCall',
    'ResolvedAlterColumnDropDefaultAction',
    'ResolvedAlterColumnDropGeneratedAction',
    'ResolvedAlterColumnDropNotNullAction',
    'ResolvedAlterColumnOptionsAction',
    'ResolvedAlterColumnSetDataTypeAction',
    'ResolvedAlterColumnSetDefaultAction',
    'ResolvedAlterColumnSetGeneratedAction',
    'ResolvedAnalyticFunctionCall',
    'ResolvedComputedColumn',
    'ResolvedCreateApproxViewStmt',
    'ResolvedCreateExternalSchemaStmt',
    'ResolvedCreateExternalTableStmt',
    'ResolvedCreateMaterializedViewStmt',
    'ResolvedCreateSchemaStmt',
    'ResolvedCreateTableAsSelectStmt',
    'ResolvedCreateTableStmt',
    'ResolvedCreateViewStmt',
    'ResolvedDeferredComputedColumn',
    'ResolvedGraphEdgeScan',
    'ResolvedGraphNodeScan',
    'ASTAuxLoadDataStatement',
    'ASTCreateApproxViewStatement',
    'ASTCreateExternalSchemaStatement',
    'ASTCreateExternalTableStatement',
    'ASTCreateFunctionStatement',
    'ASTCreateMaterializedViewStatement',
    'ASTCreateSchemaStatement',
    'ASTCreateTableFunctionStatement',
    'ASTCreateTableStatement',
    'ASTCreateViewStatement',
]
