// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: substrait/parameterized_types.proto

#include "substrait/parameterized_types.pb.h"

#include <algorithm>

#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/extension_set.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)
#include <google/protobuf/port_def.inc>

PROTOBUF_PRAGMA_INIT_SEG
namespace substrait {
constexpr ParameterizedType_TypeParameter::ParameterizedType_TypeParameter(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : bounds_()
  , name_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string){}
struct ParameterizedType_TypeParameterDefaultTypeInternal {
  constexpr ParameterizedType_TypeParameterDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParameterizedType_TypeParameterDefaultTypeInternal() {}
  union {
    ParameterizedType_TypeParameter _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParameterizedType_TypeParameterDefaultTypeInternal _ParameterizedType_TypeParameter_default_instance_;
constexpr ParameterizedType_IntegerParameter::ParameterizedType_IntegerParameter(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : name_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , range_start_inclusive_(nullptr)
  , range_end_exclusive_(nullptr){}
struct ParameterizedType_IntegerParameterDefaultTypeInternal {
  constexpr ParameterizedType_IntegerParameterDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParameterizedType_IntegerParameterDefaultTypeInternal() {}
  union {
    ParameterizedType_IntegerParameter _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParameterizedType_IntegerParameterDefaultTypeInternal _ParameterizedType_IntegerParameter_default_instance_;
constexpr ParameterizedType_NullableInteger::ParameterizedType_NullableInteger(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : value_(int64_t{0}){}
struct ParameterizedType_NullableIntegerDefaultTypeInternal {
  constexpr ParameterizedType_NullableIntegerDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParameterizedType_NullableIntegerDefaultTypeInternal() {}
  union {
    ParameterizedType_NullableInteger _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParameterizedType_NullableIntegerDefaultTypeInternal _ParameterizedType_NullableInteger_default_instance_;
constexpr ParameterizedType_ParameterizedFixedChar::ParameterizedType_ParameterizedFixedChar(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : length_(nullptr)
  , variation_pointer_(0u)
  , nullability_(0)
{}
struct ParameterizedType_ParameterizedFixedCharDefaultTypeInternal {
  constexpr ParameterizedType_ParameterizedFixedCharDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParameterizedType_ParameterizedFixedCharDefaultTypeInternal() {}
  union {
    ParameterizedType_ParameterizedFixedChar _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParameterizedType_ParameterizedFixedCharDefaultTypeInternal _ParameterizedType_ParameterizedFixedChar_default_instance_;
constexpr ParameterizedType_ParameterizedVarChar::ParameterizedType_ParameterizedVarChar(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : length_(nullptr)
  , variation_pointer_(0u)
  , nullability_(0)
{}
struct ParameterizedType_ParameterizedVarCharDefaultTypeInternal {
  constexpr ParameterizedType_ParameterizedVarCharDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParameterizedType_ParameterizedVarCharDefaultTypeInternal() {}
  union {
    ParameterizedType_ParameterizedVarChar _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParameterizedType_ParameterizedVarCharDefaultTypeInternal _ParameterizedType_ParameterizedVarChar_default_instance_;
constexpr ParameterizedType_ParameterizedFixedBinary::ParameterizedType_ParameterizedFixedBinary(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : length_(nullptr)
  , variation_pointer_(0u)
  , nullability_(0)
{}
struct ParameterizedType_ParameterizedFixedBinaryDefaultTypeInternal {
  constexpr ParameterizedType_ParameterizedFixedBinaryDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParameterizedType_ParameterizedFixedBinaryDefaultTypeInternal() {}
  union {
    ParameterizedType_ParameterizedFixedBinary _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParameterizedType_ParameterizedFixedBinaryDefaultTypeInternal _ParameterizedType_ParameterizedFixedBinary_default_instance_;
constexpr ParameterizedType_ParameterizedDecimal::ParameterizedType_ParameterizedDecimal(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : scale_(nullptr)
  , precision_(nullptr)
  , variation_pointer_(0u)
  , nullability_(0)
{}
struct ParameterizedType_ParameterizedDecimalDefaultTypeInternal {
  constexpr ParameterizedType_ParameterizedDecimalDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParameterizedType_ParameterizedDecimalDefaultTypeInternal() {}
  union {
    ParameterizedType_ParameterizedDecimal _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParameterizedType_ParameterizedDecimalDefaultTypeInternal _ParameterizedType_ParameterizedDecimal_default_instance_;
constexpr ParameterizedType_ParameterizedStruct::ParameterizedType_ParameterizedStruct(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : types_()
  , variation_pointer_(0u)
  , nullability_(0)
{}
struct ParameterizedType_ParameterizedStructDefaultTypeInternal {
  constexpr ParameterizedType_ParameterizedStructDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParameterizedType_ParameterizedStructDefaultTypeInternal() {}
  union {
    ParameterizedType_ParameterizedStruct _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParameterizedType_ParameterizedStructDefaultTypeInternal _ParameterizedType_ParameterizedStruct_default_instance_;
constexpr ParameterizedType_ParameterizedNamedStruct::ParameterizedType_ParameterizedNamedStruct(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : names_()
  , struct__(nullptr){}
struct ParameterizedType_ParameterizedNamedStructDefaultTypeInternal {
  constexpr ParameterizedType_ParameterizedNamedStructDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParameterizedType_ParameterizedNamedStructDefaultTypeInternal() {}
  union {
    ParameterizedType_ParameterizedNamedStruct _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParameterizedType_ParameterizedNamedStructDefaultTypeInternal _ParameterizedType_ParameterizedNamedStruct_default_instance_;
constexpr ParameterizedType_ParameterizedList::ParameterizedType_ParameterizedList(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : type_(nullptr)
  , variation_pointer_(0u)
  , nullability_(0)
{}
struct ParameterizedType_ParameterizedListDefaultTypeInternal {
  constexpr ParameterizedType_ParameterizedListDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParameterizedType_ParameterizedListDefaultTypeInternal() {}
  union {
    ParameterizedType_ParameterizedList _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParameterizedType_ParameterizedListDefaultTypeInternal _ParameterizedType_ParameterizedList_default_instance_;
constexpr ParameterizedType_ParameterizedMap::ParameterizedType_ParameterizedMap(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : key_(nullptr)
  , value_(nullptr)
  , variation_pointer_(0u)
  , nullability_(0)
{}
struct ParameterizedType_ParameterizedMapDefaultTypeInternal {
  constexpr ParameterizedType_ParameterizedMapDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParameterizedType_ParameterizedMapDefaultTypeInternal() {}
  union {
    ParameterizedType_ParameterizedMap _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParameterizedType_ParameterizedMapDefaultTypeInternal _ParameterizedType_ParameterizedMap_default_instance_;
constexpr ParameterizedType_IntegerOption::ParameterizedType_IntegerOption(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : _oneof_case_{}{}
struct ParameterizedType_IntegerOptionDefaultTypeInternal {
  constexpr ParameterizedType_IntegerOptionDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParameterizedType_IntegerOptionDefaultTypeInternal() {}
  union {
    ParameterizedType_IntegerOption _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParameterizedType_IntegerOptionDefaultTypeInternal _ParameterizedType_IntegerOption_default_instance_;
constexpr ParameterizedType::ParameterizedType(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : _oneof_case_{}{}
struct ParameterizedTypeDefaultTypeInternal {
  constexpr ParameterizedTypeDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParameterizedTypeDefaultTypeInternal() {}
  union {
    ParameterizedType _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParameterizedTypeDefaultTypeInternal _ParameterizedType_default_instance_;
}  // namespace substrait
static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[13];
static constexpr ::PROTOBUF_NAMESPACE_ID::EnumDescriptor const** file_level_enum_descriptors_substrait_2fparameterized_5ftypes_2eproto = nullptr;
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_substrait_2fparameterized_5ftypes_2eproto = nullptr;

const uint32_t TableStruct_substrait_2fparameterized_5ftypes_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_TypeParameter, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_TypeParameter, name_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_TypeParameter, bounds_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_IntegerParameter, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_IntegerParameter, name_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_IntegerParameter, range_start_inclusive_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_IntegerParameter, range_end_exclusive_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_NullableInteger, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_NullableInteger, value_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedFixedChar, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedFixedChar, length_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedFixedChar, variation_pointer_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedFixedChar, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedVarChar, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedVarChar, length_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedVarChar, variation_pointer_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedVarChar, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedFixedBinary, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedFixedBinary, length_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedFixedBinary, variation_pointer_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedFixedBinary, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedDecimal, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedDecimal, scale_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedDecimal, precision_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedDecimal, variation_pointer_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedDecimal, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedStruct, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedStruct, types_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedStruct, variation_pointer_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedStruct, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedNamedStruct, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedNamedStruct, names_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedNamedStruct, struct__),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedList, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedList, type_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedList, variation_pointer_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedList, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedMap, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedMap, key_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedMap, value_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedMap, variation_pointer_),
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_ParameterizedMap, nullability_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_IntegerOption, _internal_metadata_),
  ~0u,  // no _extensions_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_IntegerOption, _oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType_IntegerOption, integer_type_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType, _internal_metadata_),
  ~0u,  // no _extensions_
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType, _oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  PROTOBUF_FIELD_OFFSET(::substrait::ParameterizedType, kind_),
};
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, -1, sizeof(::substrait::ParameterizedType_TypeParameter)},
  { 8, -1, -1, sizeof(::substrait::ParameterizedType_IntegerParameter)},
  { 17, -1, -1, sizeof(::substrait::ParameterizedType_NullableInteger)},
  { 24, -1, -1, sizeof(::substrait::ParameterizedType_ParameterizedFixedChar)},
  { 33, -1, -1, sizeof(::substrait::ParameterizedType_ParameterizedVarChar)},
  { 42, -1, -1, sizeof(::substrait::ParameterizedType_ParameterizedFixedBinary)},
  { 51, -1, -1, sizeof(::substrait::ParameterizedType_ParameterizedDecimal)},
  { 61, -1, -1, sizeof(::substrait::ParameterizedType_ParameterizedStruct)},
  { 70, -1, -1, sizeof(::substrait::ParameterizedType_ParameterizedNamedStruct)},
  { 78, -1, -1, sizeof(::substrait::ParameterizedType_ParameterizedList)},
  { 87, -1, -1, sizeof(::substrait::ParameterizedType_ParameterizedMap)},
  { 97, -1, -1, sizeof(::substrait::ParameterizedType_IntegerOption)},
  { 106, -1, -1, sizeof(::substrait::ParameterizedType)},
};

static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_ParameterizedType_TypeParameter_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_ParameterizedType_IntegerParameter_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_ParameterizedType_NullableInteger_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_ParameterizedType_ParameterizedFixedChar_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_ParameterizedType_ParameterizedVarChar_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_ParameterizedType_ParameterizedFixedBinary_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_ParameterizedType_ParameterizedDecimal_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_ParameterizedType_ParameterizedStruct_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_ParameterizedType_ParameterizedNamedStruct_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_ParameterizedType_ParameterizedList_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_ParameterizedType_ParameterizedMap_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_ParameterizedType_IntegerOption_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::substrait::_ParameterizedType_default_instance_),
};

const char descriptor_table_protodef_substrait_2fparameterized_5ftypes_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n#substrait/parameterized_types.proto\022\ts"
  "ubstrait\032\024substrait/type.proto\"\226\034\n\021Param"
  "eterizedType\022-\n\004bool\030\001 \001(\0132\027.substrait.T"
  "ype.BooleanH\000R\004bool\022$\n\002i8\030\002 \001(\0132\022.substr"
  "ait.Type.I8H\000R\002i8\022\'\n\003i16\030\003 \001(\0132\023.substra"
  "it.Type.I16H\000R\003i16\022\'\n\003i32\030\005 \001(\0132\023.substr"
  "ait.Type.I32H\000R\003i32\022\'\n\003i64\030\007 \001(\0132\023.subst"
  "rait.Type.I64H\000R\003i64\022*\n\004fp32\030\n \001(\0132\024.sub"
  "strait.Type.FP32H\000R\004fp32\022*\n\004fp64\030\013 \001(\0132\024"
  ".substrait.Type.FP64H\000R\004fp64\0220\n\006string\030\014"
  " \001(\0132\026.substrait.Type.StringH\000R\006string\0220"
  "\n\006binary\030\r \001(\0132\026.substrait.Type.BinaryH\000"
  "R\006binary\0229\n\ttimestamp\030\016 \001(\0132\031.substrait."
  "Type.TimestampH\000R\ttimestamp\022*\n\004date\030\020 \001("
  "\0132\024.substrait.Type.DateH\000R\004date\022*\n\004time\030"
  "\021 \001(\0132\024.substrait.Type.TimeH\000R\004time\022C\n\ri"
  "nterval_year\030\023 \001(\0132\034.substrait.Type.Inte"
  "rvalYearH\000R\014intervalYear\022@\n\014interval_day"
  "\030\024 \001(\0132\033.substrait.Type.IntervalDayH\000R\013i"
  "ntervalDay\022@\n\014timestamp_tz\030\035 \001(\0132\033.subst"
  "rait.Type.TimestampTZH\000R\013timestampTz\022*\n\004"
  "uuid\030  \001(\0132\024.substrait.Type.UUIDH\000R\004uuid"
  "\022T\n\nfixed_char\030\025 \001(\01323.substrait.Paramet"
  "erizedType.ParameterizedFixedCharH\000R\tfix"
  "edChar\022M\n\007varchar\030\026 \001(\01321.substrait.Para"
  "meterizedType.ParameterizedVarCharH\000R\007va"
  "rchar\022Z\n\014fixed_binary\030\027 \001(\01325.substrait."
  "ParameterizedType.ParameterizedFixedBina"
  "ryH\000R\013fixedBinary\022M\n\007decimal\030\030 \001(\01321.sub"
  "strait.ParameterizedType.ParameterizedDe"
  "cimalH\000R\007decimal\022J\n\006struct\030\031 \001(\01320.subst"
  "rait.ParameterizedType.ParameterizedStru"
  "ctH\000R\006struct\022D\n\004list\030\033 \001(\0132..substrait.P"
  "arameterizedType.ParameterizedListH\000R\004li"
  "st\022A\n\003map\030\034 \001(\0132-.substrait.Parameterize"
  "dType.ParameterizedMapH\000R\003map\0222\n\024user_de"
  "fined_pointer\030\037 \001(\rH\000R\022userDefinedPointe"
  "r\022S\n\016type_parameter\030! \001(\0132*.substrait.Pa"
  "rameterizedType.TypeParameterH\000R\rtypePar"
  "ameter\032Y\n\rTypeParameter\022\022\n\004name\030\001 \001(\tR\004n"
  "ame\0224\n\006bounds\030\002 \003(\0132\034.substrait.Paramete"
  "rizedTypeR\006bounds\032\346\001\n\020IntegerParameter\022\022"
  "\n\004name\030\001 \001(\tR\004name\022`\n\025range_start_inclus"
  "ive\030\002 \001(\0132,.substrait.ParameterizedType."
  "NullableIntegerR\023rangeStartInclusive\022\\\n\023"
  "range_end_exclusive\030\003 \001(\0132,.substrait.Pa"
  "rameterizedType.NullableIntegerR\021rangeEn"
  "dExclusive\032\'\n\017NullableInteger\022\024\n\005value\030\001"
  " \001(\003R\005value\032\310\001\n\026ParameterizedFixedChar\022B"
  "\n\006length\030\001 \001(\0132*.substrait.Parameterized"
  "Type.IntegerOptionR\006length\022+\n\021variation_"
  "pointer\030\002 \001(\rR\020variationPointer\022=\n\013nulla"
  "bility\030\003 \001(\0162\033.substrait.Type.Nullabilit"
  "yR\013nullability\032\306\001\n\024ParameterizedVarChar\022"
  "B\n\006length\030\001 \001(\0132*.substrait.Parameterize"
  "dType.IntegerOptionR\006length\022+\n\021variation"
  "_pointer\030\002 \001(\rR\020variationPointer\022=\n\013null"
  "ability\030\003 \001(\0162\033.substrait.Type.Nullabili"
  "tyR\013nullability\032\312\001\n\030ParameterizedFixedBi"
  "nary\022B\n\006length\030\001 \001(\0132*.substrait.Paramet"
  "erizedType.IntegerOptionR\006length\022+\n\021vari"
  "ation_pointer\030\002 \001(\rR\020variationPointer\022=\n"
  "\013nullability\030\003 \001(\0162\033.substrait.Type.Null"
  "abilityR\013nullability\032\216\002\n\024ParameterizedDe"
  "cimal\022@\n\005scale\030\001 \001(\0132*.substrait.Paramet"
  "erizedType.IntegerOptionR\005scale\022H\n\tpreci"
  "sion\030\002 \001(\0132*.substrait.ParameterizedType"
  ".IntegerOptionR\tprecision\022+\n\021variation_p"
  "ointer\030\003 \001(\rR\020variationPointer\022=\n\013nullab"
  "ility\030\004 \001(\0162\033.substrait.Type.Nullability"
  "R\013nullability\032\265\001\n\023ParameterizedStruct\0222\n"
  "\005types\030\001 \003(\0132\034.substrait.ParameterizedTy"
  "peR\005types\022+\n\021variation_pointer\030\002 \001(\rR\020va"
  "riationPointer\022=\n\013nullability\030\003 \001(\0162\033.su"
  "bstrait.Type.NullabilityR\013nullability\032z\n"
  "\030ParameterizedNamedStruct\022\024\n\005names\030\001 \003(\t"
  "R\005names\022H\n\006struct\030\002 \001(\01320.substrait.Para"
  "meterizedType.ParameterizedStructR\006struc"
  "t\032\261\001\n\021ParameterizedList\0220\n\004type\030\001 \001(\0132\034."
  "substrait.ParameterizedTypeR\004type\022+\n\021var"
  "iation_pointer\030\002 \001(\rR\020variationPointer\022="
  "\n\013nullability\030\003 \001(\0162\033.substrait.Type.Nul"
  "labilityR\013nullability\032\342\001\n\020ParameterizedM"
  "ap\022.\n\003key\030\001 \001(\0132\034.substrait.Parameterize"
  "dTypeR\003key\0222\n\005value\030\002 \001(\0132\034.substrait.Pa"
  "rameterizedTypeR\005value\022+\n\021variation_poin"
  "ter\030\003 \001(\rR\020variationPointer\022=\n\013nullabili"
  "ty\030\004 \001(\0162\033.substrait.Type.NullabilityR\013n"
  "ullability\032\212\001\n\rIntegerOption\022\032\n\007literal\030"
  "\001 \001(\005H\000R\007literal\022M\n\tparameter\030\002 \001(\0132-.su"
  "bstrait.ParameterizedType.IntegerParamet"
  "erH\000R\tparameterB\016\n\014integer_typeB\006\n\004kindB"
  "+\n\022io.substrait.protoP\001\252\002\022Substrait.Prot"
  "obufb\006proto3"
  ;
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_substrait_2fparameterized_5ftypes_2eproto_deps[1] = {
  &::descriptor_table_substrait_2ftype_2eproto,
};
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_substrait_2fparameterized_5ftypes_2eproto = {
  false, false, 3732, descriptor_table_protodef_substrait_2fparameterized_5ftypes_2eproto, "substrait/parameterized_types.proto", 
  &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once, descriptor_table_substrait_2fparameterized_5ftypes_2eproto_deps, 1, 13,
  schemas, file_default_instances, TableStruct_substrait_2fparameterized_5ftypes_2eproto::offsets,
  file_level_metadata_substrait_2fparameterized_5ftypes_2eproto, file_level_enum_descriptors_substrait_2fparameterized_5ftypes_2eproto, file_level_service_descriptors_substrait_2fparameterized_5ftypes_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable* descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter() {
  return &descriptor_table_substrait_2fparameterized_5ftypes_2eproto;
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY static ::PROTOBUF_NAMESPACE_ID::internal::AddDescriptorsRunner dynamic_init_dummy_substrait_2fparameterized_5ftypes_2eproto(&descriptor_table_substrait_2fparameterized_5ftypes_2eproto);
namespace substrait {

// ===================================================================

class ParameterizedType_TypeParameter::_Internal {
 public:
};

ParameterizedType_TypeParameter::ParameterizedType_TypeParameter(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  bounds_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.ParameterizedType.TypeParameter)
}
ParameterizedType_TypeParameter::ParameterizedType_TypeParameter(const ParameterizedType_TypeParameter& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      bounds_(from.bounds_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), 
      GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:substrait.ParameterizedType.TypeParameter)
}

inline void ParameterizedType_TypeParameter::SharedCtor() {
name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

ParameterizedType_TypeParameter::~ParameterizedType_TypeParameter() {
  // @@protoc_insertion_point(destructor:substrait.ParameterizedType.TypeParameter)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParameterizedType_TypeParameter::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

void ParameterizedType_TypeParameter::ArenaDtor(void* object) {
  ParameterizedType_TypeParameter* _this = reinterpret_cast< ParameterizedType_TypeParameter* >(object);
  (void)_this;
}
void ParameterizedType_TypeParameter::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParameterizedType_TypeParameter::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParameterizedType_TypeParameter::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ParameterizedType.TypeParameter)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  bounds_.Clear();
  name_.ClearToEmpty();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParameterizedType_TypeParameter::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string name = 1 [json_name = "name"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "substrait.ParameterizedType.TypeParameter.name"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .substrait.ParameterizedType bounds = 2 [json_name = "bounds"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_bounds(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ParameterizedType_TypeParameter::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ParameterizedType.TypeParameter)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string name = 1 [json_name = "name"];
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "substrait.ParameterizedType.TypeParameter.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // repeated .substrait.ParameterizedType bounds = 2 [json_name = "bounds"];
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_bounds_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, this->_internal_bounds(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ParameterizedType.TypeParameter)
  return target;
}

size_t ParameterizedType_TypeParameter::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.ParameterizedType.TypeParameter)
  size_t total_size = 0;

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

  // repeated .substrait.ParameterizedType bounds = 2 [json_name = "bounds"];
  total_size += 1UL * this->_internal_bounds_size();
  for (const auto& msg : this->bounds_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // string name = 1 [json_name = "name"];
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParameterizedType_TypeParameter::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParameterizedType_TypeParameter::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParameterizedType_TypeParameter::GetClassData() const { return &_class_data_; }

void ParameterizedType_TypeParameter::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParameterizedType_TypeParameter *>(to)->MergeFrom(
      static_cast<const ParameterizedType_TypeParameter &>(from));
}


void ParameterizedType_TypeParameter::MergeFrom(const ParameterizedType_TypeParameter& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.ParameterizedType.TypeParameter)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  bounds_.MergeFrom(from.bounds_);
  if (!from._internal_name().empty()) {
    _internal_set_name(from._internal_name());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ParameterizedType_TypeParameter::IsInitialized() const {
  return true;
}

void ParameterizedType_TypeParameter::InternalSwap(ParameterizedType_TypeParameter* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  bounds_.InternalSwap(&other->bounds_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata ParameterizedType_TypeParameter::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter, &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once,
      file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[0]);
}

// ===================================================================

class ParameterizedType_IntegerParameter::_Internal {
 public:
  static const ::substrait::ParameterizedType_NullableInteger& range_start_inclusive(const ParameterizedType_IntegerParameter* msg);
  static const ::substrait::ParameterizedType_NullableInteger& range_end_exclusive(const ParameterizedType_IntegerParameter* msg);
};

const ::substrait::ParameterizedType_NullableInteger&
ParameterizedType_IntegerParameter::_Internal::range_start_inclusive(const ParameterizedType_IntegerParameter* msg) {
  return *msg->range_start_inclusive_;
}
const ::substrait::ParameterizedType_NullableInteger&
ParameterizedType_IntegerParameter::_Internal::range_end_exclusive(const ParameterizedType_IntegerParameter* msg) {
  return *msg->range_end_exclusive_;
}
ParameterizedType_IntegerParameter::ParameterizedType_IntegerParameter(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.ParameterizedType.IntegerParameter)
}
ParameterizedType_IntegerParameter::ParameterizedType_IntegerParameter(const ParameterizedType_IntegerParameter& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_range_start_inclusive()) {
    range_start_inclusive_ = new ::substrait::ParameterizedType_NullableInteger(*from.range_start_inclusive_);
  } else {
    range_start_inclusive_ = nullptr;
  }
  if (from._internal_has_range_end_exclusive()) {
    range_end_exclusive_ = new ::substrait::ParameterizedType_NullableInteger(*from.range_end_exclusive_);
  } else {
    range_end_exclusive_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:substrait.ParameterizedType.IntegerParameter)
}

inline void ParameterizedType_IntegerParameter::SharedCtor() {
name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&range_start_inclusive_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&range_end_exclusive_) -
    reinterpret_cast<char*>(&range_start_inclusive_)) + sizeof(range_end_exclusive_));
}

ParameterizedType_IntegerParameter::~ParameterizedType_IntegerParameter() {
  // @@protoc_insertion_point(destructor:substrait.ParameterizedType.IntegerParameter)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParameterizedType_IntegerParameter::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete range_start_inclusive_;
  if (this != internal_default_instance()) delete range_end_exclusive_;
}

void ParameterizedType_IntegerParameter::ArenaDtor(void* object) {
  ParameterizedType_IntegerParameter* _this = reinterpret_cast< ParameterizedType_IntegerParameter* >(object);
  (void)_this;
}
void ParameterizedType_IntegerParameter::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParameterizedType_IntegerParameter::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParameterizedType_IntegerParameter::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ParameterizedType.IntegerParameter)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  name_.ClearToEmpty();
  if (GetArenaForAllocation() == nullptr && range_start_inclusive_ != nullptr) {
    delete range_start_inclusive_;
  }
  range_start_inclusive_ = nullptr;
  if (GetArenaForAllocation() == nullptr && range_end_exclusive_ != nullptr) {
    delete range_end_exclusive_;
  }
  range_end_exclusive_ = nullptr;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParameterizedType_IntegerParameter::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string name = 1 [json_name = "name"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "substrait.ParameterizedType.IntegerParameter.name"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType.NullableInteger range_start_inclusive = 2 [json_name = "rangeStartInclusive"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_range_start_inclusive(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType.NullableInteger range_end_exclusive = 3 [json_name = "rangeEndExclusive"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_range_end_exclusive(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ParameterizedType_IntegerParameter::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ParameterizedType.IntegerParameter)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string name = 1 [json_name = "name"];
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "substrait.ParameterizedType.IntegerParameter.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // .substrait.ParameterizedType.NullableInteger range_start_inclusive = 2 [json_name = "rangeStartInclusive"];
  if (this->_internal_has_range_start_inclusive()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::range_start_inclusive(this), target, stream);
  }

  // .substrait.ParameterizedType.NullableInteger range_end_exclusive = 3 [json_name = "rangeEndExclusive"];
  if (this->_internal_has_range_end_exclusive()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        3, _Internal::range_end_exclusive(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ParameterizedType.IntegerParameter)
  return target;
}

size_t ParameterizedType_IntegerParameter::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.ParameterizedType.IntegerParameter)
  size_t total_size = 0;

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

  // string name = 1 [json_name = "name"];
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // .substrait.ParameterizedType.NullableInteger range_start_inclusive = 2 [json_name = "rangeStartInclusive"];
  if (this->_internal_has_range_start_inclusive()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *range_start_inclusive_);
  }

  // .substrait.ParameterizedType.NullableInteger range_end_exclusive = 3 [json_name = "rangeEndExclusive"];
  if (this->_internal_has_range_end_exclusive()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *range_end_exclusive_);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParameterizedType_IntegerParameter::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParameterizedType_IntegerParameter::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParameterizedType_IntegerParameter::GetClassData() const { return &_class_data_; }

void ParameterizedType_IntegerParameter::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParameterizedType_IntegerParameter *>(to)->MergeFrom(
      static_cast<const ParameterizedType_IntegerParameter &>(from));
}


void ParameterizedType_IntegerParameter::MergeFrom(const ParameterizedType_IntegerParameter& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.ParameterizedType.IntegerParameter)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_name().empty()) {
    _internal_set_name(from._internal_name());
  }
  if (from._internal_has_range_start_inclusive()) {
    _internal_mutable_range_start_inclusive()->::substrait::ParameterizedType_NullableInteger::MergeFrom(from._internal_range_start_inclusive());
  }
  if (from._internal_has_range_end_exclusive()) {
    _internal_mutable_range_end_exclusive()->::substrait::ParameterizedType_NullableInteger::MergeFrom(from._internal_range_end_exclusive());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ParameterizedType_IntegerParameter::IsInitialized() const {
  return true;
}

void ParameterizedType_IntegerParameter::InternalSwap(ParameterizedType_IntegerParameter* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ParameterizedType_IntegerParameter, range_end_exclusive_)
      + sizeof(ParameterizedType_IntegerParameter::range_end_exclusive_)
      - PROTOBUF_FIELD_OFFSET(ParameterizedType_IntegerParameter, range_start_inclusive_)>(
          reinterpret_cast<char*>(&range_start_inclusive_),
          reinterpret_cast<char*>(&other->range_start_inclusive_));
}

::PROTOBUF_NAMESPACE_ID::Metadata ParameterizedType_IntegerParameter::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter, &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once,
      file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[1]);
}

// ===================================================================

class ParameterizedType_NullableInteger::_Internal {
 public:
};

ParameterizedType_NullableInteger::ParameterizedType_NullableInteger(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.ParameterizedType.NullableInteger)
}
ParameterizedType_NullableInteger::ParameterizedType_NullableInteger(const ParameterizedType_NullableInteger& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  value_ = from.value_;
  // @@protoc_insertion_point(copy_constructor:substrait.ParameterizedType.NullableInteger)
}

inline void ParameterizedType_NullableInteger::SharedCtor() {
value_ = int64_t{0};
}

ParameterizedType_NullableInteger::~ParameterizedType_NullableInteger() {
  // @@protoc_insertion_point(destructor:substrait.ParameterizedType.NullableInteger)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParameterizedType_NullableInteger::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void ParameterizedType_NullableInteger::ArenaDtor(void* object) {
  ParameterizedType_NullableInteger* _this = reinterpret_cast< ParameterizedType_NullableInteger* >(object);
  (void)_this;
}
void ParameterizedType_NullableInteger::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParameterizedType_NullableInteger::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParameterizedType_NullableInteger::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ParameterizedType.NullableInteger)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  value_ = int64_t{0};
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParameterizedType_NullableInteger::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int64 value = 1 [json_name = "value"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          value_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ParameterizedType_NullableInteger::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ParameterizedType.NullableInteger)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 value = 1 [json_name = "value"];
  if (this->_internal_value() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(1, this->_internal_value(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ParameterizedType.NullableInteger)
  return target;
}

size_t ParameterizedType_NullableInteger::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.ParameterizedType.NullableInteger)
  size_t total_size = 0;

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

  // int64 value = 1 [json_name = "value"];
  if (this->_internal_value() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_value());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParameterizedType_NullableInteger::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParameterizedType_NullableInteger::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParameterizedType_NullableInteger::GetClassData() const { return &_class_data_; }

void ParameterizedType_NullableInteger::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParameterizedType_NullableInteger *>(to)->MergeFrom(
      static_cast<const ParameterizedType_NullableInteger &>(from));
}


void ParameterizedType_NullableInteger::MergeFrom(const ParameterizedType_NullableInteger& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.ParameterizedType.NullableInteger)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_value() != 0) {
    _internal_set_value(from._internal_value());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ParameterizedType_NullableInteger::IsInitialized() const {
  return true;
}

void ParameterizedType_NullableInteger::InternalSwap(ParameterizedType_NullableInteger* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(value_, other->value_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ParameterizedType_NullableInteger::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter, &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once,
      file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[2]);
}

// ===================================================================

class ParameterizedType_ParameterizedFixedChar::_Internal {
 public:
  static const ::substrait::ParameterizedType_IntegerOption& length(const ParameterizedType_ParameterizedFixedChar* msg);
};

const ::substrait::ParameterizedType_IntegerOption&
ParameterizedType_ParameterizedFixedChar::_Internal::length(const ParameterizedType_ParameterizedFixedChar* msg) {
  return *msg->length_;
}
ParameterizedType_ParameterizedFixedChar::ParameterizedType_ParameterizedFixedChar(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.ParameterizedType.ParameterizedFixedChar)
}
ParameterizedType_ParameterizedFixedChar::ParameterizedType_ParameterizedFixedChar(const ParameterizedType_ParameterizedFixedChar& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_length()) {
    length_ = new ::substrait::ParameterizedType_IntegerOption(*from.length_);
  } else {
    length_ = nullptr;
  }
  ::memcpy(&variation_pointer_, &from.variation_pointer_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.ParameterizedType.ParameterizedFixedChar)
}

inline void ParameterizedType_ParameterizedFixedChar::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&length_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&length_)) + sizeof(nullability_));
}

ParameterizedType_ParameterizedFixedChar::~ParameterizedType_ParameterizedFixedChar() {
  // @@protoc_insertion_point(destructor:substrait.ParameterizedType.ParameterizedFixedChar)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParameterizedType_ParameterizedFixedChar::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete length_;
}

void ParameterizedType_ParameterizedFixedChar::ArenaDtor(void* object) {
  ParameterizedType_ParameterizedFixedChar* _this = reinterpret_cast< ParameterizedType_ParameterizedFixedChar* >(object);
  (void)_this;
}
void ParameterizedType_ParameterizedFixedChar::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParameterizedType_ParameterizedFixedChar::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParameterizedType_ParameterizedFixedChar::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ParameterizedType.ParameterizedFixedChar)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaForAllocation() == nullptr && length_ != nullptr) {
    delete length_;
  }
  length_ = nullptr;
  ::memset(&variation_pointer_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParameterizedType_ParameterizedFixedChar::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_length(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 variation_pointer = 2 [json_name = "variationPointer"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          variation_pointer_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ParameterizedType_ParameterizedFixedChar::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ParameterizedType.ParameterizedFixedChar)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
  if (this->_internal_has_length()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::length(this), target, stream);
  }

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_variation_pointer(), target);
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      3, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ParameterizedType.ParameterizedFixedChar)
  return target;
}

size_t ParameterizedType_ParameterizedFixedChar::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.ParameterizedType.ParameterizedFixedChar)
  size_t total_size = 0;

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

  // .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
  if (this->_internal_has_length()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *length_);
  }

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_variation_pointer());
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParameterizedType_ParameterizedFixedChar::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParameterizedType_ParameterizedFixedChar::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParameterizedType_ParameterizedFixedChar::GetClassData() const { return &_class_data_; }

void ParameterizedType_ParameterizedFixedChar::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParameterizedType_ParameterizedFixedChar *>(to)->MergeFrom(
      static_cast<const ParameterizedType_ParameterizedFixedChar &>(from));
}


void ParameterizedType_ParameterizedFixedChar::MergeFrom(const ParameterizedType_ParameterizedFixedChar& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.ParameterizedType.ParameterizedFixedChar)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_length()) {
    _internal_mutable_length()->::substrait::ParameterizedType_IntegerOption::MergeFrom(from._internal_length());
  }
  if (from._internal_variation_pointer() != 0) {
    _internal_set_variation_pointer(from._internal_variation_pointer());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ParameterizedType_ParameterizedFixedChar::IsInitialized() const {
  return true;
}

void ParameterizedType_ParameterizedFixedChar::InternalSwap(ParameterizedType_ParameterizedFixedChar* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedFixedChar, nullability_)
      + sizeof(ParameterizedType_ParameterizedFixedChar::nullability_)
      - PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedFixedChar, length_)>(
          reinterpret_cast<char*>(&length_),
          reinterpret_cast<char*>(&other->length_));
}

::PROTOBUF_NAMESPACE_ID::Metadata ParameterizedType_ParameterizedFixedChar::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter, &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once,
      file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[3]);
}

// ===================================================================

class ParameterizedType_ParameterizedVarChar::_Internal {
 public:
  static const ::substrait::ParameterizedType_IntegerOption& length(const ParameterizedType_ParameterizedVarChar* msg);
};

const ::substrait::ParameterizedType_IntegerOption&
ParameterizedType_ParameterizedVarChar::_Internal::length(const ParameterizedType_ParameterizedVarChar* msg) {
  return *msg->length_;
}
ParameterizedType_ParameterizedVarChar::ParameterizedType_ParameterizedVarChar(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.ParameterizedType.ParameterizedVarChar)
}
ParameterizedType_ParameterizedVarChar::ParameterizedType_ParameterizedVarChar(const ParameterizedType_ParameterizedVarChar& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_length()) {
    length_ = new ::substrait::ParameterizedType_IntegerOption(*from.length_);
  } else {
    length_ = nullptr;
  }
  ::memcpy(&variation_pointer_, &from.variation_pointer_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.ParameterizedType.ParameterizedVarChar)
}

inline void ParameterizedType_ParameterizedVarChar::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&length_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&length_)) + sizeof(nullability_));
}

