// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: substrait/extended_expression.proto
// Protobuf C++ Version: 7.35.1

#include "substrait/extended_expression.pb.h"

#include <algorithm>
#include <type_traits>
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/generated_message_tctable_impl.h"
#include "google/protobuf/internal_visibility.h"
#include "google/protobuf/extension_set.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/wire_format_lite.h"
#include "google/protobuf/descriptor.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/reflection_ops.h"
#include "google/protobuf/wire_format.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"
PROTOBUF_PRAGMA_INIT_SEG
namespace _pb = ::google::protobuf;
namespace _pbi = ::google::protobuf::internal;
namespace _fl = ::google::protobuf::internal::field_layout;
#ifdef PROTOBUF_MESSAGE_GLOBALS
namespace {
PROTOBUF_CONSTINIT ::google::protobuf::internal::ReflectionData
    file_reflection_data[] = {
        // ::substrait::ExpressionReference
        {&::_pbi::kDescriptorMethods, &::descriptor_table_substrait_2fextended_5fexpression_2eproto, /* tracker*/ nullptr,},
        // ::substrait::ExtendedExpression
        {&::_pbi::kDescriptorMethods, &::descriptor_table_substrait_2fextended_5fexpression_2eproto, /* tracker*/ nullptr,},
};
}  // namespace
#endif
namespace substrait {
class ExpressionReference::_Internal {
 public:
  using HasBits = decltype(::std::declval<ExpressionReference>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ExpressionReference, _impl_._has_bits_);
  static constexpr ::int32_t kOneofCaseOffset =
      PROTOBUF_FIELD_OFFSET(::substrait::ExpressionReference, _impl_._oneof_case_);
};

constexpr ExpressionReference::ParseTableT_ ExpressionReference::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ExpressionReference, _impl_._has_bits_),
      0, // no _extensions_
      3, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      2,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::GenericFallback,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::substrait::ExpressionReference>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // repeated string output_names = 3;
      {::_pbi::TcParser::FastUR1,
       {26, 0, 0,
        PROTOBUF_FIELD_OFFSET(ExpressionReference, _impl_.output_names_)}},
    }}, {{
      65535, 65535
    }}, {{
      // .substrait.Expression expression = 1;
      {PROTOBUF_FIELD_OFFSET(ExpressionReference, _impl_.expr_type_.expression_), _Internal::kOneofCaseOffset + 0, 0, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)},
      // .substrait.AggregateFunction measure = 2;
      {PROTOBUF_FIELD_OFFSET(ExpressionReference, _impl_.expr_type_.measure_), _Internal::kOneofCaseOffset + 0, 1, (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated string output_names = 3;
      {PROTOBUF_FIELD_OFFSET(ExpressionReference, _impl_.output_names_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUtf8String | ::_fl::kRepSString)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::substrait::Expression>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::substrait::Expression_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::substrait::AggregateFunction>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::substrait::AggregateFunction_globals_},
        #endif
    }},
    {{
      "\35\0\0\14\0\0\0\0"
      "substrait.ExpressionReference"
      "output_names"
    }},
  };
}


inline constexpr ExpressionReference::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : _cached_size_{0},
        output_names_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::substrait::ExpressionReference,
            PROTOBUF_FIELD_OFFSET(::substrait::ExpressionReference, _impl_.output_names_)>()
         }
        ,
        expr_type_{},
        _oneof_case_{} {}