ParameterizedType_ParameterizedVarChar::~ParameterizedType_ParameterizedVarChar() {
  // @@protoc_insertion_point(destructor:substrait.ParameterizedType.ParameterizedVarChar)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParameterizedType_ParameterizedVarChar::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete length_;
}

void ParameterizedType_ParameterizedVarChar::ArenaDtor(void* object) {
  ParameterizedType_ParameterizedVarChar* _this = reinterpret_cast< ParameterizedType_ParameterizedVarChar* >(object);
  (void)_this;
}
void ParameterizedType_ParameterizedVarChar::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParameterizedType_ParameterizedVarChar::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParameterizedType_ParameterizedVarChar::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ParameterizedType.ParameterizedVarChar)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaForAllocation() == nullptr && length_ != nullptr) {
    delete length_;
  }
  length_ = nullptr;
  ::memset(&variation_pointer_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParameterizedType_ParameterizedVarChar::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_length(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 variation_pointer = 2 [json_name = "variationPointer"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          variation_pointer_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ParameterizedType_ParameterizedVarChar::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ParameterizedType.ParameterizedVarChar)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
  if (this->_internal_has_length()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::length(this), target, stream);
  }

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_variation_pointer(), target);
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      3, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ParameterizedType.ParameterizedVarChar)
  return target;
}