template <typename>
constexpr ExpressionReference::ExpressionReference(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : ::google::protobuf::Message(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ExpressionReference::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ExpressionReference(arena);
}
constexpr auto ExpressionReference::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ExpressionReference), alignof(ExpressionReference));
}
constexpr auto ExpressionReference::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ExpressionReference::MergeImpl,
          ::google::protobuf::Message::GetNewImpl<ExpressionReference>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ExpressionReference::SharedDtor,
          ::google::protobuf::Message::GetClearImpl<ExpressionReference>(), &ExpressionReference::ByteSizeLong,
              &ExpressionReference::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ExpressionReference, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[0],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_substrait_2fextended_5fexpression_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ExpressionReferenceGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ExpressionReferenceGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ExpressionReference_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ExpressionReference::InternalGenerateClassData_(
            _default, &ExpressionReference_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ExpressionReference>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ExpressionReferenceGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ExpressionReference _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ExpressionReference>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ExpressionReferenceGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ExpressionReferenceGlobalsTypeInternal ExpressionReference_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ExpressionReference_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ExpressionReference_globals_.GetClassData();
#else
  return ExpressionReference_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ExtendedExpression::_Internal {
 public:
  using HasBits = decltype(::std::declval<ExtendedExpression>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_._has_bits_);
};

constexpr ExtendedExpression::ParseTableT_ ExtendedExpression::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_._has_bits_),
      0, // no _extensions_
      7, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967168,  // skipmap
      offsetof(ParseTableT_, field_entries),
      7,  // num_field_entries
      6,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::GenericFallback,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::substrait::ExtendedExpression>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // repeated .substrait.extensions.SimpleExtensionURI extension_uris = 1;
      {::_pbi::TcParser::FastMtR1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.extension_uris_)}},
      // repeated .substrait.extensions.SimpleExtensionDeclaration extensions = 2;
      {::_pbi::TcParser::FastMtR1,
       {18, 1, 1,
        PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.extensions_)}},
      // repeated .substrait.ExpressionReference referred_expr = 3;
      {::_pbi::TcParser::FastMtR1,
       {26, 2, 2,
        PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.referred_expr_)}},
      // .substrait.NamedStruct base_schema = 4;
      {::_pbi::TcParser::FastMtS1,
       {34, 4, 3,
        PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.base_schema_)}},
      // .substrait.extensions.AdvancedExtension advanced_extensions = 5;
      {::_pbi::TcParser::FastMtS1,
       {42, 5, 4,
        PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.advanced_extensions_)}},
      // repeated string expected_type_urls = 6;
      {::_pbi::TcParser::FastUR1,
       {50, 3, 0,
        PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.expected_type_urls_)}},
      // .substrait.Version version = 7;
      {::_pbi::TcParser::FastMtS1,
       {58, 6, 5,
        PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.version_)}},
    }}, {{
      65535, 65535
    }}, {{
      // repeated .substrait.extensions.SimpleExtensionURI extension_uris = 1;
      {PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.extension_uris_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated .substrait.extensions.SimpleExtensionDeclaration extensions = 2;
      {PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.extensions_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated .substrait.ExpressionReference referred_expr = 3;
      {PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.referred_expr_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // .substrait.NamedStruct base_schema = 4;
      {PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.base_schema_), _Internal::kHasBitsOffset + 4, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // .substrait.extensions.AdvancedExtension advanced_extensions = 5;
      {PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.advanced_extensions_), _Internal::kHasBitsOffset + 5, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated string expected_type_urls = 6;
      {PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.expected_type_urls_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUtf8String | ::_fl::kRepSString)},
      // .substrait.Version version = 7;
      {PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.version_), _Internal::kHasBitsOffset + 6, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::substrait::extensions::SimpleExtensionURI>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::substrait::extensions::SimpleExtensionURI_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::substrait::extensions::SimpleExtensionDeclaration>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::substrait::extensions::SimpleExtensionDeclaration_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::substrait::ExpressionReference>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::substrait::ExpressionReference_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::substrait::NamedStruct>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::substrait::NamedStruct_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::substrait::extensions::AdvancedExtension>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::substrait::extensions::AdvancedExtension_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::substrait::Version>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::substrait::Version_globals_},
        #endif
    }},
    {{
      "\34\0\0\0\0\0\22\0"
      "substrait.ExtendedExpression"
      "expected_type_urls"
    }},
  };
}


inline constexpr ExtendedExpression::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : _cached_size_{0},
        extension_uris_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::substrait::ExtendedExpression,
            PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.extension_uris_)>()
         }
        ,
        extensions_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::substrait::ExtendedExpression,
            PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.extensions_)>()
         }
        ,
        referred_expr_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::substrait::ExtendedExpression,
            PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.referred_expr_)>()
         }
        ,
        expected_type_urls_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::substrait::ExtendedExpression,
            PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.expected_type_urls_)>()
         }
        ,
        base_schema_{nullptr},
        advanced_extensions_{nullptr},
        version_{nullptr} {}