size_t ParameterizedType_ParameterizedVarChar::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.ParameterizedType.ParameterizedVarChar)
  size_t total_size = 0;

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

  // .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
  if (this->_internal_has_length()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *length_);
  }

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_variation_pointer());
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParameterizedType_ParameterizedVarChar::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParameterizedType_ParameterizedVarChar::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParameterizedType_ParameterizedVarChar::GetClassData() const { return &_class_data_; }

void ParameterizedType_ParameterizedVarChar::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParameterizedType_ParameterizedVarChar *>(to)->MergeFrom(
      static_cast<const ParameterizedType_ParameterizedVarChar &>(from));
}


void ParameterizedType_ParameterizedVarChar::MergeFrom(const ParameterizedType_ParameterizedVarChar& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.ParameterizedType.ParameterizedVarChar)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_length()) {
    _internal_mutable_length()->::substrait::ParameterizedType_IntegerOption::MergeFrom(from._internal_length());
  }
  if (from._internal_variation_pointer() != 0) {
    _internal_set_variation_pointer(from._internal_variation_pointer());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ParameterizedType_ParameterizedVarChar::IsInitialized() const {
  return true;
}

void ParameterizedType_ParameterizedVarChar::InternalSwap(ParameterizedType_ParameterizedVarChar* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedVarChar, nullability_)
      + sizeof(ParameterizedType_ParameterizedVarChar::nullability_)
      - PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedVarChar, length_)>(
          reinterpret_cast<char*>(&length_),
          reinterpret_cast<char*>(&other->length_));
}

::PROTOBUF_NAMESPACE_ID::Metadata ParameterizedType_ParameterizedVarChar::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter, &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once,
      file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[4]);
}

// ===================================================================

class ParameterizedType_ParameterizedFixedBinary::_Internal {
 public:
  static const ::substrait::ParameterizedType_IntegerOption& length(const ParameterizedType_ParameterizedFixedBinary* msg);
};

const ::substrait::ParameterizedType_IntegerOption&
ParameterizedType_ParameterizedFixedBinary::_Internal::length(const ParameterizedType_ParameterizedFixedBinary* msg) {
  return *msg->length_;
}
ParameterizedType_ParameterizedFixedBinary::ParameterizedType_ParameterizedFixedBinary(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.ParameterizedType.ParameterizedFixedBinary)
}
ParameterizedType_ParameterizedFixedBinary::ParameterizedType_ParameterizedFixedBinary(const ParameterizedType_ParameterizedFixedBinary& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_length()) {
    length_ = new ::substrait::ParameterizedType_IntegerOption(*from.length_);
  } else {
    length_ = nullptr;
  }
  ::memcpy(&variation_pointer_, &from.variation_pointer_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.ParameterizedType.ParameterizedFixedBinary)
}

inline void ParameterizedType_ParameterizedFixedBinary::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&length_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&length_)) + sizeof(nullability_));
}

ParameterizedType_ParameterizedFixedBinary::~ParameterizedType_ParameterizedFixedBinary() {
  // @@protoc_insertion_point(destructor:substrait.ParameterizedType.ParameterizedFixedBinary)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParameterizedType_ParameterizedFixedBinary::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete length_;
}

void ParameterizedType_ParameterizedFixedBinary::ArenaDtor(void* object) {
  ParameterizedType_ParameterizedFixedBinary* _this = reinterpret_cast< ParameterizedType_ParameterizedFixedBinary* >(object);
  (void)_this;
}
void ParameterizedType_ParameterizedFixedBinary::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParameterizedType_ParameterizedFixedBinary::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParameterizedType_ParameterizedFixedBinary::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ParameterizedType.ParameterizedFixedBinary)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaForAllocation() == nullptr && length_ != nullptr) {
    delete length_;
  }
  length_ = nullptr;
  ::memset(&variation_pointer_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParameterizedType_ParameterizedFixedBinary::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_length(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 variation_pointer = 2 [json_name = "variationPointer"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          variation_pointer_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ParameterizedType_ParameterizedFixedBinary::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ParameterizedType.ParameterizedFixedBinary)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
  if (this->_internal_has_length()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::length(this), target, stream);
  }

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_variation_pointer(), target);
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      3, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ParameterizedType.ParameterizedFixedBinary)
  return target;
}

size_t ParameterizedType_ParameterizedFixedBinary::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.ParameterizedType.ParameterizedFixedBinary)
  size_t total_size = 0;

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

  // .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
  if (this->_internal_has_length()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *length_);
  }

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_variation_pointer());
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParameterizedType_ParameterizedFixedBinary::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParameterizedType_ParameterizedFixedBinary::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParameterizedType_ParameterizedFixedBinary::GetClassData() const { return &_class_data_; }

void ParameterizedType_ParameterizedFixedBinary::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParameterizedType_ParameterizedFixedBinary *>(to)->MergeFrom(
      static_cast<const ParameterizedType_ParameterizedFixedBinary &>(from));
}


void ParameterizedType_ParameterizedFixedBinary::MergeFrom(const ParameterizedType_ParameterizedFixedBinary& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.ParameterizedType.ParameterizedFixedBinary)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_length()) {
    _internal_mutable_length()->::substrait::ParameterizedType_IntegerOption::MergeFrom(from._internal_length());
  }
  if (from._internal_variation_pointer() != 0) {
    _internal_set_variation_pointer(from._internal_variation_pointer());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ParameterizedType_ParameterizedFixedBinary::IsInitialized() const {
  return true;
}

void ParameterizedType_ParameterizedFixedBinary::InternalSwap(ParameterizedType_ParameterizedFixedBinary* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedFixedBinary, nullability_)
      + sizeof(ParameterizedType_ParameterizedFixedBinary::nullability_)
      - PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedFixedBinary, length_)>(
          reinterpret_cast<char*>(&length_),
          reinterpret_cast<char*>(&other->length_));
}

::PROTOBUF_NAMESPACE_ID::Metadata ParameterizedType_ParameterizedFixedBinary::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter, &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once,
      file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[5]);
}

// ===================================================================

class ParameterizedType_ParameterizedDecimal::_Internal {
 public:
  static const ::substrait::ParameterizedType_IntegerOption& scale(const ParameterizedType_ParameterizedDecimal* msg);
  static const ::substrait::ParameterizedType_IntegerOption& precision(const ParameterizedType_ParameterizedDecimal* msg);
};

const ::substrait::ParameterizedType_IntegerOption&
ParameterizedType_ParameterizedDecimal::_Internal::scale(const ParameterizedType_ParameterizedDecimal* msg) {
  return *msg->scale_;
}
const ::substrait::ParameterizedType_IntegerOption&
ParameterizedType_ParameterizedDecimal::_Internal::precision(const ParameterizedType_ParameterizedDecimal* msg) {
  return *msg->precision_;
}
ParameterizedType_ParameterizedDecimal::ParameterizedType_ParameterizedDecimal(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.ParameterizedType.ParameterizedDecimal)
}
ParameterizedType_ParameterizedDecimal::ParameterizedType_ParameterizedDecimal(const ParameterizedType_ParameterizedDecimal& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_scale()) {
    scale_ = new ::substrait::ParameterizedType_IntegerOption(*from.scale_);
  } else {
    scale_ = nullptr;
  }
  if (from._internal_has_precision()) {
    precision_ = new ::substrait::ParameterizedType_IntegerOption(*from.precision_);
  } else {
    precision_ = nullptr;
  }
  ::memcpy(&variation_pointer_, &from.variation_pointer_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.ParameterizedType.ParameterizedDecimal)
}

inline void ParameterizedType_ParameterizedDecimal::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&scale_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&scale_)) + sizeof(nullability_));
}

ParameterizedType_ParameterizedDecimal::~ParameterizedType_ParameterizedDecimal() {
  // @@protoc_insertion_point(destructor:substrait.ParameterizedType.ParameterizedDecimal)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParameterizedType_ParameterizedDecimal::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete scale_;
  if (this != internal_default_instance()) delete precision_;
}

void ParameterizedType_ParameterizedDecimal::ArenaDtor(void* object) {
  ParameterizedType_ParameterizedDecimal* _this = reinterpret_cast< ParameterizedType_ParameterizedDecimal* >(object);
  (void)_this;
}
void ParameterizedType_ParameterizedDecimal::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParameterizedType_ParameterizedDecimal::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParameterizedType_ParameterizedDecimal::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ParameterizedType.ParameterizedDecimal)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaForAllocation() == nullptr && scale_ != nullptr) {
    delete scale_;
  }
  scale_ = nullptr;
  if (GetArenaForAllocation() == nullptr && precision_ != nullptr) {
    delete precision_;
  }
  precision_ = nullptr;
  ::memset(&variation_pointer_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParameterizedType_ParameterizedDecimal::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .substrait.ParameterizedType.IntegerOption scale = 1 [json_name = "scale"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_scale(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType.IntegerOption precision = 2 [json_name = "precision"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_precision(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 variation_pointer = 3 [json_name = "variationPointer"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          variation_pointer_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ParameterizedType_ParameterizedDecimal::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ParameterizedType.ParameterizedDecimal)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .substrait.ParameterizedType.IntegerOption scale = 1 [json_name = "scale"];
  if (this->_internal_has_scale()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::scale(this), target, stream);
  }

  // .substrait.ParameterizedType.IntegerOption precision = 2 [json_name = "precision"];
  if (this->_internal_has_precision()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::precision(this), target, stream);
  }

  // uint32 variation_pointer = 3 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_variation_pointer(), target);
  }

  // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      4, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ParameterizedType.ParameterizedDecimal)
  return target;
}

size_t ParameterizedType_ParameterizedDecimal::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.ParameterizedType.ParameterizedDecimal)
  size_t total_size = 0;

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

  // .substrait.ParameterizedType.IntegerOption scale = 1 [json_name = "scale"];
  if (this->_internal_has_scale()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *scale_);
  }

  // .substrait.ParameterizedType.IntegerOption precision = 2 [json_name = "precision"];
  if (this->_internal_has_precision()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *precision_);
  }

  // uint32 variation_pointer = 3 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_variation_pointer());
  }

  // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParameterizedType_ParameterizedDecimal::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParameterizedType_ParameterizedDecimal::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParameterizedType_ParameterizedDecimal::GetClassData() const { return &_class_data_; }

void ParameterizedType_ParameterizedDecimal::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParameterizedType_ParameterizedDecimal *>(to)->MergeFrom(
      static_cast<const ParameterizedType_ParameterizedDecimal &>(from));
}


void ParameterizedType_ParameterizedDecimal::MergeFrom(const ParameterizedType_ParameterizedDecimal& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.ParameterizedType.ParameterizedDecimal)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_scale()) {
    _internal_mutable_scale()->::substrait::ParameterizedType_IntegerOption::MergeFrom(from._internal_scale());
  }
  if (from._internal_has_precision()) {
    _internal_mutable_precision()->::substrait::ParameterizedType_IntegerOption::MergeFrom(from._internal_precision());
  }
  if (from._internal_variation_pointer() != 0) {
    _internal_set_variation_pointer(from._internal_variation_pointer());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ParameterizedType_ParameterizedDecimal::IsInitialized() const {
  return true;
}

void ParameterizedType_ParameterizedDecimal::InternalSwap(ParameterizedType_ParameterizedDecimal* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedDecimal, nullability_)
      + sizeof(ParameterizedType_ParameterizedDecimal::nullability_)
      - PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedDecimal, scale_)>(
          reinterpret_cast<char*>(&scale_),
          reinterpret_cast<char*>(&other->scale_));
}

::PROTOBUF_NAMESPACE_ID::Metadata ParameterizedType_ParameterizedDecimal::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter, &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once,
      file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[6]);
}

// ===================================================================

class ParameterizedType_ParameterizedStruct::_Internal {
 public:
};

ParameterizedType_ParameterizedStruct::ParameterizedType_ParameterizedStruct(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  types_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.ParameterizedType.ParameterizedStruct)
}
ParameterizedType_ParameterizedStruct::ParameterizedType_ParameterizedStruct(const ParameterizedType_ParameterizedStruct& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      types_(from.types_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&variation_pointer_, &from.variation_pointer_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.ParameterizedType.ParameterizedStruct)
}

inline void ParameterizedType_ParameterizedStruct::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&variation_pointer_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
}

ParameterizedType_ParameterizedStruct::~ParameterizedType_ParameterizedStruct() {
  // @@protoc_insertion_point(destructor:substrait.ParameterizedType.ParameterizedStruct)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParameterizedType_ParameterizedStruct::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void ParameterizedType_ParameterizedStruct::ArenaDtor(void* object) {
  ParameterizedType_ParameterizedStruct* _this = reinterpret_cast< ParameterizedType_ParameterizedStruct* >(object);
  (void)_this;
}
void ParameterizedType_ParameterizedStruct::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParameterizedType_ParameterizedStruct::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParameterizedType_ParameterizedStruct::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ParameterizedType.ParameterizedStruct)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  types_.Clear();
  ::memset(&variation_pointer_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParameterizedType_ParameterizedStruct::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .substrait.ParameterizedType types = 1 [json_name = "types"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_types(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // uint32 variation_pointer = 2 [json_name = "variationPointer"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          variation_pointer_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ParameterizedType_ParameterizedStruct::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ParameterizedType.ParameterizedStruct)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .substrait.ParameterizedType types = 1 [json_name = "types"];
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_types_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, this->_internal_types(i), target, stream);
  }

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_variation_pointer(), target);
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      3, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ParameterizedType.ParameterizedStruct)
  return target;
}

size_t ParameterizedType_ParameterizedStruct::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.ParameterizedType.ParameterizedStruct)
  size_t total_size = 0;

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

  // repeated .substrait.ParameterizedType types = 1 [json_name = "types"];
  total_size += 1UL * this->_internal_types_size();
  for (const auto& msg : this->types_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_variation_pointer());
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParameterizedType_ParameterizedStruct::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParameterizedType_ParameterizedStruct::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParameterizedType_ParameterizedStruct::GetClassData() const { return &_class_data_; }

void ParameterizedType_ParameterizedStruct::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParameterizedType_ParameterizedStruct *>(to)->MergeFrom(
      static_cast<const ParameterizedType_ParameterizedStruct &>(from));
}


void ParameterizedType_ParameterizedStruct::MergeFrom(const ParameterizedType_ParameterizedStruct& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.ParameterizedType.ParameterizedStruct)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  types_.MergeFrom(from.types_);
  if (from._internal_variation_pointer() != 0) {
    _internal_set_variation_pointer(from._internal_variation_pointer());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ParameterizedType_ParameterizedStruct::IsInitialized() const {
  return true;
}

void ParameterizedType_ParameterizedStruct::InternalSwap(ParameterizedType_ParameterizedStruct* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  types_.InternalSwap(&other->types_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedStruct, nullability_)
      + sizeof(ParameterizedType_ParameterizedStruct::nullability_)
      - PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedStruct, variation_pointer_)>(
          reinterpret_cast<char*>(&variation_pointer_),
          reinterpret_cast<char*>(&other->variation_pointer_));
}

::PROTOBUF_NAMESPACE_ID::Metadata ParameterizedType_ParameterizedStruct::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter, &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once,
      file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[7]);
}

// ===================================================================

class ParameterizedType_ParameterizedNamedStruct::_Internal {
 public:
  static const ::substrait::ParameterizedType_ParameterizedStruct& struct_(const ParameterizedType_ParameterizedNamedStruct* msg);
};

const ::substrait::ParameterizedType_ParameterizedStruct&
ParameterizedType_ParameterizedNamedStruct::_Internal::struct_(const ParameterizedType_ParameterizedNamedStruct* msg) {
  return *msg->struct__;
}
ParameterizedType_ParameterizedNamedStruct::ParameterizedType_ParameterizedNamedStruct(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  names_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.ParameterizedType.ParameterizedNamedStruct)
}
ParameterizedType_ParameterizedNamedStruct::ParameterizedType_ParameterizedNamedStruct(const ParameterizedType_ParameterizedNamedStruct& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      names_(from.names_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_struct_()) {
    struct__ = new ::substrait::ParameterizedType_ParameterizedStruct(*from.struct__);
  } else {
    struct__ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:substrait.ParameterizedType.ParameterizedNamedStruct)
}

inline void ParameterizedType_ParameterizedNamedStruct::SharedCtor() {
struct__ = nullptr;
}

ParameterizedType_ParameterizedNamedStruct::~ParameterizedType_ParameterizedNamedStruct() {
  // @@protoc_insertion_point(destructor:substrait.ParameterizedType.ParameterizedNamedStruct)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParameterizedType_ParameterizedNamedStruct::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete struct__;
}

void ParameterizedType_ParameterizedNamedStruct::ArenaDtor(void* object) {
  ParameterizedType_ParameterizedNamedStruct* _this = reinterpret_cast< ParameterizedType_ParameterizedNamedStruct* >(object);
  (void)_this;
}
void ParameterizedType_ParameterizedNamedStruct::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParameterizedType_ParameterizedNamedStruct::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParameterizedType_ParameterizedNamedStruct::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ParameterizedType.ParameterizedNamedStruct)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  names_.Clear();
  if (GetArenaForAllocation() == nullptr && struct__ != nullptr) {
    delete struct__;
  }
  struct__ = nullptr;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParameterizedType_ParameterizedNamedStruct::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated string names = 1 [json_name = "names"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_names();
            ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "substrait.ParameterizedType.ParameterizedNamedStruct.names"));
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType.ParameterizedStruct struct = 2 [json_name = "struct"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_struct_(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ParameterizedType_ParameterizedNamedStruct::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ParameterizedType.ParameterizedNamedStruct)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated string names = 1 [json_name = "names"];
  for (int i = 0, n = this->_internal_names_size(); i < n; i++) {
    const auto& s = this->_internal_names(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "substrait.ParameterizedType.ParameterizedNamedStruct.names");
    target = stream->WriteString(1, s, target);
  }

  // .substrait.ParameterizedType.ParameterizedStruct struct = 2 [json_name = "struct"];
  if (this->_internal_has_struct_()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::struct_(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ParameterizedType.ParameterizedNamedStruct)
  return target;
}

size_t ParameterizedType_ParameterizedNamedStruct::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.ParameterizedType.ParameterizedNamedStruct)
  size_t total_size = 0;

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

  // repeated string names = 1 [json_name = "names"];
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(names_.size());
  for (int i = 0, n = names_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      names_.Get(i));
  }

  // .substrait.ParameterizedType.ParameterizedStruct struct = 2 [json_name = "struct"];
  if (this->_internal_has_struct_()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *struct__);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParameterizedType_ParameterizedNamedStruct::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParameterizedType_ParameterizedNamedStruct::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParameterizedType_ParameterizedNamedStruct::GetClassData() const { return &_class_data_; }