template <typename>
constexpr ExtendedExpression::ExtendedExpression(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : ::google::protobuf::Message(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ExtendedExpression::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ExtendedExpression(arena);
}
constexpr auto ExtendedExpression::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ExtendedExpression), alignof(ExtendedExpression));
}
constexpr auto ExtendedExpression::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ExtendedExpression::MergeImpl,
          ::google::protobuf::Message::GetNewImpl<ExtendedExpression>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ExtendedExpression::SharedDtor,
          ::google::protobuf::Message::GetClearImpl<ExtendedExpression>(), &ExtendedExpression::ByteSizeLong,
              &ExtendedExpression::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[1],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_substrait_2fextended_5fexpression_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ExtendedExpressionGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ExtendedExpressionGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ExtendedExpression_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ExtendedExpression::InternalGenerateClassData_(
            _default, &ExtendedExpression_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ExtendedExpression>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ExtendedExpressionGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ExtendedExpression _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ExtendedExpression>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ExtendedExpressionGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ExtendedExpressionGlobalsTypeInternal ExtendedExpression_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ExtendedExpression_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ExtendedExpression_globals_.GetClassData();
#else
  return ExtendedExpression_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
}  // namespace substrait
static constexpr const ::_pb::EnumDescriptor* PROTOBUF_NONNULL* PROTOBUF_NULLABLE
    file_level_enum_descriptors_substrait_2fextended_5fexpression_2eproto = nullptr;
static constexpr const ::_pb::ServiceDescriptor* PROTOBUF_NONNULL* PROTOBUF_NULLABLE
    file_level_service_descriptors_substrait_2fextended_5fexpression_2eproto = nullptr;
const ::uint32_t
    TableStruct_substrait_2fextended_5fexpression_2eproto::offsets[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
        protodesc_cold) = {
        0x085, // bitmap
        PROTOBUF_FIELD_OFFSET(::substrait::ExpressionReference, _impl_._has_bits_),
        PROTOBUF_FIELD_OFFSET(::substrait::ExpressionReference, _impl_._oneof_case_[0]),
        8, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::substrait::ExpressionReference, _impl_.expr_type_),
        PROTOBUF_FIELD_OFFSET(::substrait::ExpressionReference, _impl_.expr_type_),
        PROTOBUF_FIELD_OFFSET(::substrait::ExpressionReference, _impl_.output_names_),
        PROTOBUF_FIELD_OFFSET(::substrait::ExpressionReference, _impl_.expr_type_),
        ~0u,
        ~0u,
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_._has_bits_),
        10, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.version_),
        PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.extension_uris_),
        PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.extensions_),
        PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.referred_expr_),
        PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.base_schema_),
        PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.advanced_extensions_),
        PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.expected_type_urls_),
        6,
        0,
        1,
        2,
        4,
        5,
        3,
};

static const ::_pbi::MigrationSchema
    schemas[] ABSL_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
        {0, sizeof(::substrait::ExpressionReference)},
        {11, sizeof(::substrait::ExtendedExpression)},
};
static const ::_pbi::MessageGlobalsBase* PROTOBUF_NONNULL const
    file_message_globals[] = {
        &::substrait::ExpressionReference_globals_,
        &::substrait::ExtendedExpression_globals_,
};
const char descriptor_table_protodef_substrait_2fextended_5fexpression_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
    protodesc_cold) = {
    "\n#substrait/extended_expression.proto\022\ts"
    "ubstrait\032\027substrait/algebra.proto\032%subst"
    "rait/extensions/extensions.proto\032\024substr"
    "ait/plan.proto\032\024substrait/type.proto\"\226\001\n"
    "\023ExpressionReference\022+\n\nexpression\030\001 \001(\013"
    "2\025.substrait.ExpressionH\000\022/\n\007measure\030\002 \001"
    "(\0132\034.substrait.AggregateFunctionH\000\022\024\n\014ou"
    "tput_names\030\003 \003(\tB\013\n\texpr_type\"\207\003\n\022Extend"
    "edExpression\022#\n\007version\030\007 \001(\0132\022.substrai"
    "t.Version\022@\n\016extension_uris\030\001 \003(\0132(.subs"
    "trait.extensions.SimpleExtensionURI\022D\n\ne"
    "xtensions\030\002 \003(\01320.substrait.extensions.S"
    "impleExtensionDeclaration\0225\n\rreferred_ex"
    "pr\030\003 \003(\0132\036.substrait.ExpressionReference"
    "\022+\n\013base_schema\030\004 \001(\0132\026.substrait.NamedS"
    "truct\022D\n\023advanced_extensions\030\005 \001(\0132\'.sub"
    "strait.extensions.AdvancedExtension\022\032\n\022e"
    "xpected_type_urls\030\006 \003(\tBW\n\022io.substrait."
    "protoP\001Z*github.com/substrait-io/substra"
    "it-go/proto\252\002\022Substrait.Protobufb\006proto3"
};
static const ::_pbi::DescriptorTable* PROTOBUF_NONNULL const
    descriptor_table_substrait_2fextended_5fexpression_2eproto_deps[4] = {
        &::descriptor_table_substrait_2falgebra_2eproto,
        &::descriptor_table_substrait_2fextensions_2fextensions_2eproto,
        &::descriptor_table_substrait_2fplan_2eproto,
        &::descriptor_table_substrait_2ftype_2eproto,
};
static ::absl::once_flag descriptor_table_substrait_2fextended_5fexpression_2eproto_once;
PROTOBUF_CONSTINIT const ::_pbi::DescriptorTable descriptor_table_substrait_2fextended_5fexpression_2eproto = {
    false,
    false,
    800,
    descriptor_table_protodef_substrait_2fextended_5fexpression_2eproto,
    "substrait/extended_expression.proto",
    &descriptor_table_substrait_2fextended_5fexpression_2eproto_once,
    descriptor_table_substrait_2fextended_5fexpression_2eproto_deps,
    4,
    2,
    schemas,
    file_message_globals,
    TableStruct_substrait_2fextended_5fexpression_2eproto::offsets,
    file_level_enum_descriptors_substrait_2fextended_5fexpression_2eproto,
    file_level_service_descriptors_substrait_2fextended_5fexpression_2eproto,
};
namespace substrait {
// ===================================================================

void ExpressionReference::set_allocated_expression(::substrait::Expression* PROTOBUF_NULLABLE expression) {
  ::google::protobuf::Arena* message_arena = GetArena();
  clear_expr_type();
  if (expression) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(expression)->GetArena();
    if (message_arena != submessage_arena) {
      expression = ::google::protobuf::internal::GetOwnedMessage(message_arena, expression, submessage_arena);
    }
    set_has_expression();
    _impl_.expr_type_.expression_ = expression;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ExpressionReference.expression)
}
void ExpressionReference::clear_expression() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (expr_type_case() == kExpression) {
    if (GetArena() == nullptr) {
      delete _impl_.expr_type_.expression_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.expr_type_.expression_);
    }
    clear_has_expr_type();
  }
}
void ExpressionReference::set_allocated_measure(::substrait::AggregateFunction* PROTOBUF_NULLABLE measure) {
  ::google::protobuf::Arena* message_arena = GetArena();
  clear_expr_type();
  if (measure) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(measure)->GetArena();
    if (message_arena != submessage_arena) {
      measure = ::google::protobuf::internal::GetOwnedMessage(message_arena, measure, submessage_arena);
    }
    set_has_measure();
    _impl_.expr_type_.measure_ = measure;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ExpressionReference.measure)
}
void ExpressionReference::clear_measure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (expr_type_case() == kMeasure) {
    if (GetArena() == nullptr) {
      delete _impl_.expr_type_.measure_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.expr_type_.measure_);
    }
    clear_has_expr_type();
  }
}
ExpressionReference::ExpressionReference(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::Message(arena, ExpressionReference_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::Message(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:substrait.ExpressionReference)
}
PROTOBUF_NDEBUG_INLINE ExpressionReference::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::substrait::ExpressionReference& from_msg)
      : _has_bits_{from._has_bits_},
        _cached_size_{0},
        output_names_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::substrait::ExpressionReference,
              PROTOBUF_FIELD_OFFSET(::substrait::ExpressionReference, _impl_.output_names_)>()
          , from.output_names_
        }
        ,
        expr_type_{},
        _oneof_case_{from._oneof_case_[0]} {}