void ParameterizedType_ParameterizedNamedStruct::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParameterizedType_ParameterizedNamedStruct *>(to)->MergeFrom(
      static_cast<const ParameterizedType_ParameterizedNamedStruct &>(from));
}


void ParameterizedType_ParameterizedNamedStruct::MergeFrom(const ParameterizedType_ParameterizedNamedStruct& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.ParameterizedType.ParameterizedNamedStruct)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  names_.MergeFrom(from.names_);
  if (from._internal_has_struct_()) {
    _internal_mutable_struct_()->::substrait::ParameterizedType_ParameterizedStruct::MergeFrom(from._internal_struct_());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ParameterizedType_ParameterizedNamedStruct::IsInitialized() const {
  return true;
}

void ParameterizedType_ParameterizedNamedStruct::InternalSwap(ParameterizedType_ParameterizedNamedStruct* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  names_.InternalSwap(&other->names_);
  swap(struct__, other->struct__);
}

::PROTOBUF_NAMESPACE_ID::Metadata ParameterizedType_ParameterizedNamedStruct::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter, &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once,
      file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[8]);
}

// ===================================================================

class ParameterizedType_ParameterizedList::_Internal {
 public:
  static const ::substrait::ParameterizedType& type(const ParameterizedType_ParameterizedList* msg);
};

const ::substrait::ParameterizedType&
ParameterizedType_ParameterizedList::_Internal::type(const ParameterizedType_ParameterizedList* msg) {
  return *msg->type_;
}
ParameterizedType_ParameterizedList::ParameterizedType_ParameterizedList(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.ParameterizedType.ParameterizedList)
}
ParameterizedType_ParameterizedList::ParameterizedType_ParameterizedList(const ParameterizedType_ParameterizedList& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_type()) {
    type_ = new ::substrait::ParameterizedType(*from.type_);
  } else {
    type_ = nullptr;
  }
  ::memcpy(&variation_pointer_, &from.variation_pointer_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.ParameterizedType.ParameterizedList)
}

inline void ParameterizedType_ParameterizedList::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&type_)) + sizeof(nullability_));
}

ParameterizedType_ParameterizedList::~ParameterizedType_ParameterizedList() {
  // @@protoc_insertion_point(destructor:substrait.ParameterizedType.ParameterizedList)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParameterizedType_ParameterizedList::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete type_;
}

void ParameterizedType_ParameterizedList::ArenaDtor(void* object) {
  ParameterizedType_ParameterizedList* _this = reinterpret_cast< ParameterizedType_ParameterizedList* >(object);
  (void)_this;
}
void ParameterizedType_ParameterizedList::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParameterizedType_ParameterizedList::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParameterizedType_ParameterizedList::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ParameterizedType.ParameterizedList)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaForAllocation() == nullptr && type_ != nullptr) {
    delete type_;
  }
  type_ = nullptr;
  ::memset(&variation_pointer_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParameterizedType_ParameterizedList::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .substrait.ParameterizedType type = 1 [json_name = "type"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_type(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 variation_pointer = 2 [json_name = "variationPointer"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          variation_pointer_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ParameterizedType_ParameterizedList::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ParameterizedType.ParameterizedList)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .substrait.ParameterizedType type = 1 [json_name = "type"];
  if (this->_internal_has_type()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::type(this), target, stream);
  }

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_variation_pointer(), target);
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      3, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ParameterizedType.ParameterizedList)
  return target;
}

size_t ParameterizedType_ParameterizedList::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.ParameterizedType.ParameterizedList)
  size_t total_size = 0;

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

  // .substrait.ParameterizedType type = 1 [json_name = "type"];
  if (this->_internal_has_type()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *type_);
  }

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_variation_pointer());
  }

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParameterizedType_ParameterizedList::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParameterizedType_ParameterizedList::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParameterizedType_ParameterizedList::GetClassData() const { return &_class_data_; }

void ParameterizedType_ParameterizedList::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParameterizedType_ParameterizedList *>(to)->MergeFrom(
      static_cast<const ParameterizedType_ParameterizedList &>(from));
}


void ParameterizedType_ParameterizedList::MergeFrom(const ParameterizedType_ParameterizedList& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.ParameterizedType.ParameterizedList)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_type()) {
    _internal_mutable_type()->::substrait::ParameterizedType::MergeFrom(from._internal_type());
  }
  if (from._internal_variation_pointer() != 0) {
    _internal_set_variation_pointer(from._internal_variation_pointer());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ParameterizedType_ParameterizedList::IsInitialized() const {
  return true;
}

void ParameterizedType_ParameterizedList::InternalSwap(ParameterizedType_ParameterizedList* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedList, nullability_)
      + sizeof(ParameterizedType_ParameterizedList::nullability_)
      - PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedList, type_)>(
          reinterpret_cast<char*>(&type_),
          reinterpret_cast<char*>(&other->type_));
}

::PROTOBUF_NAMESPACE_ID::Metadata ParameterizedType_ParameterizedList::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter, &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once,
      file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[9]);
}

// ===================================================================

class ParameterizedType_ParameterizedMap::_Internal {
 public:
  static const ::substrait::ParameterizedType& key(const ParameterizedType_ParameterizedMap* msg);
  static const ::substrait::ParameterizedType& value(const ParameterizedType_ParameterizedMap* msg);
};

const ::substrait::ParameterizedType&
ParameterizedType_ParameterizedMap::_Internal::key(const ParameterizedType_ParameterizedMap* msg) {
  return *msg->key_;
}
const ::substrait::ParameterizedType&
ParameterizedType_ParameterizedMap::_Internal::value(const ParameterizedType_ParameterizedMap* msg) {
  return *msg->value_;
}
ParameterizedType_ParameterizedMap::ParameterizedType_ParameterizedMap(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.ParameterizedType.ParameterizedMap)
}
ParameterizedType_ParameterizedMap::ParameterizedType_ParameterizedMap(const ParameterizedType_ParameterizedMap& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_key()) {
    key_ = new ::substrait::ParameterizedType(*from.key_);
  } else {
    key_ = nullptr;
  }
  if (from._internal_has_value()) {
    value_ = new ::substrait::ParameterizedType(*from.value_);
  } else {
    value_ = nullptr;
  }
  ::memcpy(&variation_pointer_, &from.variation_pointer_,
    static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  // @@protoc_insertion_point(copy_constructor:substrait.ParameterizedType.ParameterizedMap)
}

inline void ParameterizedType_ParameterizedMap::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&key_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&nullability_) -
    reinterpret_cast<char*>(&key_)) + sizeof(nullability_));
}

ParameterizedType_ParameterizedMap::~ParameterizedType_ParameterizedMap() {
  // @@protoc_insertion_point(destructor:substrait.ParameterizedType.ParameterizedMap)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParameterizedType_ParameterizedMap::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete key_;
  if (this != internal_default_instance()) delete value_;
}

void ParameterizedType_ParameterizedMap::ArenaDtor(void* object) {
  ParameterizedType_ParameterizedMap* _this = reinterpret_cast< ParameterizedType_ParameterizedMap* >(object);
  (void)_this;
}
void ParameterizedType_ParameterizedMap::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParameterizedType_ParameterizedMap::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParameterizedType_ParameterizedMap::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ParameterizedType.ParameterizedMap)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaForAllocation() == nullptr && key_ != nullptr) {
    delete key_;
  }
  key_ = nullptr;
  if (GetArenaForAllocation() == nullptr && value_ != nullptr) {
    delete value_;
  }
  value_ = nullptr;
  ::memset(&variation_pointer_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nullability_) -
      reinterpret_cast<char*>(&variation_pointer_)) + sizeof(nullability_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParameterizedType_ParameterizedMap::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .substrait.ParameterizedType key = 1 [json_name = "key"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_key(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType value = 2 [json_name = "value"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_value(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 variation_pointer = 3 [json_name = "variationPointer"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          variation_pointer_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_nullability(static_cast<::substrait::Type_Nullability>(val));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ParameterizedType_ParameterizedMap::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ParameterizedType.ParameterizedMap)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .substrait.ParameterizedType key = 1 [json_name = "key"];
  if (this->_internal_has_key()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::key(this), target, stream);
  }

  // .substrait.ParameterizedType value = 2 [json_name = "value"];
  if (this->_internal_has_value()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::value(this), target, stream);
  }

  // uint32 variation_pointer = 3 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_variation_pointer(), target);
  }

  // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      4, this->_internal_nullability(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ParameterizedType.ParameterizedMap)
  return target;
}

size_t ParameterizedType_ParameterizedMap::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.ParameterizedType.ParameterizedMap)
  size_t total_size = 0;

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

  // .substrait.ParameterizedType key = 1 [json_name = "key"];
  if (this->_internal_has_key()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *key_);
  }

  // .substrait.ParameterizedType value = 2 [json_name = "value"];
  if (this->_internal_has_value()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *value_);
  }

  // uint32 variation_pointer = 3 [json_name = "variationPointer"];
  if (this->_internal_variation_pointer() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32SizePlusOne(this->_internal_variation_pointer());
  }

  // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
  if (this->_internal_nullability() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nullability());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParameterizedType_ParameterizedMap::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParameterizedType_ParameterizedMap::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParameterizedType_ParameterizedMap::GetClassData() const { return &_class_data_; }

void ParameterizedType_ParameterizedMap::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParameterizedType_ParameterizedMap *>(to)->MergeFrom(
      static_cast<const ParameterizedType_ParameterizedMap &>(from));
}


void ParameterizedType_ParameterizedMap::MergeFrom(const ParameterizedType_ParameterizedMap& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.ParameterizedType.ParameterizedMap)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_key()) {
    _internal_mutable_key()->::substrait::ParameterizedType::MergeFrom(from._internal_key());
  }
  if (from._internal_has_value()) {
    _internal_mutable_value()->::substrait::ParameterizedType::MergeFrom(from._internal_value());
  }
  if (from._internal_variation_pointer() != 0) {
    _internal_set_variation_pointer(from._internal_variation_pointer());
  }
  if (from._internal_nullability() != 0) {
    _internal_set_nullability(from._internal_nullability());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ParameterizedType_ParameterizedMap::IsInitialized() const {
  return true;
}

void ParameterizedType_ParameterizedMap::InternalSwap(ParameterizedType_ParameterizedMap* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedMap, nullability_)
      + sizeof(ParameterizedType_ParameterizedMap::nullability_)
      - PROTOBUF_FIELD_OFFSET(ParameterizedType_ParameterizedMap, key_)>(
          reinterpret_cast<char*>(&key_),
          reinterpret_cast<char*>(&other->key_));
}

::PROTOBUF_NAMESPACE_ID::Metadata ParameterizedType_ParameterizedMap::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter, &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once,
      file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[10]);
}

// ===================================================================

class ParameterizedType_IntegerOption::_Internal {
 public:
  static const ::substrait::ParameterizedType_IntegerParameter& parameter(const ParameterizedType_IntegerOption* msg);
};

const ::substrait::ParameterizedType_IntegerParameter&
ParameterizedType_IntegerOption::_Internal::parameter(const ParameterizedType_IntegerOption* msg) {
  return *msg->integer_type_.parameter_;
}
void ParameterizedType_IntegerOption::set_allocated_parameter(::substrait::ParameterizedType_IntegerParameter* parameter) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_integer_type();
  if (parameter) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_IntegerParameter>::GetOwningArena(parameter);
    if (message_arena != submessage_arena) {
      parameter = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, parameter, submessage_arena);
    }
    set_has_parameter();
    integer_type_.parameter_ = parameter;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.IntegerOption.parameter)
}
ParameterizedType_IntegerOption::ParameterizedType_IntegerOption(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.ParameterizedType.IntegerOption)
}
ParameterizedType_IntegerOption::ParameterizedType_IntegerOption(const ParameterizedType_IntegerOption& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  clear_has_integer_type();
  switch (from.integer_type_case()) {
    case kLiteral: {
      _internal_set_literal(from._internal_literal());
      break;
    }
    case kParameter: {
      _internal_mutable_parameter()->::substrait::ParameterizedType_IntegerParameter::MergeFrom(from._internal_parameter());
      break;
    }
    case INTEGER_TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:substrait.ParameterizedType.IntegerOption)
}

inline void ParameterizedType_IntegerOption::SharedCtor() {
clear_has_integer_type();
}

ParameterizedType_IntegerOption::~ParameterizedType_IntegerOption() {
  // @@protoc_insertion_point(destructor:substrait.ParameterizedType.IntegerOption)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParameterizedType_IntegerOption::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_integer_type()) {
    clear_integer_type();
  }
}