ExpressionReference::ExpressionReference(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const ExpressionReference& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::Message(arena, ExpressionReference_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::Message(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  ExpressionReference* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  switch (expr_type_case()) {
    case EXPR_TYPE_NOT_SET:
      break;
      case kExpression:
        _impl_.expr_type_.expression_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.expr_type_.expression_);
        break;
      case kMeasure:
        _impl_.expr_type_.measure_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.expr_type_.measure_);
        break;
  }

  // @@protoc_insertion_point(copy_constructor:substrait.ExpressionReference)
}
PROTOBUF_NDEBUG_INLINE ExpressionReference::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : _cached_size_{0},
        output_names_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::substrait::ExpressionReference,
            PROTOBUF_FIELD_OFFSET(::substrait::ExpressionReference, _impl_.output_names_)>()
         }
        ,
        expr_type_{},
        _oneof_case_{} {}

inline void ExpressionReference::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
ExpressionReference::~ExpressionReference() {
  // @@protoc_insertion_point(destructor:substrait.ExpressionReference)
  SharedDtor(*this);
}
inline void ExpressionReference::SharedDtor(MessageLite& self) {
  ExpressionReference& this_ = static_cast<ExpressionReference&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  if (this_.has_expr_type()) {
    this_.clear_expr_type();
  }
  this_._impl_.~Impl_();
}

void ExpressionReference::clear_expr_type() {
// @@protoc_insertion_point(one_of_clear_start:substrait.ExpressionReference)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  switch (expr_type_case()) {
    case kExpression: {
      if (GetArena() == nullptr) {
        delete _impl_.expr_type_.expression_;
      } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
        ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.expr_type_.expression_);
      }
      break;
    }
    case kMeasure: {
      if (GetArena() == nullptr) {
        delete _impl_.expr_type_.measure_;
      } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
        ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.expr_type_.measure_);
      }
      break;
    }
    case EXPR_TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = EXPR_TYPE_NOT_SET;
}


#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ExpressionReference_class_data_ =
        ExpressionReference::InternalGenerateClassData_(ExpressionReference_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ExpressionReference::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ExpressionReference_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ExpressionReference_class_data_.tc_table);
  return ExpressionReference_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ExpressionReference::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ExpressionReference_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ExpressionReference_globals_));
  return ExpressionReference_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ExpressionReference::ParseTableT_
    ExpressionReference::_table_ =
        ExpressionReference::InternalGenerateParseTable_(ExpressionReference_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ExpressionReference::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ExpressionReference)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _impl_.output_names_.Clear();
  }
  clear_expr_type();
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ExpressionReference::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ExpressionReference& this_ = static_cast<const ExpressionReference&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ExpressionReference::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ExpressionReference& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ExpressionReference)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  switch (this_.expr_type_case()) {
    case kExpression: {
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          1, *this_._impl_.expr_type_.expression_, this_._impl_.expr_type_.expression_->GetCachedSize(), target,
          stream);
      break;
    }
    case kMeasure: {
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          2, *this_._impl_.expr_type_.measure_, this_._impl_.expr_type_.measure_->GetCachedSize(), target,
          stream);
      break;
    }
    default:
      break;
  }
  cached_has_bits = this_._impl_._has_bits_[0];
  // repeated string output_names = 3;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_output_names_size(); i < n; ++i) {
      const auto& s = this_._internal_output_names().Get(i);
      ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          s.data(), static_cast<int>(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "substrait.ExpressionReference.output_names");
      target = stream->WriteString(3, s, target);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ExpressionReference)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ExpressionReference::ByteSizeLong(const MessageLite& base) {
  const ExpressionReference& this_ = static_cast<const ExpressionReference&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ExpressionReference::ByteSizeLong() const {
  const ExpressionReference& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:substrait.ExpressionReference)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void)cached_has_bits;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
   {
    // repeated string output_names = 3;
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size +=
          1 * ::google::protobuf::internal::FromIntSize(this_._internal_output_names().size());
      for (int i = 0, n = this_._internal_output_names().size(); i < n; ++i) {
        total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
            this_._internal_output_names().Get(i));
      }
    }
  }
  switch (this_.expr_type_case()) {
    // .substrait.Expression expression = 1;
    case kExpression: {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.expr_type_.expression_);
      break;
    }
    // .substrait.AggregateFunction measure = 2;
    case kMeasure: {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.expr_type_.measure_);
      break;
    }
    case EXPR_TYPE_NOT_SET: {
      break;
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ExpressionReference::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ExpressionReference*>(&to_msg);
  auto& from = static_cast<const ExpressionReference&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:substrait.ExpressionReference)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_internal_mutable_output_names()->InternalMergeFromWithArena(
        ::google::protobuf::MessageLite::internal_visibility(), arena,
        from._internal_output_names());
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  if (const uint32_t oneof_from_case =
          from._impl_._oneof_case_[0]) {
    const uint32_t oneof_to_case = _this->_impl_._oneof_case_[0];
    const bool oneof_needs_init = oneof_to_case != oneof_from_case;
    if (oneof_needs_init) {
      if (oneof_to_case != 0) {
        _this->clear_expr_type();
      }
      _this->_impl_._oneof_case_[0] = oneof_from_case;
    }

    switch (oneof_from_case) {
      case kExpression: {
        if (oneof_needs_init) {
          _this->_impl_.expr_type_.expression_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.expr_type_.expression_);
        } else {
          _this->_impl_.expr_type_.expression_->MergeFrom(*from._impl_.expr_type_.expression_);
        }
        break;
      }
      case kMeasure: {
        if (oneof_needs_init) {
          _this->_impl_.expr_type_.measure_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.expr_type_.measure_);
        } else {
          _this->_impl_.expr_type_.measure_->MergeFrom(*from._impl_.expr_type_.measure_);
        }
        break;
      }
      case EXPR_TYPE_NOT_SET:
        break;
    }
  }
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

void ExpressionReference::CopyFrom(const ExpressionReference& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:substrait.ExpressionReference)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}


void ExpressionReference::InternalSwap(ExpressionReference* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.output_names_.InternalSwap(&other->_impl_.output_names_);
  swap(_impl_.expr_type_, other->_impl_.expr_type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

::google::protobuf::Metadata ExpressionReference::GetMetadata() const {
  return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

void ExtendedExpression::clear_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.version_ != nullptr) _impl_.version_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
void ExtendedExpression::clear_extension_uris() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.extension_uris_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
void ExtendedExpression::clear_extensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.extensions_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
void ExtendedExpression::clear_base_schema() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.base_schema_ != nullptr) _impl_.base_schema_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
void ExtendedExpression::clear_advanced_extensions() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.advanced_extensions_ != nullptr) _impl_.advanced_extensions_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
ExtendedExpression::ExtendedExpression(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::Message(arena, ExtendedExpression_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::Message(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:substrait.ExtendedExpression)
}
PROTOBUF_NDEBUG_INLINE ExtendedExpression::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::substrait::ExtendedExpression& from_msg)
      : _has_bits_{from._has_bits_},
        _cached_size_{0},
        extension_uris_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::substrait::ExtendedExpression,
              PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.extension_uris_)>()
          , from.extension_uris_
        }
        ,
        extensions_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::substrait::ExtendedExpression,
              PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.extensions_)>()
          , from.extensions_
        }
        ,
        referred_expr_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::substrait::ExtendedExpression,
              PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.referred_expr_)>()
          , from.referred_expr_
        }
        ,
        expected_type_urls_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::substrait::ExtendedExpression,
              PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.expected_type_urls_)>()
          , from.expected_type_urls_
        }
     {}