void ParameterizedType_IntegerOption::ArenaDtor(void* object) {
  ParameterizedType_IntegerOption* _this = reinterpret_cast< ParameterizedType_IntegerOption* >(object);
  (void)_this;
}
void ParameterizedType_IntegerOption::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParameterizedType_IntegerOption::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParameterizedType_IntegerOption::clear_integer_type() {
// @@protoc_insertion_point(one_of_clear_start:substrait.ParameterizedType.IntegerOption)
  switch (integer_type_case()) {
    case kLiteral: {
      // No need to clear
      break;
    }
    case kParameter: {
      if (GetArenaForAllocation() == nullptr) {
        delete integer_type_.parameter_;
      }
      break;
    }
    case INTEGER_TYPE_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = INTEGER_TYPE_NOT_SET;
}


void ParameterizedType_IntegerOption::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ParameterizedType.IntegerOption)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_integer_type();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParameterizedType_IntegerOption::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 literal = 1 [json_name = "literal"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _internal_set_literal(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType.IntegerParameter parameter = 2 [json_name = "parameter"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_parameter(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ParameterizedType_IntegerOption::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ParameterizedType.IntegerOption)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 literal = 1 [json_name = "literal"];
  if (_internal_has_literal()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_literal(), target);
  }

  // .substrait.ParameterizedType.IntegerParameter parameter = 2 [json_name = "parameter"];
  if (_internal_has_parameter()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::parameter(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ParameterizedType.IntegerOption)
  return target;
}

size_t ParameterizedType_IntegerOption::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.ParameterizedType.IntegerOption)
  size_t total_size = 0;

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

  switch (integer_type_case()) {
    // int32 literal = 1 [json_name = "literal"];
    case kLiteral: {
      total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_literal());
      break;
    }
    // .substrait.ParameterizedType.IntegerParameter parameter = 2 [json_name = "parameter"];
    case kParameter: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *integer_type_.parameter_);
      break;
    }
    case INTEGER_TYPE_NOT_SET: {
      break;
    }
  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParameterizedType_IntegerOption::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParameterizedType_IntegerOption::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParameterizedType_IntegerOption::GetClassData() const { return &_class_data_; }

void ParameterizedType_IntegerOption::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParameterizedType_IntegerOption *>(to)->MergeFrom(
      static_cast<const ParameterizedType_IntegerOption &>(from));
}


void ParameterizedType_IntegerOption::MergeFrom(const ParameterizedType_IntegerOption& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.ParameterizedType.IntegerOption)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.integer_type_case()) {
    case kLiteral: {
      _internal_set_literal(from._internal_literal());
      break;
    }
    case kParameter: {
      _internal_mutable_parameter()->::substrait::ParameterizedType_IntegerParameter::MergeFrom(from._internal_parameter());
      break;
    }
    case INTEGER_TYPE_NOT_SET: {
      break;
    }
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ParameterizedType_IntegerOption::IsInitialized() const {
  return true;
}

void ParameterizedType_IntegerOption::InternalSwap(ParameterizedType_IntegerOption* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(integer_type_, other->integer_type_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
}

::PROTOBUF_NAMESPACE_ID::Metadata ParameterizedType_IntegerOption::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter, &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once,
      file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[11]);
}

// ===================================================================

class ParameterizedType::_Internal {
 public:
  static const ::substrait::Type_Boolean& bool_(const ParameterizedType* msg);
  static const ::substrait::Type_I8& i8(const ParameterizedType* msg);
  static const ::substrait::Type_I16& i16(const ParameterizedType* msg);
  static const ::substrait::Type_I32& i32(const ParameterizedType* msg);
  static const ::substrait::Type_I64& i64(const ParameterizedType* msg);
  static const ::substrait::Type_FP32& fp32(const ParameterizedType* msg);
  static const ::substrait::Type_FP64& fp64(const ParameterizedType* msg);
  static const ::substrait::Type_String& string(const ParameterizedType* msg);
  static const ::substrait::Type_Binary& binary(const ParameterizedType* msg);
  static const ::substrait::Type_Timestamp& timestamp(const ParameterizedType* msg);
  static const ::substrait::Type_Date& date(const ParameterizedType* msg);
  static const ::substrait::Type_Time& time(const ParameterizedType* msg);
  static const ::substrait::Type_IntervalYear& interval_year(const ParameterizedType* msg);
  static const ::substrait::Type_IntervalDay& interval_day(const ParameterizedType* msg);
  static const ::substrait::Type_TimestampTZ& timestamp_tz(const ParameterizedType* msg);
  static const ::substrait::Type_UUID& uuid(const ParameterizedType* msg);
  static const ::substrait::ParameterizedType_ParameterizedFixedChar& fixed_char(const ParameterizedType* msg);
  static const ::substrait::ParameterizedType_ParameterizedVarChar& varchar(const ParameterizedType* msg);
  static const ::substrait::ParameterizedType_ParameterizedFixedBinary& fixed_binary(const ParameterizedType* msg);
  static const ::substrait::ParameterizedType_ParameterizedDecimal& decimal(const ParameterizedType* msg);
  static const ::substrait::ParameterizedType_ParameterizedStruct& struct_(const ParameterizedType* msg);
  static const ::substrait::ParameterizedType_ParameterizedList& list(const ParameterizedType* msg);
  static const ::substrait::ParameterizedType_ParameterizedMap& map(const ParameterizedType* msg);
  static const ::substrait::ParameterizedType_TypeParameter& type_parameter(const ParameterizedType* msg);
};

const ::substrait::Type_Boolean&
ParameterizedType::_Internal::bool_(const ParameterizedType* msg) {
  return *msg->kind_.bool__;
}
const ::substrait::Type_I8&
ParameterizedType::_Internal::i8(const ParameterizedType* msg) {
  return *msg->kind_.i8_;
}
const ::substrait::Type_I16&
ParameterizedType::_Internal::i16(const ParameterizedType* msg) {
  return *msg->kind_.i16_;
}
const ::substrait::Type_I32&
ParameterizedType::_Internal::i32(const ParameterizedType* msg) {
  return *msg->kind_.i32_;
}
const ::substrait::Type_I64&
ParameterizedType::_Internal::i64(const ParameterizedType* msg) {
  return *msg->kind_.i64_;
}
const ::substrait::Type_FP32&
ParameterizedType::_Internal::fp32(const ParameterizedType* msg) {
  return *msg->kind_.fp32_;
}
const ::substrait::Type_FP64&
ParameterizedType::_Internal::fp64(const ParameterizedType* msg) {
  return *msg->kind_.fp64_;
}
const ::substrait::Type_String&
ParameterizedType::_Internal::string(const ParameterizedType* msg) {
  return *msg->kind_.string_;
}
const ::substrait::Type_Binary&
ParameterizedType::_Internal::binary(const ParameterizedType* msg) {
  return *msg->kind_.binary_;
}
const ::substrait::Type_Timestamp&
ParameterizedType::_Internal::timestamp(const ParameterizedType* msg) {
  return *msg->kind_.timestamp_;
}
const ::substrait::Type_Date&
ParameterizedType::_Internal::date(const ParameterizedType* msg) {
  return *msg->kind_.date_;
}
const ::substrait::Type_Time&
ParameterizedType::_Internal::time(const ParameterizedType* msg) {
  return *msg->kind_.time_;
}
const ::substrait::Type_IntervalYear&
ParameterizedType::_Internal::interval_year(const ParameterizedType* msg) {
  return *msg->kind_.interval_year_;
}
const ::substrait::Type_IntervalDay&
ParameterizedType::_Internal::interval_day(const ParameterizedType* msg) {
  return *msg->kind_.interval_day_;
}
const ::substrait::Type_TimestampTZ&
ParameterizedType::_Internal::timestamp_tz(const ParameterizedType* msg) {
  return *msg->kind_.timestamp_tz_;
}
const ::substrait::Type_UUID&
ParameterizedType::_Internal::uuid(const ParameterizedType* msg) {
  return *msg->kind_.uuid_;
}
const ::substrait::ParameterizedType_ParameterizedFixedChar&
ParameterizedType::_Internal::fixed_char(const ParameterizedType* msg) {
  return *msg->kind_.fixed_char_;
}
const ::substrait::ParameterizedType_ParameterizedVarChar&
ParameterizedType::_Internal::varchar(const ParameterizedType* msg) {
  return *msg->kind_.varchar_;
}
const ::substrait::ParameterizedType_ParameterizedFixedBinary&
ParameterizedType::_Internal::fixed_binary(const ParameterizedType* msg) {
  return *msg->kind_.fixed_binary_;
}
const ::substrait::ParameterizedType_ParameterizedDecimal&
ParameterizedType::_Internal::decimal(const ParameterizedType* msg) {
  return *msg->kind_.decimal_;
}
const ::substrait::ParameterizedType_ParameterizedStruct&
ParameterizedType::_Internal::struct_(const ParameterizedType* msg) {
  return *msg->kind_.struct__;
}
const ::substrait::ParameterizedType_ParameterizedList&
ParameterizedType::_Internal::list(const ParameterizedType* msg) {
  return *msg->kind_.list_;
}
const ::substrait::ParameterizedType_ParameterizedMap&
ParameterizedType::_Internal::map(const ParameterizedType* msg) {
  return *msg->kind_.map_;
}
const ::substrait::ParameterizedType_TypeParameter&
ParameterizedType::_Internal::type_parameter(const ParameterizedType* msg) {
  return *msg->kind_.type_parameter_;
}
void ParameterizedType::set_allocated_bool_(::substrait::Type_Boolean* bool_) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (bool_) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bool_));
    if (message_arena != submessage_arena) {
      bool_ = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, bool_, submessage_arena);
    }
    set_has_bool_();
    kind_.bool__ = bool_;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.bool)
}
void ParameterizedType::clear_bool_() {
  if (_internal_has_bool_()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.bool__;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_i8(::substrait::Type_I8* i8) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (i8) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(i8));
    if (message_arena != submessage_arena) {
      i8 = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, i8, submessage_arena);
    }
    set_has_i8();
    kind_.i8_ = i8;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.i8)
}
void ParameterizedType::clear_i8() {
  if (_internal_has_i8()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.i8_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_i16(::substrait::Type_I16* i16) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (i16) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(i16));
    if (message_arena != submessage_arena) {
      i16 = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, i16, submessage_arena);
    }
    set_has_i16();
    kind_.i16_ = i16;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.i16)
}
void ParameterizedType::clear_i16() {
  if (_internal_has_i16()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.i16_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_i32(::substrait::Type_I32* i32) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (i32) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(i32));
    if (message_arena != submessage_arena) {
      i32 = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, i32, submessage_arena);
    }
    set_has_i32();
    kind_.i32_ = i32;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.i32)
}
void ParameterizedType::clear_i32() {
  if (_internal_has_i32()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.i32_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_i64(::substrait::Type_I64* i64) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (i64) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(i64));
    if (message_arena != submessage_arena) {
      i64 = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, i64, submessage_arena);
    }
    set_has_i64();
    kind_.i64_ = i64;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.i64)
}
void ParameterizedType::clear_i64() {
  if (_internal_has_i64()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.i64_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_fp32(::substrait::Type_FP32* fp32) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (fp32) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(fp32));
    if (message_arena != submessage_arena) {
      fp32 = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, fp32, submessage_arena);
    }
    set_has_fp32();
    kind_.fp32_ = fp32;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.fp32)
}
void ParameterizedType::clear_fp32() {
  if (_internal_has_fp32()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.fp32_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_fp64(::substrait::Type_FP64* fp64) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (fp64) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(fp64));
    if (message_arena != submessage_arena) {
      fp64 = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, fp64, submessage_arena);
    }
    set_has_fp64();
    kind_.fp64_ = fp64;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.fp64)
}
void ParameterizedType::clear_fp64() {
  if (_internal_has_fp64()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.fp64_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_string(::substrait::Type_String* string) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (string) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(string));
    if (message_arena != submessage_arena) {
      string = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, string, submessage_arena);
    }
    set_has_string();
    kind_.string_ = string;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.string)
}
void ParameterizedType::clear_string() {
  if (_internal_has_string()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.string_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_binary(::substrait::Type_Binary* binary) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (binary) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(binary));
    if (message_arena != submessage_arena) {
      binary = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, binary, submessage_arena);
    }
    set_has_binary();
    kind_.binary_ = binary;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.binary)
}
void ParameterizedType::clear_binary() {
  if (_internal_has_binary()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.binary_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_timestamp(::substrait::Type_Timestamp* timestamp) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (timestamp) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(timestamp));
    if (message_arena != submessage_arena) {
      timestamp = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, timestamp, submessage_arena);
    }
    set_has_timestamp();
    kind_.timestamp_ = timestamp;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.timestamp)
}
void ParameterizedType::clear_timestamp() {
  if (_internal_has_timestamp()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.timestamp_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_date(::substrait::Type_Date* date) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (date) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(date));
    if (message_arena != submessage_arena) {
      date = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, date, submessage_arena);
    }
    set_has_date();
    kind_.date_ = date;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.date)
}
void ParameterizedType::clear_date() {
  if (_internal_has_date()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.date_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_time(::substrait::Type_Time* time) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (time) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(time));
    if (message_arena != submessage_arena) {
      time = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, time, submessage_arena);
    }
    set_has_time();
    kind_.time_ = time;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.time)
}
void ParameterizedType::clear_time() {
  if (_internal_has_time()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.time_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_interval_year(::substrait::Type_IntervalYear* interval_year) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (interval_year) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(interval_year));
    if (message_arena != submessage_arena) {
      interval_year = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, interval_year, submessage_arena);
    }
    set_has_interval_year();
    kind_.interval_year_ = interval_year;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.interval_year)
}
void ParameterizedType::clear_interval_year() {
  if (_internal_has_interval_year()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.interval_year_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_interval_day(::substrait::Type_IntervalDay* interval_day) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (interval_day) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(interval_day));
    if (message_arena != submessage_arena) {
      interval_day = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, interval_day, submessage_arena);
    }
    set_has_interval_day();
    kind_.interval_day_ = interval_day;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.interval_day)
}
void ParameterizedType::clear_interval_day() {
  if (_internal_has_interval_day()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.interval_day_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_timestamp_tz(::substrait::Type_TimestampTZ* timestamp_tz) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (timestamp_tz) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(timestamp_tz));
    if (message_arena != submessage_arena) {
      timestamp_tz = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, timestamp_tz, submessage_arena);
    }
    set_has_timestamp_tz();
    kind_.timestamp_tz_ = timestamp_tz;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.timestamp_tz)
}
void ParameterizedType::clear_timestamp_tz() {
  if (_internal_has_timestamp_tz()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.timestamp_tz_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_uuid(::substrait::Type_UUID* uuid) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (uuid) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<
            ::PROTOBUF_NAMESPACE_ID::MessageLite>::GetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(uuid));
    if (message_arena != submessage_arena) {
      uuid = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, uuid, submessage_arena);
    }
    set_has_uuid();
    kind_.uuid_ = uuid;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.uuid)
}
void ParameterizedType::clear_uuid() {
  if (_internal_has_uuid()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.uuid_;
    }
    clear_has_kind();
  }
}
void ParameterizedType::set_allocated_fixed_char(::substrait::ParameterizedType_ParameterizedFixedChar* fixed_char) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (fixed_char) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_ParameterizedFixedChar>::GetOwningArena(fixed_char);
    if (message_arena != submessage_arena) {
      fixed_char = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, fixed_char, submessage_arena);
    }
    set_has_fixed_char();
    kind_.fixed_char_ = fixed_char;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.fixed_char)
}
void ParameterizedType::set_allocated_varchar(::substrait::ParameterizedType_ParameterizedVarChar* varchar) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (varchar) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_ParameterizedVarChar>::GetOwningArena(varchar);
    if (message_arena != submessage_arena) {
      varchar = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, varchar, submessage_arena);
    }
    set_has_varchar();
    kind_.varchar_ = varchar;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.varchar)
}
void ParameterizedType::set_allocated_fixed_binary(::substrait::ParameterizedType_ParameterizedFixedBinary* fixed_binary) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (fixed_binary) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_ParameterizedFixedBinary>::GetOwningArena(fixed_binary);
    if (message_arena != submessage_arena) {
      fixed_binary = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, fixed_binary, submessage_arena);
    }
    set_has_fixed_binary();
    kind_.fixed_binary_ = fixed_binary;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.fixed_binary)
}
void ParameterizedType::set_allocated_decimal(::substrait::ParameterizedType_ParameterizedDecimal* decimal) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (decimal) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_ParameterizedDecimal>::GetOwningArena(decimal);
    if (message_arena != submessage_arena) {
      decimal = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, decimal, submessage_arena);
    }
    set_has_decimal();
    kind_.decimal_ = decimal;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.decimal)
}
void ParameterizedType::set_allocated_struct_(::substrait::ParameterizedType_ParameterizedStruct* struct_) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (struct_) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_ParameterizedStruct>::GetOwningArena(struct_);
    if (message_arena != submessage_arena) {
      struct_ = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, struct_, submessage_arena);
    }
    set_has_struct_();
    kind_.struct__ = struct_;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.struct)
}
void ParameterizedType::set_allocated_list(::substrait::ParameterizedType_ParameterizedList* list) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (list) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_ParameterizedList>::GetOwningArena(list);
    if (message_arena != submessage_arena) {
      list = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, list, submessage_arena);
    }
    set_has_list();
    kind_.list_ = list;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.list)
}
void ParameterizedType::set_allocated_map(::substrait::ParameterizedType_ParameterizedMap* map) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (map) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_ParameterizedMap>::GetOwningArena(map);
    if (message_arena != submessage_arena) {
      map = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, map, submessage_arena);
    }
    set_has_map();
    kind_.map_ = map;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.map)
}
void ParameterizedType::set_allocated_type_parameter(::substrait::ParameterizedType_TypeParameter* type_parameter) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_kind();
  if (type_parameter) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_TypeParameter>::GetOwningArena(type_parameter);
    if (message_arena != submessage_arena) {
      type_parameter = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, type_parameter, submessage_arena);
    }
    set_has_type_parameter();
    kind_.type_parameter_ = type_parameter;
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.type_parameter)
}
ParameterizedType::ParameterizedType(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:substrait.ParameterizedType)
}
ParameterizedType::ParameterizedType(const ParameterizedType& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  clear_has_kind();
  switch (from.kind_case()) {
    case kBool: {
      _internal_mutable_bool_()->::substrait::Type_Boolean::MergeFrom(from._internal_bool_());
      break;
    }
    case kI8: {
      _internal_mutable_i8()->::substrait::Type_I8::MergeFrom(from._internal_i8());
      break;
    }
    case kI16: {
      _internal_mutable_i16()->::substrait::Type_I16::MergeFrom(from._internal_i16());
      break;
    }
    case kI32: {
      _internal_mutable_i32()->::substrait::Type_I32::MergeFrom(from._internal_i32());
      break;
    }
    case kI64: {
      _internal_mutable_i64()->::substrait::Type_I64::MergeFrom(from._internal_i64());
      break;
    }
    case kFp32: {
      _internal_mutable_fp32()->::substrait::Type_FP32::MergeFrom(from._internal_fp32());
      break;
    }
    case kFp64: {
      _internal_mutable_fp64()->::substrait::Type_FP64::MergeFrom(from._internal_fp64());
      break;
    }
    case kString: {
      _internal_mutable_string()->::substrait::Type_String::MergeFrom(from._internal_string());
      break;
    }
    case kBinary: {
      _internal_mutable_binary()->::substrait::Type_Binary::MergeFrom(from._internal_binary());
      break;
    }
    case kTimestamp: {
      _internal_mutable_timestamp()->::substrait::Type_Timestamp::MergeFrom(from._internal_timestamp());
      break;
    }
    case kDate: {
      _internal_mutable_date()->::substrait::Type_Date::MergeFrom(from._internal_date());
      break;
    }
    case kTime: {
      _internal_mutable_time()->::substrait::Type_Time::MergeFrom(from._internal_time());
      break;
    }
    case kIntervalYear: {
      _internal_mutable_interval_year()->::substrait::Type_IntervalYear::MergeFrom(from._internal_interval_year());
      break;
    }
    case kIntervalDay: {
      _internal_mutable_interval_day()->::substrait::Type_IntervalDay::MergeFrom(from._internal_interval_day());
      break;
    }
    case kTimestampTz: {
      _internal_mutable_timestamp_tz()->::substrait::Type_TimestampTZ::MergeFrom(from._internal_timestamp_tz());
      break;
    }
    case kUuid: {
      _internal_mutable_uuid()->::substrait::Type_UUID::MergeFrom(from._internal_uuid());
      break;
    }
    case kFixedChar: {
      _internal_mutable_fixed_char()->::substrait::ParameterizedType_ParameterizedFixedChar::MergeFrom(from._internal_fixed_char());
      break;
    }
    case kVarchar: {
      _internal_mutable_varchar()->::substrait::ParameterizedType_ParameterizedVarChar::MergeFrom(from._internal_varchar());
      break;
    }
    case kFixedBinary: {
      _internal_mutable_fixed_binary()->::substrait::ParameterizedType_ParameterizedFixedBinary::MergeFrom(from._internal_fixed_binary());
      break;
    }
    case kDecimal: {
      _internal_mutable_decimal()->::substrait::ParameterizedType_ParameterizedDecimal::MergeFrom(from._internal_decimal());
      break;
    }
    case kStruct: {
      _internal_mutable_struct_()->::substrait::ParameterizedType_ParameterizedStruct::MergeFrom(from._internal_struct_());
      break;
    }
    case kList: {
      _internal_mutable_list()->::substrait::ParameterizedType_ParameterizedList::MergeFrom(from._internal_list());
      break;
    }
    case kMap: {
      _internal_mutable_map()->::substrait::ParameterizedType_ParameterizedMap::MergeFrom(from._internal_map());
      break;
    }
    case kUserDefinedPointer: {
      _internal_set_user_defined_pointer(from._internal_user_defined_pointer());
      break;
    }
    case kTypeParameter: {
      _internal_mutable_type_parameter()->::substrait::ParameterizedType_TypeParameter::MergeFrom(from._internal_type_parameter());
      break;
    }
    case KIND_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:substrait.ParameterizedType)
}

inline void ParameterizedType::SharedCtor() {
clear_has_kind();
}

ParameterizedType::~ParameterizedType() {
  // @@protoc_insertion_point(destructor:substrait.ParameterizedType)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParameterizedType::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_kind()) {
    clear_kind();
  }
}

void ParameterizedType::ArenaDtor(void* object) {
  ParameterizedType* _this = reinterpret_cast< ParameterizedType* >(object);
  (void)_this;
}
void ParameterizedType::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParameterizedType::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParameterizedType::clear_kind() {
// @@protoc_insertion_point(one_of_clear_start:substrait.ParameterizedType)
  switch (kind_case()) {
    case kBool: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.bool__;
      }
      break;
    }
    case kI8: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.i8_;
      }
      break;
    }
    case kI16: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.i16_;
      }
      break;
    }
    case kI32: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.i32_;
      }
      break;
    }
    case kI64: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.i64_;
      }
      break;
    }
    case kFp32: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.fp32_;
      }
      break;
    }
    case kFp64: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.fp64_;
      }
      break;
    }
    case kString: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.string_;
      }
      break;
    }
    case kBinary: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.binary_;
      }
      break;
    }
    case kTimestamp: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.timestamp_;
      }
      break;
    }
    case kDate: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.date_;
      }
      break;
    }
    case kTime: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.time_;
      }
      break;
    }
    case kIntervalYear: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.interval_year_;
      }
      break;
    }
    case kIntervalDay: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.interval_day_;
      }
      break;
    }
    case kTimestampTz: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.timestamp_tz_;
      }
      break;
    }
    case kUuid: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.uuid_;
      }
      break;
    }
    case kFixedChar: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.fixed_char_;
      }
      break;
    }
    case kVarchar: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.varchar_;
      }
      break;
    }
    case kFixedBinary: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.fixed_binary_;
      }
      break;
    }
    case kDecimal: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.decimal_;
      }
      break;
    }
    case kStruct: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.struct__;
      }
      break;
    }
    case kList: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.list_;
      }
      break;
    }
    case kMap: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.map_;
      }
      break;
    }
    case kUserDefinedPointer: {
      // No need to clear
      break;
    }
    case kTypeParameter: {
      if (GetArenaForAllocation() == nullptr) {
        delete kind_.type_parameter_;
      }
      break;
    }
    case KIND_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = KIND_NOT_SET;
}