ExtendedExpression::ExtendedExpression(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const ExtendedExpression& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : ::google::protobuf::Message(arena, ExtendedExpression_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : ::google::protobuf::Message(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  ExtendedExpression* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.base_schema_ = (CheckHasBit(cached_has_bits, 0x00000010U))
                ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.base_schema_)
                : nullptr;
  _impl_.advanced_extensions_ = (CheckHasBit(cached_has_bits, 0x00000020U))
                ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.advanced_extensions_)
                : nullptr;
  _impl_.version_ = (CheckHasBit(cached_has_bits, 0x00000040U))
                ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.version_)
                : nullptr;

  // @@protoc_insertion_point(copy_constructor:substrait.ExtendedExpression)
}
PROTOBUF_NDEBUG_INLINE ExtendedExpression::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : _cached_size_{0},
        extension_uris_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::substrait::ExtendedExpression,
            PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.extension_uris_)>()
         }
        ,
        extensions_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::substrait::ExtendedExpression,
            PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.extensions_)>()
         }
        ,
        referred_expr_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::substrait::ExtendedExpression,
            PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.referred_expr_)>()
         }
        ,
        expected_type_urls_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::substrait::ExtendedExpression,
            PROTOBUF_FIELD_OFFSET(::substrait::ExtendedExpression, _impl_.expected_type_urls_)>()
         }
     {}