void ParameterizedType::Clear() {
// @@protoc_insertion_point(message_clear_start:substrait.ParameterizedType)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_kind();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParameterizedType::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .substrait.Type.Boolean bool = 1 [json_name = "bool"];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_bool_(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.I8 i8 = 2 [json_name = "i8"];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_i8(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.I16 i16 = 3 [json_name = "i16"];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_i16(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.I32 i32 = 5 [json_name = "i32"];
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_i32(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.I64 i64 = 7 [json_name = "i64"];
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr = ctx->ParseMessage(_internal_mutable_i64(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.FP32 fp32 = 10 [json_name = "fp32"];
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          ptr = ctx->ParseMessage(_internal_mutable_fp32(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.FP64 fp64 = 11 [json_name = "fp64"];
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          ptr = ctx->ParseMessage(_internal_mutable_fp64(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.String string = 12 [json_name = "string"];
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          ptr = ctx->ParseMessage(_internal_mutable_string(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Binary binary = 13 [json_name = "binary"];
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 106)) {
          ptr = ctx->ParseMessage(_internal_mutable_binary(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Timestamp timestamp = 14 [json_name = "timestamp"];
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          ptr = ctx->ParseMessage(_internal_mutable_timestamp(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Date date = 16 [json_name = "date"];
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 130)) {
          ptr = ctx->ParseMessage(_internal_mutable_date(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.Time time = 17 [json_name = "time"];
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 138)) {
          ptr = ctx->ParseMessage(_internal_mutable_time(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.IntervalYear interval_year = 19 [json_name = "intervalYear"];
      case 19:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 154)) {
          ptr = ctx->ParseMessage(_internal_mutable_interval_year(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.IntervalDay interval_day = 20 [json_name = "intervalDay"];
      case 20:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 162)) {
          ptr = ctx->ParseMessage(_internal_mutable_interval_day(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType.ParameterizedFixedChar fixed_char = 21 [json_name = "fixedChar"];
      case 21:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 170)) {
          ptr = ctx->ParseMessage(_internal_mutable_fixed_char(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType.ParameterizedVarChar varchar = 22 [json_name = "varchar"];
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 178)) {
          ptr = ctx->ParseMessage(_internal_mutable_varchar(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType.ParameterizedFixedBinary fixed_binary = 23 [json_name = "fixedBinary"];
      case 23:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 186)) {
          ptr = ctx->ParseMessage(_internal_mutable_fixed_binary(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType.ParameterizedDecimal decimal = 24 [json_name = "decimal"];
      case 24:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 194)) {
          ptr = ctx->ParseMessage(_internal_mutable_decimal(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType.ParameterizedStruct struct = 25 [json_name = "struct"];
      case 25:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 202)) {
          ptr = ctx->ParseMessage(_internal_mutable_struct_(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType.ParameterizedList list = 27 [json_name = "list"];
      case 27:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 218)) {
          ptr = ctx->ParseMessage(_internal_mutable_list(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType.ParameterizedMap map = 28 [json_name = "map"];
      case 28:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 226)) {
          ptr = ctx->ParseMessage(_internal_mutable_map(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.TimestampTZ timestamp_tz = 29 [json_name = "timestampTz"];
      case 29:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 234)) {
          ptr = ctx->ParseMessage(_internal_mutable_timestamp_tz(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 user_defined_pointer = 31 [json_name = "userDefinedPointer"];
      case 31:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 248)) {
          _internal_set_user_defined_pointer(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.Type.UUID uuid = 32 [json_name = "uuid"];
      case 32:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 2)) {
          ptr = ctx->ParseMessage(_internal_mutable_uuid(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .substrait.ParameterizedType.TypeParameter type_parameter = 33 [json_name = "typeParameter"];
      case 33:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_type_parameter(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ParameterizedType::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:substrait.ParameterizedType)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .substrait.Type.Boolean bool = 1 [json_name = "bool"];
  if (_internal_has_bool_()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::bool_(this), target, stream);
  }

  // .substrait.Type.I8 i8 = 2 [json_name = "i8"];
  if (_internal_has_i8()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::i8(this), target, stream);
  }

  // .substrait.Type.I16 i16 = 3 [json_name = "i16"];
  if (_internal_has_i16()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        3, _Internal::i16(this), target, stream);
  }

  // .substrait.Type.I32 i32 = 5 [json_name = "i32"];
  if (_internal_has_i32()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        5, _Internal::i32(this), target, stream);
  }

  // .substrait.Type.I64 i64 = 7 [json_name = "i64"];
  if (_internal_has_i64()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        7, _Internal::i64(this), target, stream);
  }

  // .substrait.Type.FP32 fp32 = 10 [json_name = "fp32"];
  if (_internal_has_fp32()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        10, _Internal::fp32(this), target, stream);
  }

  // .substrait.Type.FP64 fp64 = 11 [json_name = "fp64"];
  if (_internal_has_fp64()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        11, _Internal::fp64(this), target, stream);
  }

  // .substrait.Type.String string = 12 [json_name = "string"];
  if (_internal_has_string()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        12, _Internal::string(this), target, stream);
  }

  // .substrait.Type.Binary binary = 13 [json_name = "binary"];
  if (_internal_has_binary()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        13, _Internal::binary(this), target, stream);
  }

  // .substrait.Type.Timestamp timestamp = 14 [json_name = "timestamp"];
  if (_internal_has_timestamp()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        14, _Internal::timestamp(this), target, stream);
  }

  // .substrait.Type.Date date = 16 [json_name = "date"];
  if (_internal_has_date()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        16, _Internal::date(this), target, stream);
  }

  // .substrait.Type.Time time = 17 [json_name = "time"];
  if (_internal_has_time()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        17, _Internal::time(this), target, stream);
  }

  // .substrait.Type.IntervalYear interval_year = 19 [json_name = "intervalYear"];
  if (_internal_has_interval_year()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        19, _Internal::interval_year(this), target, stream);
  }

  // .substrait.Type.IntervalDay interval_day = 20 [json_name = "intervalDay"];
  if (_internal_has_interval_day()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        20, _Internal::interval_day(this), target, stream);
  }

  // .substrait.ParameterizedType.ParameterizedFixedChar fixed_char = 21 [json_name = "fixedChar"];
  if (_internal_has_fixed_char()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        21, _Internal::fixed_char(this), target, stream);
  }

  // .substrait.ParameterizedType.ParameterizedVarChar varchar = 22 [json_name = "varchar"];
  if (_internal_has_varchar()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        22, _Internal::varchar(this), target, stream);
  }

  // .substrait.ParameterizedType.ParameterizedFixedBinary fixed_binary = 23 [json_name = "fixedBinary"];
  if (_internal_has_fixed_binary()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        23, _Internal::fixed_binary(this), target, stream);
  }

  // .substrait.ParameterizedType.ParameterizedDecimal decimal = 24 [json_name = "decimal"];
  if (_internal_has_decimal()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        24, _Internal::decimal(this), target, stream);
  }

  // .substrait.ParameterizedType.ParameterizedStruct struct = 25 [json_name = "struct"];
  if (_internal_has_struct_()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        25, _Internal::struct_(this), target, stream);
  }

  // .substrait.ParameterizedType.ParameterizedList list = 27 [json_name = "list"];
  if (_internal_has_list()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        27, _Internal::list(this), target, stream);
  }

  // .substrait.ParameterizedType.ParameterizedMap map = 28 [json_name = "map"];
  if (_internal_has_map()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        28, _Internal::map(this), target, stream);
  }

  // .substrait.Type.TimestampTZ timestamp_tz = 29 [json_name = "timestampTz"];
  if (_internal_has_timestamp_tz()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        29, _Internal::timestamp_tz(this), target, stream);
  }

  // uint32 user_defined_pointer = 31 [json_name = "userDefinedPointer"];
  if (_internal_has_user_defined_pointer()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(31, this->_internal_user_defined_pointer(), target);
  }

  // .substrait.Type.UUID uuid = 32 [json_name = "uuid"];
  if (_internal_has_uuid()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        32, _Internal::uuid(this), target, stream);
  }

  // .substrait.ParameterizedType.TypeParameter type_parameter = 33 [json_name = "typeParameter"];
  if (_internal_has_type_parameter()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        33, _Internal::type_parameter(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:substrait.ParameterizedType)
  return target;
}

size_t ParameterizedType::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:substrait.ParameterizedType)
  size_t total_size = 0;

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

  switch (kind_case()) {
    // .substrait.Type.Boolean bool = 1 [json_name = "bool"];
    case kBool: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.bool__);
      break;
    }
    // .substrait.Type.I8 i8 = 2 [json_name = "i8"];
    case kI8: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.i8_);
      break;
    }
    // .substrait.Type.I16 i16 = 3 [json_name = "i16"];
    case kI16: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.i16_);
      break;
    }
    // .substrait.Type.I32 i32 = 5 [json_name = "i32"];
    case kI32: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.i32_);
      break;
    }
    // .substrait.Type.I64 i64 = 7 [json_name = "i64"];
    case kI64: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.i64_);
      break;
    }
    // .substrait.Type.FP32 fp32 = 10 [json_name = "fp32"];
    case kFp32: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.fp32_);
      break;
    }
    // .substrait.Type.FP64 fp64 = 11 [json_name = "fp64"];
    case kFp64: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.fp64_);
      break;
    }
    // .substrait.Type.String string = 12 [json_name = "string"];
    case kString: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.string_);
      break;
    }
    // .substrait.Type.Binary binary = 13 [json_name = "binary"];
    case kBinary: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.binary_);
      break;
    }
    // .substrait.Type.Timestamp timestamp = 14 [json_name = "timestamp"];
    case kTimestamp: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.timestamp_);
      break;
    }
    // .substrait.Type.Date date = 16 [json_name = "date"];
    case kDate: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.date_);
      break;
    }
    // .substrait.Type.Time time = 17 [json_name = "time"];
    case kTime: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.time_);
      break;
    }
    // .substrait.Type.IntervalYear interval_year = 19 [json_name = "intervalYear"];
    case kIntervalYear: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.interval_year_);
      break;
    }
    // .substrait.Type.IntervalDay interval_day = 20 [json_name = "intervalDay"];
    case kIntervalDay: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.interval_day_);
      break;
    }
    // .substrait.Type.TimestampTZ timestamp_tz = 29 [json_name = "timestampTz"];
    case kTimestampTz: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.timestamp_tz_);
      break;
    }
    // .substrait.Type.UUID uuid = 32 [json_name = "uuid"];
    case kUuid: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.uuid_);
      break;
    }
    // .substrait.ParameterizedType.ParameterizedFixedChar fixed_char = 21 [json_name = "fixedChar"];
    case kFixedChar: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.fixed_char_);
      break;
    }
    // .substrait.ParameterizedType.ParameterizedVarChar varchar = 22 [json_name = "varchar"];
    case kVarchar: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.varchar_);
      break;
    }
    // .substrait.ParameterizedType.ParameterizedFixedBinary fixed_binary = 23 [json_name = "fixedBinary"];
    case kFixedBinary: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.fixed_binary_);
      break;
    }
    // .substrait.ParameterizedType.ParameterizedDecimal decimal = 24 [json_name = "decimal"];
    case kDecimal: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.decimal_);
      break;
    }
    // .substrait.ParameterizedType.ParameterizedStruct struct = 25 [json_name = "struct"];
    case kStruct: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.struct__);
      break;
    }
    // .substrait.ParameterizedType.ParameterizedList list = 27 [json_name = "list"];
    case kList: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.list_);
      break;
    }
    // .substrait.ParameterizedType.ParameterizedMap map = 28 [json_name = "map"];
    case kMap: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.map_);
      break;
    }
    // uint32 user_defined_pointer = 31 [json_name = "userDefinedPointer"];
    case kUserDefinedPointer: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_user_defined_pointer());
      break;
    }
    // .substrait.ParameterizedType.TypeParameter type_parameter = 33 [json_name = "typeParameter"];
    case kTypeParameter: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *kind_.type_parameter_);
      break;
    }
    case KIND_NOT_SET: {
      break;
    }
  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParameterizedType::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParameterizedType::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParameterizedType::GetClassData() const { return &_class_data_; }

void ParameterizedType::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParameterizedType *>(to)->MergeFrom(
      static_cast<const ParameterizedType &>(from));
}


void ParameterizedType::MergeFrom(const ParameterizedType& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:substrait.ParameterizedType)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.kind_case()) {
    case kBool: {
      _internal_mutable_bool_()->::substrait::Type_Boolean::MergeFrom(from._internal_bool_());
      break;
    }
    case kI8: {
      _internal_mutable_i8()->::substrait::Type_I8::MergeFrom(from._internal_i8());
      break;
    }
    case kI16: {
      _internal_mutable_i16()->::substrait::Type_I16::MergeFrom(from._internal_i16());
      break;
    }
    case kI32: {
      _internal_mutable_i32()->::substrait::Type_I32::MergeFrom(from._internal_i32());
      break;
    }
    case kI64: {
      _internal_mutable_i64()->::substrait::Type_I64::MergeFrom(from._internal_i64());
      break;
    }
    case kFp32: {
      _internal_mutable_fp32()->::substrait::Type_FP32::MergeFrom(from._internal_fp32());
      break;
    }
    case kFp64: {
      _internal_mutable_fp64()->::substrait::Type_FP64::MergeFrom(from._internal_fp64());
      break;
    }
    case kString: {
      _internal_mutable_string()->::substrait::Type_String::MergeFrom(from._internal_string());
      break;
    }
    case kBinary: {
      _internal_mutable_binary()->::substrait::Type_Binary::MergeFrom(from._internal_binary());
      break;
    }
    case kTimestamp: {
      _internal_mutable_timestamp()->::substrait::Type_Timestamp::MergeFrom(from._internal_timestamp());
      break;
    }
    case kDate: {
      _internal_mutable_date()->::substrait::Type_Date::MergeFrom(from._internal_date());
      break;
    }
    case kTime: {
      _internal_mutable_time()->::substrait::Type_Time::MergeFrom(from._internal_time());
      break;
    }
    case kIntervalYear: {
      _internal_mutable_interval_year()->::substrait::Type_IntervalYear::MergeFrom(from._internal_interval_year());
      break;
    }
    case kIntervalDay: {
      _internal_mutable_interval_day()->::substrait::Type_IntervalDay::MergeFrom(from._internal_interval_day());
      break;
    }
    case kTimestampTz: {
      _internal_mutable_timestamp_tz()->::substrait::Type_TimestampTZ::MergeFrom(from._internal_timestamp_tz());
      break;
    }
    case kUuid: {
      _internal_mutable_uuid()->::substrait::Type_UUID::MergeFrom(from._internal_uuid());
      break;
    }
    case kFixedChar: {
      _internal_mutable_fixed_char()->::substrait::ParameterizedType_ParameterizedFixedChar::MergeFrom(from._internal_fixed_char());
      break;
    }
    case kVarchar: {
      _internal_mutable_varchar()->::substrait::ParameterizedType_ParameterizedVarChar::MergeFrom(from._internal_varchar());
      break;
    }
    case kFixedBinary: {
      _internal_mutable_fixed_binary()->::substrait::ParameterizedType_ParameterizedFixedBinary::MergeFrom(from._internal_fixed_binary());
      break;
    }
    case kDecimal: {
      _internal_mutable_decimal()->::substrait::ParameterizedType_ParameterizedDecimal::MergeFrom(from._internal_decimal());
      break;
    }
    case kStruct: {
      _internal_mutable_struct_()->::substrait::ParameterizedType_ParameterizedStruct::MergeFrom(from._internal_struct_());
      break;
    }
    case kList: {
      _internal_mutable_list()->::substrait::ParameterizedType_ParameterizedList::MergeFrom(from._internal_list());
      break;
    }
    case kMap: {
      _internal_mutable_map()->::substrait::ParameterizedType_ParameterizedMap::MergeFrom(from._internal_map());
      break;
    }
    case kUserDefinedPointer: {
      _internal_set_user_defined_pointer(from._internal_user_defined_pointer());
      break;
    }
    case kTypeParameter: {
      _internal_mutable_type_parameter()->::substrait::ParameterizedType_TypeParameter::MergeFrom(from._internal_type_parameter());
      break;
    }
    case KIND_NOT_SET: {
      break;
    }
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ParameterizedType::IsInitialized() const {
  return true;
}

void ParameterizedType::InternalSwap(ParameterizedType* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(kind_, other->kind_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
}

::PROTOBUF_NAMESPACE_ID::Metadata ParameterizedType::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_getter, &descriptor_table_substrait_2fparameterized_5ftypes_2eproto_once,
      file_level_metadata_substrait_2fparameterized_5ftypes_2eproto[12]);
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace substrait
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::substrait::ParameterizedType_TypeParameter* Arena::CreateMaybeMessage< ::substrait::ParameterizedType_TypeParameter >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::ParameterizedType_TypeParameter >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::ParameterizedType_IntegerParameter* Arena::CreateMaybeMessage< ::substrait::ParameterizedType_IntegerParameter >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::ParameterizedType_IntegerParameter >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::ParameterizedType_NullableInteger* Arena::CreateMaybeMessage< ::substrait::ParameterizedType_NullableInteger >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::ParameterizedType_NullableInteger >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::ParameterizedType_ParameterizedFixedChar* Arena::CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedFixedChar >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::ParameterizedType_ParameterizedFixedChar >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::ParameterizedType_ParameterizedVarChar* Arena::CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedVarChar >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::ParameterizedType_ParameterizedVarChar >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::ParameterizedType_ParameterizedFixedBinary* Arena::CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedFixedBinary >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::ParameterizedType_ParameterizedFixedBinary >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::ParameterizedType_ParameterizedDecimal* Arena::CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedDecimal >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::ParameterizedType_ParameterizedDecimal >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::ParameterizedType_ParameterizedStruct* Arena::CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedStruct >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::ParameterizedType_ParameterizedStruct >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::ParameterizedType_ParameterizedNamedStruct* Arena::CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedNamedStruct >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::ParameterizedType_ParameterizedNamedStruct >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::ParameterizedType_ParameterizedList* Arena::CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedList >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::ParameterizedType_ParameterizedList >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::ParameterizedType_ParameterizedMap* Arena::CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedMap >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::ParameterizedType_ParameterizedMap >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::ParameterizedType_IntegerOption* Arena::CreateMaybeMessage< ::substrait::ParameterizedType_IntegerOption >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::ParameterizedType_IntegerOption >(arena);
}
template<> PROTOBUF_NOINLINE ::substrait::ParameterizedType* Arena::CreateMaybeMessage< ::substrait::ParameterizedType >(Arena* arena) {
  return Arena::CreateMessageInternal< ::substrait::ParameterizedType >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)
#include <google/protobuf/port_undef.inc>