inline void ExtendedExpression::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, base_schema_),
           0,
           offsetof(Impl_, version_) -
               offsetof(Impl_, base_schema_) +
               sizeof(Impl_::version_));
}
ExtendedExpression::~ExtendedExpression() {
  // @@protoc_insertion_point(destructor:substrait.ExtendedExpression)
  SharedDtor(*this);
}
inline void ExtendedExpression::SharedDtor(MessageLite& self) {
  ExtendedExpression& this_ = static_cast<ExtendedExpression&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.base_schema_;
  delete this_._impl_.advanced_extensions_;
  delete this_._impl_.version_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ExtendedExpression_class_data_ =
        ExtendedExpression::InternalGenerateClassData_(ExtendedExpression_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ExtendedExpression::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ExtendedExpression_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ExtendedExpression_class_data_.tc_table);
  return ExtendedExpression_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ExtendedExpression::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ExtendedExpression_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ExtendedExpression_globals_));
  return ExtendedExpression_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ExtendedExpression::ParseTableT_
    ExtendedExpression::_table_ =
        ExtendedExpression::InternalGenerateParseTable_(ExtendedExpression_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ExtendedExpression::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ExtendedExpression)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000007fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.extension_uris_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.extensions_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _impl_.referred_expr_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _impl_.expected_type_urls_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(_impl_.base_schema_ != nullptr);
      _impl_.base_schema_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(_impl_.advanced_extensions_ != nullptr);
      _impl_.advanced_extensions_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(_impl_.version_ != nullptr);
      _impl_.version_->Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ExtendedExpression::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ExtendedExpression& this_ = static_cast<const ExtendedExpression&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ExtendedExpression::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ExtendedExpression& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ExtendedExpression)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // repeated .substrait.extensions.SimpleExtensionURI extension_uris = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_extension_uris_size());
         i < n; i++) {
      const auto& repfield = this_._internal_extension_uris().Get(i);
      target =
          ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
              1, repfield, repfield.GetCachedSize(),
              target, stream);
    }
  }

  // repeated .substrait.extensions.SimpleExtensionDeclaration extensions = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_extensions_size());
         i < n; i++) {
      const auto& repfield = this_._internal_extensions().Get(i);
      target =
          ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
              2, repfield, repfield.GetCachedSize(),
              target, stream);
    }
  }

  // repeated .substrait.ExpressionReference referred_expr = 3;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_referred_expr_size());
         i < n; i++) {
      const auto& repfield = this_._internal_referred_expr().Get(i);
      target =
          ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
              3, repfield, repfield.GetCachedSize(),
              target, stream);
    }
  }

  // .substrait.NamedStruct base_schema = 4;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        4, *this_._impl_.base_schema_, this_._impl_.base_schema_->GetCachedSize(), target,
        stream);
  }

  // .substrait.extensions.AdvancedExtension advanced_extensions = 5;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        5, *this_._impl_.advanced_extensions_, this_._impl_.advanced_extensions_->GetCachedSize(), target,
        stream);
  }

  // repeated string expected_type_urls = 6;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    for (int i = 0, n = this_._internal_expected_type_urls_size(); i < n; ++i) {
      const auto& s = this_._internal_expected_type_urls().Get(i);
      ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
          s.data(), static_cast<int>(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "substrait.ExtendedExpression.expected_type_urls");
      target = stream->WriteString(6, s, target);
    }
  }

  // .substrait.Version version = 7;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        7, *this_._impl_.version_, this_._impl_.version_->GetCachedSize(), target,
        stream);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ExtendedExpression)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ExtendedExpression::ByteSizeLong(const MessageLite& base) {
  const ExtendedExpression& this_ = static_cast<const ExtendedExpression&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ExtendedExpression::ByteSizeLong() const {
  const ExtendedExpression& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:substrait.ExtendedExpression)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void)cached_has_bits;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000007fU)) {
    // repeated .substrait.extensions.SimpleExtensionURI extension_uris = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1UL * this_._internal_extension_uris_size();
      for (const auto& msg : this_._internal_extension_uris()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // repeated .substrait.extensions.SimpleExtensionDeclaration extensions = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1UL * this_._internal_extensions_size();
      for (const auto& msg : this_._internal_extensions()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // repeated .substrait.ExpressionReference referred_expr = 3;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1UL * this_._internal_referred_expr_size();
      for (const auto& msg : this_._internal_referred_expr()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // repeated string expected_type_urls = 6;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size +=
          1 * ::google::protobuf::internal::FromIntSize(this_._internal_expected_type_urls().size());
      for (int i = 0, n = this_._internal_expected_type_urls().size(); i < n; ++i) {
        total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
            this_._internal_expected_type_urls().Get(i));
      }
    }
    // .substrait.NamedStruct base_schema = 4;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.base_schema_);
    }
    // .substrait.extensions.AdvancedExtension advanced_extensions = 5;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.advanced_extensions_);
    }
    // .substrait.Version version = 7;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.version_);
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ExtendedExpression::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ExtendedExpression*>(&to_msg);
  auto& from = static_cast<const ExtendedExpression&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:substrait.ExtendedExpression)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000007fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_extension_uris()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_extension_uris());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_extensions()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_extensions());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_mutable_referred_expr()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_referred_expr());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_internal_mutable_expected_type_urls()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_expected_type_urls());
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(from._impl_.base_schema_ != nullptr);
      if (_this->_impl_.base_schema_ == nullptr) {
        _this->_impl_.base_schema_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.base_schema_);
      } else {
        _this->_impl_.base_schema_->MergeFrom(*from._impl_.base_schema_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(from._impl_.advanced_extensions_ != nullptr);
      if (_this->_impl_.advanced_extensions_ == nullptr) {
        _this->_impl_.advanced_extensions_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.advanced_extensions_);
      } else {
        _this->_impl_.advanced_extensions_->MergeFrom(*from._impl_.advanced_extensions_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(from._impl_.version_ != nullptr);
      if (_this->_impl_.version_ == nullptr) {
        _this->_impl_.version_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.version_);
      } else {
        _this->_impl_.version_->MergeFrom(*from._impl_.version_);
      }
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

void ExtendedExpression::CopyFrom(const ExtendedExpression& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:substrait.ExtendedExpression)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}


void ExtendedExpression::InternalSwap(ExtendedExpression* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.extension_uris_.InternalSwap(&other->_impl_.extension_uris_);
  _impl_.extensions_.InternalSwap(&other->_impl_.extensions_);
  _impl_.referred_expr_.InternalSwap(&other->_impl_.referred_expr_);
  _impl_.expected_type_urls_.InternalSwap(&other->_impl_.expected_type_urls_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.version_)
      + sizeof(ExtendedExpression::_impl_.version_)
      - PROTOBUF_FIELD_OFFSET(ExtendedExpression, _impl_.base_schema_)>(
          reinterpret_cast<char*>(&_impl_.base_schema_),
          reinterpret_cast<char*>(&other->_impl_.base_schema_));
}

::google::protobuf::Metadata ExtendedExpression::GetMetadata() const {
  return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
}
// @@protoc_insertion_point(namespace_scope)
}  // namespace substrait
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google
// @@protoc_insertion_point(global_scope)
PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::std::false_type
    _static_init2_ [[maybe_unused]] =
        (::_pbi::AddDescriptors(&descriptor_table_substrait_2fextended_5fexpression_2eproto),
         ::std::false_type{});
#include "google/protobuf/port_undef.inc"
