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

#ifndef GOOGLE_PROTOBUF_INCLUDED_substrait_2fparameterized_5ftypes_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_substrait_2fparameterized_5ftypes_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3019000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3019003 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_table_driven.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/metadata_lite.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
#include <google/protobuf/unknown_field_set.h>
#include "substrait/type.pb.h"
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_substrait_2fparameterized_5ftypes_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_substrait_2fparameterized_5ftypes_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[13]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
  static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
  static const uint32_t offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_substrait_2fparameterized_5ftypes_2eproto;
namespace substrait {
class ParameterizedType;
struct ParameterizedTypeDefaultTypeInternal;
extern ParameterizedTypeDefaultTypeInternal _ParameterizedType_default_instance_;
class ParameterizedType_IntegerOption;
struct ParameterizedType_IntegerOptionDefaultTypeInternal;
extern ParameterizedType_IntegerOptionDefaultTypeInternal _ParameterizedType_IntegerOption_default_instance_;
class ParameterizedType_IntegerParameter;
struct ParameterizedType_IntegerParameterDefaultTypeInternal;
extern ParameterizedType_IntegerParameterDefaultTypeInternal _ParameterizedType_IntegerParameter_default_instance_;
class ParameterizedType_NullableInteger;
struct ParameterizedType_NullableIntegerDefaultTypeInternal;
extern ParameterizedType_NullableIntegerDefaultTypeInternal _ParameterizedType_NullableInteger_default_instance_;
class ParameterizedType_ParameterizedDecimal;
struct ParameterizedType_ParameterizedDecimalDefaultTypeInternal;
extern ParameterizedType_ParameterizedDecimalDefaultTypeInternal _ParameterizedType_ParameterizedDecimal_default_instance_;
class ParameterizedType_ParameterizedFixedBinary;
struct ParameterizedType_ParameterizedFixedBinaryDefaultTypeInternal;
extern ParameterizedType_ParameterizedFixedBinaryDefaultTypeInternal _ParameterizedType_ParameterizedFixedBinary_default_instance_;
class ParameterizedType_ParameterizedFixedChar;
struct ParameterizedType_ParameterizedFixedCharDefaultTypeInternal;
extern ParameterizedType_ParameterizedFixedCharDefaultTypeInternal _ParameterizedType_ParameterizedFixedChar_default_instance_;
class ParameterizedType_ParameterizedList;
struct ParameterizedType_ParameterizedListDefaultTypeInternal;
extern ParameterizedType_ParameterizedListDefaultTypeInternal _ParameterizedType_ParameterizedList_default_instance_;
class ParameterizedType_ParameterizedMap;
struct ParameterizedType_ParameterizedMapDefaultTypeInternal;
extern ParameterizedType_ParameterizedMapDefaultTypeInternal _ParameterizedType_ParameterizedMap_default_instance_;
class ParameterizedType_ParameterizedNamedStruct;
struct ParameterizedType_ParameterizedNamedStructDefaultTypeInternal;
extern ParameterizedType_ParameterizedNamedStructDefaultTypeInternal _ParameterizedType_ParameterizedNamedStruct_default_instance_;
class ParameterizedType_ParameterizedStruct;
struct ParameterizedType_ParameterizedStructDefaultTypeInternal;
extern ParameterizedType_ParameterizedStructDefaultTypeInternal _ParameterizedType_ParameterizedStruct_default_instance_;
class ParameterizedType_ParameterizedVarChar;
struct ParameterizedType_ParameterizedVarCharDefaultTypeInternal;
extern ParameterizedType_ParameterizedVarCharDefaultTypeInternal _ParameterizedType_ParameterizedVarChar_default_instance_;
class ParameterizedType_TypeParameter;
struct ParameterizedType_TypeParameterDefaultTypeInternal;
extern ParameterizedType_TypeParameterDefaultTypeInternal _ParameterizedType_TypeParameter_default_instance_;
}  // namespace substrait
PROTOBUF_NAMESPACE_OPEN
template<> ::substrait::ParameterizedType* Arena::CreateMaybeMessage<::substrait::ParameterizedType>(Arena*);
template<> ::substrait::ParameterizedType_IntegerOption* Arena::CreateMaybeMessage<::substrait::ParameterizedType_IntegerOption>(Arena*);
template<> ::substrait::ParameterizedType_IntegerParameter* Arena::CreateMaybeMessage<::substrait::ParameterizedType_IntegerParameter>(Arena*);
template<> ::substrait::ParameterizedType_NullableInteger* Arena::CreateMaybeMessage<::substrait::ParameterizedType_NullableInteger>(Arena*);
template<> ::substrait::ParameterizedType_ParameterizedDecimal* Arena::CreateMaybeMessage<::substrait::ParameterizedType_ParameterizedDecimal>(Arena*);
template<> ::substrait::ParameterizedType_ParameterizedFixedBinary* Arena::CreateMaybeMessage<::substrait::ParameterizedType_ParameterizedFixedBinary>(Arena*);
template<> ::substrait::ParameterizedType_ParameterizedFixedChar* Arena::CreateMaybeMessage<::substrait::ParameterizedType_ParameterizedFixedChar>(Arena*);
template<> ::substrait::ParameterizedType_ParameterizedList* Arena::CreateMaybeMessage<::substrait::ParameterizedType_ParameterizedList>(Arena*);
template<> ::substrait::ParameterizedType_ParameterizedMap* Arena::CreateMaybeMessage<::substrait::ParameterizedType_ParameterizedMap>(Arena*);
template<> ::substrait::ParameterizedType_ParameterizedNamedStruct* Arena::CreateMaybeMessage<::substrait::ParameterizedType_ParameterizedNamedStruct>(Arena*);
template<> ::substrait::ParameterizedType_ParameterizedStruct* Arena::CreateMaybeMessage<::substrait::ParameterizedType_ParameterizedStruct>(Arena*);
template<> ::substrait::ParameterizedType_ParameterizedVarChar* Arena::CreateMaybeMessage<::substrait::ParameterizedType_ParameterizedVarChar>(Arena*);
template<> ::substrait::ParameterizedType_TypeParameter* Arena::CreateMaybeMessage<::substrait::ParameterizedType_TypeParameter>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace substrait {

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

class ParameterizedType_TypeParameter final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:substrait.ParameterizedType.TypeParameter) */ {
 public:
  inline ParameterizedType_TypeParameter() : ParameterizedType_TypeParameter(nullptr) {}
  ~ParameterizedType_TypeParameter() override;
  explicit constexpr ParameterizedType_TypeParameter(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ParameterizedType_TypeParameter(const ParameterizedType_TypeParameter& from);
  ParameterizedType_TypeParameter(ParameterizedType_TypeParameter&& from) noexcept
    : ParameterizedType_TypeParameter() {
    *this = ::std::move(from);
  }

  inline ParameterizedType_TypeParameter& operator=(const ParameterizedType_TypeParameter& from) {
    CopyFrom(from);
    return *this;
  }
  inline ParameterizedType_TypeParameter& operator=(ParameterizedType_TypeParameter&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ParameterizedType_TypeParameter& default_instance() {
    return *internal_default_instance();
  }
  static inline const ParameterizedType_TypeParameter* internal_default_instance() {
    return reinterpret_cast<const ParameterizedType_TypeParameter*>(
               &_ParameterizedType_TypeParameter_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(ParameterizedType_TypeParameter& a, ParameterizedType_TypeParameter& b) {
    a.Swap(&b);
  }
  inline void Swap(ParameterizedType_TypeParameter* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ParameterizedType_TypeParameter* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ParameterizedType_TypeParameter* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ParameterizedType_TypeParameter>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ParameterizedType_TypeParameter& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ParameterizedType_TypeParameter& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ParameterizedType_TypeParameter* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "substrait.ParameterizedType.TypeParameter";
  }
  protected:
  explicit ParameterizedType_TypeParameter(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kBoundsFieldNumber = 2,
    kNameFieldNumber = 1,
  };
  // repeated .substrait.ParameterizedType bounds = 2 [json_name = "bounds"];
  int bounds_size() const;
  private:
  int _internal_bounds_size() const;
  public:
  void clear_bounds();
  ::substrait::ParameterizedType* mutable_bounds(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::substrait::ParameterizedType >*
      mutable_bounds();
  private:
  const ::substrait::ParameterizedType& _internal_bounds(int index) const;
  ::substrait::ParameterizedType* _internal_add_bounds();
  public:
  const ::substrait::ParameterizedType& bounds(int index) const;
  ::substrait::ParameterizedType* add_bounds();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::substrait::ParameterizedType >&
      bounds() const;

  // string name = 1 [json_name = "name"];
  void clear_name();
  const std::string& name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* name);
  private:
  const std::string& _internal_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
  std::string* _internal_mutable_name();
  public:

  // @@protoc_insertion_point(class_scope:substrait.ParameterizedType.TypeParameter)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::substrait::ParameterizedType > bounds_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_substrait_2fparameterized_5ftypes_2eproto;
};
// -------------------------------------------------------------------

class ParameterizedType_IntegerParameter final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:substrait.ParameterizedType.IntegerParameter) */ {
 public:
  inline ParameterizedType_IntegerParameter() : ParameterizedType_IntegerParameter(nullptr) {}
  ~ParameterizedType_IntegerParameter() override;
  explicit constexpr ParameterizedType_IntegerParameter(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ParameterizedType_IntegerParameter(const ParameterizedType_IntegerParameter& from);
  ParameterizedType_IntegerParameter(ParameterizedType_IntegerParameter&& from) noexcept
    : ParameterizedType_IntegerParameter() {
    *this = ::std::move(from);
  }

  inline ParameterizedType_IntegerParameter& operator=(const ParameterizedType_IntegerParameter& from) {
    CopyFrom(from);
    return *this;
  }
  inline ParameterizedType_IntegerParameter& operator=(ParameterizedType_IntegerParameter&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ParameterizedType_IntegerParameter& default_instance() {
    return *internal_default_instance();
  }
  static inline const ParameterizedType_IntegerParameter* internal_default_instance() {
    return reinterpret_cast<const ParameterizedType_IntegerParameter*>(
               &_ParameterizedType_IntegerParameter_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(ParameterizedType_IntegerParameter& a, ParameterizedType_IntegerParameter& b) {
    a.Swap(&b);
  }
  inline void Swap(ParameterizedType_IntegerParameter* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ParameterizedType_IntegerParameter* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ParameterizedType_IntegerParameter* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ParameterizedType_IntegerParameter>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ParameterizedType_IntegerParameter& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ParameterizedType_IntegerParameter& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ParameterizedType_IntegerParameter* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "substrait.ParameterizedType.IntegerParameter";
  }
  protected:
  explicit ParameterizedType_IntegerParameter(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kNameFieldNumber = 1,
    kRangeStartInclusiveFieldNumber = 2,
    kRangeEndExclusiveFieldNumber = 3,
  };
  // string name = 1 [json_name = "name"];
  void clear_name();
  const std::string& name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* name);
  private:
  const std::string& _internal_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
  std::string* _internal_mutable_name();
  public:

  // .substrait.ParameterizedType.NullableInteger range_start_inclusive = 2 [json_name = "rangeStartInclusive"];
  bool has_range_start_inclusive() const;
  private:
  bool _internal_has_range_start_inclusive() const;
  public:
  void clear_range_start_inclusive();
  const ::substrait::ParameterizedType_NullableInteger& range_start_inclusive() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_NullableInteger* release_range_start_inclusive();
  ::substrait::ParameterizedType_NullableInteger* mutable_range_start_inclusive();
  void set_allocated_range_start_inclusive(::substrait::ParameterizedType_NullableInteger* range_start_inclusive);
  private:
  const ::substrait::ParameterizedType_NullableInteger& _internal_range_start_inclusive() const;
  ::substrait::ParameterizedType_NullableInteger* _internal_mutable_range_start_inclusive();
  public:
  void unsafe_arena_set_allocated_range_start_inclusive(
      ::substrait::ParameterizedType_NullableInteger* range_start_inclusive);
  ::substrait::ParameterizedType_NullableInteger* unsafe_arena_release_range_start_inclusive();

  // .substrait.ParameterizedType.NullableInteger range_end_exclusive = 3 [json_name = "rangeEndExclusive"];
  bool has_range_end_exclusive() const;
  private:
  bool _internal_has_range_end_exclusive() const;
  public:
  void clear_range_end_exclusive();
  const ::substrait::ParameterizedType_NullableInteger& range_end_exclusive() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_NullableInteger* release_range_end_exclusive();
  ::substrait::ParameterizedType_NullableInteger* mutable_range_end_exclusive();
  void set_allocated_range_end_exclusive(::substrait::ParameterizedType_NullableInteger* range_end_exclusive);
  private:
  const ::substrait::ParameterizedType_NullableInteger& _internal_range_end_exclusive() const;
  ::substrait::ParameterizedType_NullableInteger* _internal_mutable_range_end_exclusive();
  public:
  void unsafe_arena_set_allocated_range_end_exclusive(
      ::substrait::ParameterizedType_NullableInteger* range_end_exclusive);
  ::substrait::ParameterizedType_NullableInteger* unsafe_arena_release_range_end_exclusive();

  // @@protoc_insertion_point(class_scope:substrait.ParameterizedType.IntegerParameter)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
  ::substrait::ParameterizedType_NullableInteger* range_start_inclusive_;
  ::substrait::ParameterizedType_NullableInteger* range_end_exclusive_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_substrait_2fparameterized_5ftypes_2eproto;
};
// -------------------------------------------------------------------

class ParameterizedType_NullableInteger final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:substrait.ParameterizedType.NullableInteger) */ {
 public:
  inline ParameterizedType_NullableInteger() : ParameterizedType_NullableInteger(nullptr) {}
  ~ParameterizedType_NullableInteger() override;
  explicit constexpr ParameterizedType_NullableInteger(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ParameterizedType_NullableInteger(const ParameterizedType_NullableInteger& from);
  ParameterizedType_NullableInteger(ParameterizedType_NullableInteger&& from) noexcept
    : ParameterizedType_NullableInteger() {
    *this = ::std::move(from);
  }

  inline ParameterizedType_NullableInteger& operator=(const ParameterizedType_NullableInteger& from) {
    CopyFrom(from);
    return *this;
  }
  inline ParameterizedType_NullableInteger& operator=(ParameterizedType_NullableInteger&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ParameterizedType_NullableInteger& default_instance() {
    return *internal_default_instance();
  }
  static inline const ParameterizedType_NullableInteger* internal_default_instance() {
    return reinterpret_cast<const ParameterizedType_NullableInteger*>(
               &_ParameterizedType_NullableInteger_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(ParameterizedType_NullableInteger& a, ParameterizedType_NullableInteger& b) {
    a.Swap(&b);
  }
  inline void Swap(ParameterizedType_NullableInteger* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ParameterizedType_NullableInteger* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ParameterizedType_NullableInteger* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ParameterizedType_NullableInteger>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ParameterizedType_NullableInteger& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ParameterizedType_NullableInteger& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ParameterizedType_NullableInteger* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "substrait.ParameterizedType.NullableInteger";
  }
  protected:
  explicit ParameterizedType_NullableInteger(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kValueFieldNumber = 1,
  };
  // int64 value = 1 [json_name = "value"];
  void clear_value();
  int64_t value() const;
  void set_value(int64_t value);
  private:
  int64_t _internal_value() const;
  void _internal_set_value(int64_t value);
  public:

  // @@protoc_insertion_point(class_scope:substrait.ParameterizedType.NullableInteger)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  int64_t value_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_substrait_2fparameterized_5ftypes_2eproto;
};
// -------------------------------------------------------------------

class ParameterizedType_ParameterizedFixedChar final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:substrait.ParameterizedType.ParameterizedFixedChar) */ {
 public:
  inline ParameterizedType_ParameterizedFixedChar() : ParameterizedType_ParameterizedFixedChar(nullptr) {}
  ~ParameterizedType_ParameterizedFixedChar() override;
  explicit constexpr ParameterizedType_ParameterizedFixedChar(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ParameterizedType_ParameterizedFixedChar(const ParameterizedType_ParameterizedFixedChar& from);
  ParameterizedType_ParameterizedFixedChar(ParameterizedType_ParameterizedFixedChar&& from) noexcept
    : ParameterizedType_ParameterizedFixedChar() {
    *this = ::std::move(from);
  }

  inline ParameterizedType_ParameterizedFixedChar& operator=(const ParameterizedType_ParameterizedFixedChar& from) {
    CopyFrom(from);
    return *this;
  }
  inline ParameterizedType_ParameterizedFixedChar& operator=(ParameterizedType_ParameterizedFixedChar&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ParameterizedType_ParameterizedFixedChar& default_instance() {
    return *internal_default_instance();
  }
  static inline const ParameterizedType_ParameterizedFixedChar* internal_default_instance() {
    return reinterpret_cast<const ParameterizedType_ParameterizedFixedChar*>(
               &_ParameterizedType_ParameterizedFixedChar_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(ParameterizedType_ParameterizedFixedChar& a, ParameterizedType_ParameterizedFixedChar& b) {
    a.Swap(&b);
  }
  inline void Swap(ParameterizedType_ParameterizedFixedChar* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ParameterizedType_ParameterizedFixedChar* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ParameterizedType_ParameterizedFixedChar* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ParameterizedType_ParameterizedFixedChar>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ParameterizedType_ParameterizedFixedChar& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ParameterizedType_ParameterizedFixedChar& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ParameterizedType_ParameterizedFixedChar* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "substrait.ParameterizedType.ParameterizedFixedChar";
  }
  protected:
  explicit ParameterizedType_ParameterizedFixedChar(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kLengthFieldNumber = 1,
    kVariationPointerFieldNumber = 2,
    kNullabilityFieldNumber = 3,
  };
  // .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
  bool has_length() const;
  private:
  bool _internal_has_length() const;
  public:
  void clear_length();
  const ::substrait::ParameterizedType_IntegerOption& length() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_IntegerOption* release_length();
  ::substrait::ParameterizedType_IntegerOption* mutable_length();
  void set_allocated_length(::substrait::ParameterizedType_IntegerOption* length);
  private:
  const ::substrait::ParameterizedType_IntegerOption& _internal_length() const;
  ::substrait::ParameterizedType_IntegerOption* _internal_mutable_length();
  public:
  void unsafe_arena_set_allocated_length(
      ::substrait::ParameterizedType_IntegerOption* length);
  ::substrait::ParameterizedType_IntegerOption* unsafe_arena_release_length();

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  void clear_variation_pointer();
  uint32_t variation_pointer() const;
  void set_variation_pointer(uint32_t value);
  private:
  uint32_t _internal_variation_pointer() const;
  void _internal_set_variation_pointer(uint32_t value);
  public:

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  void clear_nullability();
  ::substrait::Type_Nullability nullability() const;
  void set_nullability(::substrait::Type_Nullability value);
  private:
  ::substrait::Type_Nullability _internal_nullability() const;
  void _internal_set_nullability(::substrait::Type_Nullability value);
  public:

  // @@protoc_insertion_point(class_scope:substrait.ParameterizedType.ParameterizedFixedChar)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::substrait::ParameterizedType_IntegerOption* length_;
  uint32_t variation_pointer_;
  int nullability_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_substrait_2fparameterized_5ftypes_2eproto;
};
// -------------------------------------------------------------------

class ParameterizedType_ParameterizedVarChar final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:substrait.ParameterizedType.ParameterizedVarChar) */ {
 public:
  inline ParameterizedType_ParameterizedVarChar() : ParameterizedType_ParameterizedVarChar(nullptr) {}
  ~ParameterizedType_ParameterizedVarChar() override;
  explicit constexpr ParameterizedType_ParameterizedVarChar(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ParameterizedType_ParameterizedVarChar(const ParameterizedType_ParameterizedVarChar& from);
  ParameterizedType_ParameterizedVarChar(ParameterizedType_ParameterizedVarChar&& from) noexcept
    : ParameterizedType_ParameterizedVarChar() {
    *this = ::std::move(from);
  }

  inline ParameterizedType_ParameterizedVarChar& operator=(const ParameterizedType_ParameterizedVarChar& from) {
    CopyFrom(from);
    return *this;
  }
  inline ParameterizedType_ParameterizedVarChar& operator=(ParameterizedType_ParameterizedVarChar&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ParameterizedType_ParameterizedVarChar& default_instance() {
    return *internal_default_instance();
  }
  static inline const ParameterizedType_ParameterizedVarChar* internal_default_instance() {
    return reinterpret_cast<const ParameterizedType_ParameterizedVarChar*>(
               &_ParameterizedType_ParameterizedVarChar_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(ParameterizedType_ParameterizedVarChar& a, ParameterizedType_ParameterizedVarChar& b) {
    a.Swap(&b);
  }
  inline void Swap(ParameterizedType_ParameterizedVarChar* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ParameterizedType_ParameterizedVarChar* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ParameterizedType_ParameterizedVarChar* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ParameterizedType_ParameterizedVarChar>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ParameterizedType_ParameterizedVarChar& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ParameterizedType_ParameterizedVarChar& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ParameterizedType_ParameterizedVarChar* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "substrait.ParameterizedType.ParameterizedVarChar";
  }
  protected:
  explicit ParameterizedType_ParameterizedVarChar(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kLengthFieldNumber = 1,
    kVariationPointerFieldNumber = 2,
    kNullabilityFieldNumber = 3,
  };
  // .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
  bool has_length() const;
  private:
  bool _internal_has_length() const;
  public:
  void clear_length();
  const ::substrait::ParameterizedType_IntegerOption& length() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_IntegerOption* release_length();
  ::substrait::ParameterizedType_IntegerOption* mutable_length();
  void set_allocated_length(::substrait::ParameterizedType_IntegerOption* length);
  private:
  const ::substrait::ParameterizedType_IntegerOption& _internal_length() const;
  ::substrait::ParameterizedType_IntegerOption* _internal_mutable_length();
  public:
  void unsafe_arena_set_allocated_length(
      ::substrait::ParameterizedType_IntegerOption* length);
  ::substrait::ParameterizedType_IntegerOption* unsafe_arena_release_length();

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  void clear_variation_pointer();
  uint32_t variation_pointer() const;
  void set_variation_pointer(uint32_t value);
  private:
  uint32_t _internal_variation_pointer() const;
  void _internal_set_variation_pointer(uint32_t value);
  public:

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  void clear_nullability();
  ::substrait::Type_Nullability nullability() const;
  void set_nullability(::substrait::Type_Nullability value);
  private:
  ::substrait::Type_Nullability _internal_nullability() const;
  void _internal_set_nullability(::substrait::Type_Nullability value);
  public:

  // @@protoc_insertion_point(class_scope:substrait.ParameterizedType.ParameterizedVarChar)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::substrait::ParameterizedType_IntegerOption* length_;
  uint32_t variation_pointer_;
  int nullability_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_substrait_2fparameterized_5ftypes_2eproto;
};
// -------------------------------------------------------------------

class ParameterizedType_ParameterizedFixedBinary final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:substrait.ParameterizedType.ParameterizedFixedBinary) */ {
 public:
  inline ParameterizedType_ParameterizedFixedBinary() : ParameterizedType_ParameterizedFixedBinary(nullptr) {}
  ~ParameterizedType_ParameterizedFixedBinary() override;
  explicit constexpr ParameterizedType_ParameterizedFixedBinary(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ParameterizedType_ParameterizedFixedBinary(const ParameterizedType_ParameterizedFixedBinary& from);
  ParameterizedType_ParameterizedFixedBinary(ParameterizedType_ParameterizedFixedBinary&& from) noexcept
    : ParameterizedType_ParameterizedFixedBinary() {
    *this = ::std::move(from);
  }

  inline ParameterizedType_ParameterizedFixedBinary& operator=(const ParameterizedType_ParameterizedFixedBinary& from) {
    CopyFrom(from);
    return *this;
  }
  inline ParameterizedType_ParameterizedFixedBinary& operator=(ParameterizedType_ParameterizedFixedBinary&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ParameterizedType_ParameterizedFixedBinary& default_instance() {
    return *internal_default_instance();
  }
  static inline const ParameterizedType_ParameterizedFixedBinary* internal_default_instance() {
    return reinterpret_cast<const ParameterizedType_ParameterizedFixedBinary*>(
               &_ParameterizedType_ParameterizedFixedBinary_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(ParameterizedType_ParameterizedFixedBinary& a, ParameterizedType_ParameterizedFixedBinary& b) {
    a.Swap(&b);
  }
  inline void Swap(ParameterizedType_ParameterizedFixedBinary* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ParameterizedType_ParameterizedFixedBinary* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ParameterizedType_ParameterizedFixedBinary* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ParameterizedType_ParameterizedFixedBinary>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ParameterizedType_ParameterizedFixedBinary& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ParameterizedType_ParameterizedFixedBinary& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ParameterizedType_ParameterizedFixedBinary* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "substrait.ParameterizedType.ParameterizedFixedBinary";
  }
  protected:
  explicit ParameterizedType_ParameterizedFixedBinary(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kLengthFieldNumber = 1,
    kVariationPointerFieldNumber = 2,
    kNullabilityFieldNumber = 3,
  };
  // .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
  bool has_length() const;
  private:
  bool _internal_has_length() const;
  public:
  void clear_length();
  const ::substrait::ParameterizedType_IntegerOption& length() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_IntegerOption* release_length();
  ::substrait::ParameterizedType_IntegerOption* mutable_length();
  void set_allocated_length(::substrait::ParameterizedType_IntegerOption* length);
  private:
  const ::substrait::ParameterizedType_IntegerOption& _internal_length() const;
  ::substrait::ParameterizedType_IntegerOption* _internal_mutable_length();
  public:
  void unsafe_arena_set_allocated_length(
      ::substrait::ParameterizedType_IntegerOption* length);
  ::substrait::ParameterizedType_IntegerOption* unsafe_arena_release_length();

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  void clear_variation_pointer();
  uint32_t variation_pointer() const;
  void set_variation_pointer(uint32_t value);
  private:
  uint32_t _internal_variation_pointer() const;
  void _internal_set_variation_pointer(uint32_t value);
  public:

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  void clear_nullability();
  ::substrait::Type_Nullability nullability() const;
  void set_nullability(::substrait::Type_Nullability value);
  private:
  ::substrait::Type_Nullability _internal_nullability() const;
  void _internal_set_nullability(::substrait::Type_Nullability value);
  public:

  // @@protoc_insertion_point(class_scope:substrait.ParameterizedType.ParameterizedFixedBinary)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::substrait::ParameterizedType_IntegerOption* length_;
  uint32_t variation_pointer_;
  int nullability_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_substrait_2fparameterized_5ftypes_2eproto;
};
// -------------------------------------------------------------------

class ParameterizedType_ParameterizedDecimal final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:substrait.ParameterizedType.ParameterizedDecimal) */ {
 public:
  inline ParameterizedType_ParameterizedDecimal() : ParameterizedType_ParameterizedDecimal(nullptr) {}
  ~ParameterizedType_ParameterizedDecimal() override;
  explicit constexpr ParameterizedType_ParameterizedDecimal(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ParameterizedType_ParameterizedDecimal(const ParameterizedType_ParameterizedDecimal& from);
  ParameterizedType_ParameterizedDecimal(ParameterizedType_ParameterizedDecimal&& from) noexcept
    : ParameterizedType_ParameterizedDecimal() {
    *this = ::std::move(from);
  }

  inline ParameterizedType_ParameterizedDecimal& operator=(const ParameterizedType_ParameterizedDecimal& from) {
    CopyFrom(from);
    return *this;
  }
  inline ParameterizedType_ParameterizedDecimal& operator=(ParameterizedType_ParameterizedDecimal&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ParameterizedType_ParameterizedDecimal& default_instance() {
    return *internal_default_instance();
  }
  static inline const ParameterizedType_ParameterizedDecimal* internal_default_instance() {
    return reinterpret_cast<const ParameterizedType_ParameterizedDecimal*>(
               &_ParameterizedType_ParameterizedDecimal_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

  friend void swap(ParameterizedType_ParameterizedDecimal& a, ParameterizedType_ParameterizedDecimal& b) {
    a.Swap(&b);
  }
  inline void Swap(ParameterizedType_ParameterizedDecimal* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ParameterizedType_ParameterizedDecimal* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ParameterizedType_ParameterizedDecimal* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ParameterizedType_ParameterizedDecimal>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ParameterizedType_ParameterizedDecimal& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ParameterizedType_ParameterizedDecimal& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ParameterizedType_ParameterizedDecimal* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "substrait.ParameterizedType.ParameterizedDecimal";
  }
  protected:
  explicit ParameterizedType_ParameterizedDecimal(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kScaleFieldNumber = 1,
    kPrecisionFieldNumber = 2,
    kVariationPointerFieldNumber = 3,
    kNullabilityFieldNumber = 4,
  };
  // .substrait.ParameterizedType.IntegerOption scale = 1 [json_name = "scale"];
  bool has_scale() const;
  private:
  bool _internal_has_scale() const;
  public:
  void clear_scale();
  const ::substrait::ParameterizedType_IntegerOption& scale() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_IntegerOption* release_scale();
  ::substrait::ParameterizedType_IntegerOption* mutable_scale();
  void set_allocated_scale(::substrait::ParameterizedType_IntegerOption* scale);
  private:
  const ::substrait::ParameterizedType_IntegerOption& _internal_scale() const;
  ::substrait::ParameterizedType_IntegerOption* _internal_mutable_scale();
  public:
  void unsafe_arena_set_allocated_scale(
      ::substrait::ParameterizedType_IntegerOption* scale);
  ::substrait::ParameterizedType_IntegerOption* unsafe_arena_release_scale();

  // .substrait.ParameterizedType.IntegerOption precision = 2 [json_name = "precision"];
  bool has_precision() const;
  private:
  bool _internal_has_precision() const;
  public:
  void clear_precision();
  const ::substrait::ParameterizedType_IntegerOption& precision() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_IntegerOption* release_precision();
  ::substrait::ParameterizedType_IntegerOption* mutable_precision();
  void set_allocated_precision(::substrait::ParameterizedType_IntegerOption* precision);
  private:
  const ::substrait::ParameterizedType_IntegerOption& _internal_precision() const;
  ::substrait::ParameterizedType_IntegerOption* _internal_mutable_precision();
  public:
  void unsafe_arena_set_allocated_precision(
      ::substrait::ParameterizedType_IntegerOption* precision);
  ::substrait::ParameterizedType_IntegerOption* unsafe_arena_release_precision();

  // uint32 variation_pointer = 3 [json_name = "variationPointer"];
  void clear_variation_pointer();
  uint32_t variation_pointer() const;
  void set_variation_pointer(uint32_t value);
  private:
  uint32_t _internal_variation_pointer() const;
  void _internal_set_variation_pointer(uint32_t value);
  public:

  // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
  void clear_nullability();
  ::substrait::Type_Nullability nullability() const;
  void set_nullability(::substrait::Type_Nullability value);
  private:
  ::substrait::Type_Nullability _internal_nullability() const;
  void _internal_set_nullability(::substrait::Type_Nullability value);
  public:

  // @@protoc_insertion_point(class_scope:substrait.ParameterizedType.ParameterizedDecimal)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::substrait::ParameterizedType_IntegerOption* scale_;
  ::substrait::ParameterizedType_IntegerOption* precision_;
  uint32_t variation_pointer_;
  int nullability_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_substrait_2fparameterized_5ftypes_2eproto;
};
// -------------------------------------------------------------------

class ParameterizedType_ParameterizedStruct final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:substrait.ParameterizedType.ParameterizedStruct) */ {
 public:
  inline ParameterizedType_ParameterizedStruct() : ParameterizedType_ParameterizedStruct(nullptr) {}
  ~ParameterizedType_ParameterizedStruct() override;
  explicit constexpr ParameterizedType_ParameterizedStruct(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ParameterizedType_ParameterizedStruct(const ParameterizedType_ParameterizedStruct& from);
  ParameterizedType_ParameterizedStruct(ParameterizedType_ParameterizedStruct&& from) noexcept
    : ParameterizedType_ParameterizedStruct() {
    *this = ::std::move(from);
  }

  inline ParameterizedType_ParameterizedStruct& operator=(const ParameterizedType_ParameterizedStruct& from) {
    CopyFrom(from);
    return *this;
  }
  inline ParameterizedType_ParameterizedStruct& operator=(ParameterizedType_ParameterizedStruct&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ParameterizedType_ParameterizedStruct& default_instance() {
    return *internal_default_instance();
  }
  static inline const ParameterizedType_ParameterizedStruct* internal_default_instance() {
    return reinterpret_cast<const ParameterizedType_ParameterizedStruct*>(
               &_ParameterizedType_ParameterizedStruct_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

  friend void swap(ParameterizedType_ParameterizedStruct& a, ParameterizedType_ParameterizedStruct& b) {
    a.Swap(&b);
  }
  inline void Swap(ParameterizedType_ParameterizedStruct* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ParameterizedType_ParameterizedStruct* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ParameterizedType_ParameterizedStruct* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ParameterizedType_ParameterizedStruct>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ParameterizedType_ParameterizedStruct& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ParameterizedType_ParameterizedStruct& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ParameterizedType_ParameterizedStruct* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "substrait.ParameterizedType.ParameterizedStruct";
  }
  protected:
  explicit ParameterizedType_ParameterizedStruct(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kTypesFieldNumber = 1,
    kVariationPointerFieldNumber = 2,
    kNullabilityFieldNumber = 3,
  };
  // repeated .substrait.ParameterizedType types = 1 [json_name = "types"];
  int types_size() const;
  private:
  int _internal_types_size() const;
  public:
  void clear_types();
  ::substrait::ParameterizedType* mutable_types(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::substrait::ParameterizedType >*
      mutable_types();
  private:
  const ::substrait::ParameterizedType& _internal_types(int index) const;
  ::substrait::ParameterizedType* _internal_add_types();
  public:
  const ::substrait::ParameterizedType& types(int index) const;
  ::substrait::ParameterizedType* add_types();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::substrait::ParameterizedType >&
      types() const;

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  void clear_variation_pointer();
  uint32_t variation_pointer() const;
  void set_variation_pointer(uint32_t value);
  private:
  uint32_t _internal_variation_pointer() const;
  void _internal_set_variation_pointer(uint32_t value);
  public:

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  void clear_nullability();
  ::substrait::Type_Nullability nullability() const;
  void set_nullability(::substrait::Type_Nullability value);
  private:
  ::substrait::Type_Nullability _internal_nullability() const;
  void _internal_set_nullability(::substrait::Type_Nullability value);
  public:

  // @@protoc_insertion_point(class_scope:substrait.ParameterizedType.ParameterizedStruct)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::substrait::ParameterizedType > types_;
  uint32_t variation_pointer_;
  int nullability_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_substrait_2fparameterized_5ftypes_2eproto;
};
// -------------------------------------------------------------------

class ParameterizedType_ParameterizedNamedStruct final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:substrait.ParameterizedType.ParameterizedNamedStruct) */ {
 public:
  inline ParameterizedType_ParameterizedNamedStruct() : ParameterizedType_ParameterizedNamedStruct(nullptr) {}
  ~ParameterizedType_ParameterizedNamedStruct() override;
  explicit constexpr ParameterizedType_ParameterizedNamedStruct(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ParameterizedType_ParameterizedNamedStruct(const ParameterizedType_ParameterizedNamedStruct& from);
  ParameterizedType_ParameterizedNamedStruct(ParameterizedType_ParameterizedNamedStruct&& from) noexcept
    : ParameterizedType_ParameterizedNamedStruct() {
    *this = ::std::move(from);
  }

  inline ParameterizedType_ParameterizedNamedStruct& operator=(const ParameterizedType_ParameterizedNamedStruct& from) {
    CopyFrom(from);
    return *this;
  }
  inline ParameterizedType_ParameterizedNamedStruct& operator=(ParameterizedType_ParameterizedNamedStruct&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ParameterizedType_ParameterizedNamedStruct& default_instance() {
    return *internal_default_instance();
  }
  static inline const ParameterizedType_ParameterizedNamedStruct* internal_default_instance() {
    return reinterpret_cast<const ParameterizedType_ParameterizedNamedStruct*>(
               &_ParameterizedType_ParameterizedNamedStruct_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    8;

  friend void swap(ParameterizedType_ParameterizedNamedStruct& a, ParameterizedType_ParameterizedNamedStruct& b) {
    a.Swap(&b);
  }
  inline void Swap(ParameterizedType_ParameterizedNamedStruct* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ParameterizedType_ParameterizedNamedStruct* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ParameterizedType_ParameterizedNamedStruct* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ParameterizedType_ParameterizedNamedStruct>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ParameterizedType_ParameterizedNamedStruct& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ParameterizedType_ParameterizedNamedStruct& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ParameterizedType_ParameterizedNamedStruct* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "substrait.ParameterizedType.ParameterizedNamedStruct";
  }
  protected:
  explicit ParameterizedType_ParameterizedNamedStruct(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kNamesFieldNumber = 1,
    kStructFieldNumber = 2,
  };
  // repeated string names = 1 [json_name = "names"];
  int names_size() const;
  private:
  int _internal_names_size() const;
  public:
  void clear_names();
  const std::string& names(int index) const;
  std::string* mutable_names(int index);
  void set_names(int index, const std::string& value);
  void set_names(int index, std::string&& value);
  void set_names(int index, const char* value);
  void set_names(int index, const char* value, size_t size);
  std::string* add_names();
  void add_names(const std::string& value);
  void add_names(std::string&& value);
  void add_names(const char* value);
  void add_names(const char* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& names() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_names();
  private:
  const std::string& _internal_names(int index) const;
  std::string* _internal_add_names();
  public:

  // .substrait.ParameterizedType.ParameterizedStruct struct = 2 [json_name = "struct"];
  bool has_struct_() const;
  private:
  bool _internal_has_struct_() const;
  public:
  void clear_struct_();
  const ::substrait::ParameterizedType_ParameterizedStruct& struct_() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_ParameterizedStruct* release_struct_();
  ::substrait::ParameterizedType_ParameterizedStruct* mutable_struct_();
  void set_allocated_struct_(::substrait::ParameterizedType_ParameterizedStruct* struct_);
  private:
  const ::substrait::ParameterizedType_ParameterizedStruct& _internal_struct_() const;
  ::substrait::ParameterizedType_ParameterizedStruct* _internal_mutable_struct_();
  public:
  void unsafe_arena_set_allocated_struct_(
      ::substrait::ParameterizedType_ParameterizedStruct* struct_);
  ::substrait::ParameterizedType_ParameterizedStruct* unsafe_arena_release_struct_();

  // @@protoc_insertion_point(class_scope:substrait.ParameterizedType.ParameterizedNamedStruct)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> names_;
  ::substrait::ParameterizedType_ParameterizedStruct* struct__;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_substrait_2fparameterized_5ftypes_2eproto;
};
// -------------------------------------------------------------------

class ParameterizedType_ParameterizedList final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:substrait.ParameterizedType.ParameterizedList) */ {
 public:
  inline ParameterizedType_ParameterizedList() : ParameterizedType_ParameterizedList(nullptr) {}
  ~ParameterizedType_ParameterizedList() override;
  explicit constexpr ParameterizedType_ParameterizedList(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ParameterizedType_ParameterizedList(const ParameterizedType_ParameterizedList& from);
  ParameterizedType_ParameterizedList(ParameterizedType_ParameterizedList&& from) noexcept
    : ParameterizedType_ParameterizedList() {
    *this = ::std::move(from);
  }

  inline ParameterizedType_ParameterizedList& operator=(const ParameterizedType_ParameterizedList& from) {
    CopyFrom(from);
    return *this;
  }
  inline ParameterizedType_ParameterizedList& operator=(ParameterizedType_ParameterizedList&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ParameterizedType_ParameterizedList& default_instance() {
    return *internal_default_instance();
  }
  static inline const ParameterizedType_ParameterizedList* internal_default_instance() {
    return reinterpret_cast<const ParameterizedType_ParameterizedList*>(
               &_ParameterizedType_ParameterizedList_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    9;

  friend void swap(ParameterizedType_ParameterizedList& a, ParameterizedType_ParameterizedList& b) {
    a.Swap(&b);
  }
  inline void Swap(ParameterizedType_ParameterizedList* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ParameterizedType_ParameterizedList* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ParameterizedType_ParameterizedList* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ParameterizedType_ParameterizedList>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ParameterizedType_ParameterizedList& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ParameterizedType_ParameterizedList& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ParameterizedType_ParameterizedList* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "substrait.ParameterizedType.ParameterizedList";
  }
  protected:
  explicit ParameterizedType_ParameterizedList(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kTypeFieldNumber = 1,
    kVariationPointerFieldNumber = 2,
    kNullabilityFieldNumber = 3,
  };
  // .substrait.ParameterizedType type = 1 [json_name = "type"];
  bool has_type() const;
  private:
  bool _internal_has_type() const;
  public:
  void clear_type();
  const ::substrait::ParameterizedType& type() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType* release_type();
  ::substrait::ParameterizedType* mutable_type();
  void set_allocated_type(::substrait::ParameterizedType* type);
  private:
  const ::substrait::ParameterizedType& _internal_type() const;
  ::substrait::ParameterizedType* _internal_mutable_type();
  public:
  void unsafe_arena_set_allocated_type(
      ::substrait::ParameterizedType* type);
  ::substrait::ParameterizedType* unsafe_arena_release_type();

  // uint32 variation_pointer = 2 [json_name = "variationPointer"];
  void clear_variation_pointer();
  uint32_t variation_pointer() const;
  void set_variation_pointer(uint32_t value);
  private:
  uint32_t _internal_variation_pointer() const;
  void _internal_set_variation_pointer(uint32_t value);
  public:

  // .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
  void clear_nullability();
  ::substrait::Type_Nullability nullability() const;
  void set_nullability(::substrait::Type_Nullability value);
  private:
  ::substrait::Type_Nullability _internal_nullability() const;
  void _internal_set_nullability(::substrait::Type_Nullability value);
  public:

  // @@protoc_insertion_point(class_scope:substrait.ParameterizedType.ParameterizedList)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::substrait::ParameterizedType* type_;
  uint32_t variation_pointer_;
  int nullability_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_substrait_2fparameterized_5ftypes_2eproto;
};
// -------------------------------------------------------------------

class ParameterizedType_ParameterizedMap final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:substrait.ParameterizedType.ParameterizedMap) */ {
 public:
  inline ParameterizedType_ParameterizedMap() : ParameterizedType_ParameterizedMap(nullptr) {}
  ~ParameterizedType_ParameterizedMap() override;
  explicit constexpr ParameterizedType_ParameterizedMap(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ParameterizedType_ParameterizedMap(const ParameterizedType_ParameterizedMap& from);
  ParameterizedType_ParameterizedMap(ParameterizedType_ParameterizedMap&& from) noexcept
    : ParameterizedType_ParameterizedMap() {
    *this = ::std::move(from);
  }

  inline ParameterizedType_ParameterizedMap& operator=(const ParameterizedType_ParameterizedMap& from) {
    CopyFrom(from);
    return *this;
  }
  inline ParameterizedType_ParameterizedMap& operator=(ParameterizedType_ParameterizedMap&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ParameterizedType_ParameterizedMap& default_instance() {
    return *internal_default_instance();
  }
  static inline const ParameterizedType_ParameterizedMap* internal_default_instance() {
    return reinterpret_cast<const ParameterizedType_ParameterizedMap*>(
               &_ParameterizedType_ParameterizedMap_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    10;

  friend void swap(ParameterizedType_ParameterizedMap& a, ParameterizedType_ParameterizedMap& b) {
    a.Swap(&b);
  }
  inline void Swap(ParameterizedType_ParameterizedMap* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ParameterizedType_ParameterizedMap* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ParameterizedType_ParameterizedMap* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ParameterizedType_ParameterizedMap>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ParameterizedType_ParameterizedMap& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ParameterizedType_ParameterizedMap& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ParameterizedType_ParameterizedMap* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "substrait.ParameterizedType.ParameterizedMap";
  }
  protected:
  explicit ParameterizedType_ParameterizedMap(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kKeyFieldNumber = 1,
    kValueFieldNumber = 2,
    kVariationPointerFieldNumber = 3,
    kNullabilityFieldNumber = 4,
  };
  // .substrait.ParameterizedType key = 1 [json_name = "key"];
  bool has_key() const;
  private:
  bool _internal_has_key() const;
  public:
  void clear_key();
  const ::substrait::ParameterizedType& key() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType* release_key();
  ::substrait::ParameterizedType* mutable_key();
  void set_allocated_key(::substrait::ParameterizedType* key);
  private:
  const ::substrait::ParameterizedType& _internal_key() const;
  ::substrait::ParameterizedType* _internal_mutable_key();
  public:
  void unsafe_arena_set_allocated_key(
      ::substrait::ParameterizedType* key);
  ::substrait::ParameterizedType* unsafe_arena_release_key();

  // .substrait.ParameterizedType value = 2 [json_name = "value"];
  bool has_value() const;
  private:
  bool _internal_has_value() const;
  public:
  void clear_value();
  const ::substrait::ParameterizedType& value() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType* release_value();
  ::substrait::ParameterizedType* mutable_value();
  void set_allocated_value(::substrait::ParameterizedType* value);
  private:
  const ::substrait::ParameterizedType& _internal_value() const;
  ::substrait::ParameterizedType* _internal_mutable_value();
  public:
  void unsafe_arena_set_allocated_value(
      ::substrait::ParameterizedType* value);
  ::substrait::ParameterizedType* unsafe_arena_release_value();

  // uint32 variation_pointer = 3 [json_name = "variationPointer"];
  void clear_variation_pointer();
  uint32_t variation_pointer() const;
  void set_variation_pointer(uint32_t value);
  private:
  uint32_t _internal_variation_pointer() const;
  void _internal_set_variation_pointer(uint32_t value);
  public:

  // .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
  void clear_nullability();
  ::substrait::Type_Nullability nullability() const;
  void set_nullability(::substrait::Type_Nullability value);
  private:
  ::substrait::Type_Nullability _internal_nullability() const;
  void _internal_set_nullability(::substrait::Type_Nullability value);
  public:

  // @@protoc_insertion_point(class_scope:substrait.ParameterizedType.ParameterizedMap)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::substrait::ParameterizedType* key_;
  ::substrait::ParameterizedType* value_;
  uint32_t variation_pointer_;
  int nullability_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_substrait_2fparameterized_5ftypes_2eproto;
};
// -------------------------------------------------------------------

class ParameterizedType_IntegerOption final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:substrait.ParameterizedType.IntegerOption) */ {
 public:
  inline ParameterizedType_IntegerOption() : ParameterizedType_IntegerOption(nullptr) {}
  ~ParameterizedType_IntegerOption() override;
  explicit constexpr ParameterizedType_IntegerOption(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ParameterizedType_IntegerOption(const ParameterizedType_IntegerOption& from);
  ParameterizedType_IntegerOption(ParameterizedType_IntegerOption&& from) noexcept
    : ParameterizedType_IntegerOption() {
    *this = ::std::move(from);
  }

  inline ParameterizedType_IntegerOption& operator=(const ParameterizedType_IntegerOption& from) {
    CopyFrom(from);
    return *this;
  }
  inline ParameterizedType_IntegerOption& operator=(ParameterizedType_IntegerOption&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ParameterizedType_IntegerOption& default_instance() {
    return *internal_default_instance();
  }
  enum IntegerTypeCase {
    kLiteral = 1,
    kParameter = 2,
    INTEGER_TYPE_NOT_SET = 0,
  };

  static inline const ParameterizedType_IntegerOption* internal_default_instance() {
    return reinterpret_cast<const ParameterizedType_IntegerOption*>(
               &_ParameterizedType_IntegerOption_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    11;

  friend void swap(ParameterizedType_IntegerOption& a, ParameterizedType_IntegerOption& b) {
    a.Swap(&b);
  }
  inline void Swap(ParameterizedType_IntegerOption* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ParameterizedType_IntegerOption* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ParameterizedType_IntegerOption* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ParameterizedType_IntegerOption>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ParameterizedType_IntegerOption& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ParameterizedType_IntegerOption& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ParameterizedType_IntegerOption* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "substrait.ParameterizedType.IntegerOption";
  }
  protected:
  explicit ParameterizedType_IntegerOption(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kLiteralFieldNumber = 1,
    kParameterFieldNumber = 2,
  };
  // int32 literal = 1 [json_name = "literal"];
  bool has_literal() const;
  private:
  bool _internal_has_literal() const;
  public:
  void clear_literal();
  int32_t literal() const;
  void set_literal(int32_t value);
  private:
  int32_t _internal_literal() const;
  void _internal_set_literal(int32_t value);
  public:

  // .substrait.ParameterizedType.IntegerParameter parameter = 2 [json_name = "parameter"];
  bool has_parameter() const;
  private:
  bool _internal_has_parameter() const;
  public:
  void clear_parameter();
  const ::substrait::ParameterizedType_IntegerParameter& parameter() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_IntegerParameter* release_parameter();
  ::substrait::ParameterizedType_IntegerParameter* mutable_parameter();
  void set_allocated_parameter(::substrait::ParameterizedType_IntegerParameter* parameter);
  private:
  const ::substrait::ParameterizedType_IntegerParameter& _internal_parameter() const;
  ::substrait::ParameterizedType_IntegerParameter* _internal_mutable_parameter();
  public:
  void unsafe_arena_set_allocated_parameter(
      ::substrait::ParameterizedType_IntegerParameter* parameter);
  ::substrait::ParameterizedType_IntegerParameter* unsafe_arena_release_parameter();

  void clear_integer_type();
  IntegerTypeCase integer_type_case() const;
  // @@protoc_insertion_point(class_scope:substrait.ParameterizedType.IntegerOption)
 private:
  class _Internal;
  void set_has_literal();
  void set_has_parameter();

  inline bool has_integer_type() const;
  inline void clear_has_integer_type();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  union IntegerTypeUnion {
    constexpr IntegerTypeUnion() : _constinit_{} {}
      ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
    int32_t literal_;
    ::substrait::ParameterizedType_IntegerParameter* parameter_;
  } integer_type_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  uint32_t _oneof_case_[1];

  friend struct ::TableStruct_substrait_2fparameterized_5ftypes_2eproto;
};
// -------------------------------------------------------------------

class ParameterizedType final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:substrait.ParameterizedType) */ {
 public:
  inline ParameterizedType() : ParameterizedType(nullptr) {}
  ~ParameterizedType() override;
  explicit constexpr ParameterizedType(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ParameterizedType(const ParameterizedType& from);
  ParameterizedType(ParameterizedType&& from) noexcept
    : ParameterizedType() {
    *this = ::std::move(from);
  }

  inline ParameterizedType& operator=(const ParameterizedType& from) {
    CopyFrom(from);
    return *this;
  }
  inline ParameterizedType& operator=(ParameterizedType&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ParameterizedType& default_instance() {
    return *internal_default_instance();
  }
  enum KindCase {
    kBool = 1,
    kI8 = 2,
    kI16 = 3,
    kI32 = 5,
    kI64 = 7,
    kFp32 = 10,
    kFp64 = 11,
    kString = 12,
    kBinary = 13,
    kTimestamp = 14,
    kDate = 16,
    kTime = 17,
    kIntervalYear = 19,
    kIntervalDay = 20,
    kTimestampTz = 29,
    kUuid = 32,
    kFixedChar = 21,
    kVarchar = 22,
    kFixedBinary = 23,
    kDecimal = 24,
    kStruct = 25,
    kList = 27,
    kMap = 28,
    kUserDefinedPointer = 31,
    kTypeParameter = 33,
    KIND_NOT_SET = 0,
  };

  static inline const ParameterizedType* internal_default_instance() {
    return reinterpret_cast<const ParameterizedType*>(
               &_ParameterizedType_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    12;

  friend void swap(ParameterizedType& a, ParameterizedType& b) {
    a.Swap(&b);
  }
  inline void Swap(ParameterizedType* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ParameterizedType* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ParameterizedType* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ParameterizedType>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ParameterizedType& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ParameterizedType& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ParameterizedType* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "substrait.ParameterizedType";
  }
  protected:
  explicit ParameterizedType(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  typedef ParameterizedType_TypeParameter TypeParameter;
  typedef ParameterizedType_IntegerParameter IntegerParameter;
  typedef ParameterizedType_NullableInteger NullableInteger;
  typedef ParameterizedType_ParameterizedFixedChar ParameterizedFixedChar;
  typedef ParameterizedType_ParameterizedVarChar ParameterizedVarChar;
  typedef ParameterizedType_ParameterizedFixedBinary ParameterizedFixedBinary;
  typedef ParameterizedType_ParameterizedDecimal ParameterizedDecimal;
  typedef ParameterizedType_ParameterizedStruct ParameterizedStruct;
  typedef ParameterizedType_ParameterizedNamedStruct ParameterizedNamedStruct;
  typedef ParameterizedType_ParameterizedList ParameterizedList;
  typedef ParameterizedType_ParameterizedMap ParameterizedMap;
  typedef ParameterizedType_IntegerOption IntegerOption;

  // accessors -------------------------------------------------------

  enum : int {
    kBoolFieldNumber = 1,
    kI8FieldNumber = 2,
    kI16FieldNumber = 3,
    kI32FieldNumber = 5,
    kI64FieldNumber = 7,
    kFp32FieldNumber = 10,
    kFp64FieldNumber = 11,
    kStringFieldNumber = 12,
    kBinaryFieldNumber = 13,
    kTimestampFieldNumber = 14,
    kDateFieldNumber = 16,
    kTimeFieldNumber = 17,
    kIntervalYearFieldNumber = 19,
    kIntervalDayFieldNumber = 20,
    kTimestampTzFieldNumber = 29,
    kUuidFieldNumber = 32,
    kFixedCharFieldNumber = 21,
    kVarcharFieldNumber = 22,
    kFixedBinaryFieldNumber = 23,
    kDecimalFieldNumber = 24,
    kStructFieldNumber = 25,
    kListFieldNumber = 27,
    kMapFieldNumber = 28,
    kUserDefinedPointerFieldNumber = 31,
    kTypeParameterFieldNumber = 33,
  };
  // .substrait.Type.Boolean bool = 1 [json_name = "bool"];
  bool has_bool_() const;
  private:
  bool _internal_has_bool_() const;
  public:
  void clear_bool_();
  const ::substrait::Type_Boolean& bool_() const;
  PROTOBUF_NODISCARD ::substrait::Type_Boolean* release_bool_();
  ::substrait::Type_Boolean* mutable_bool_();
  void set_allocated_bool_(::substrait::Type_Boolean* bool_);
  private:
  const ::substrait::Type_Boolean& _internal_bool_() const;
  ::substrait::Type_Boolean* _internal_mutable_bool_();
  public:
  void unsafe_arena_set_allocated_bool_(
      ::substrait::Type_Boolean* bool_);
  ::substrait::Type_Boolean* unsafe_arena_release_bool_();

  // .substrait.Type.I8 i8 = 2 [json_name = "i8"];
  bool has_i8() const;
  private:
  bool _internal_has_i8() const;
  public:
  void clear_i8();
  const ::substrait::Type_I8& i8() const;
  PROTOBUF_NODISCARD ::substrait::Type_I8* release_i8();
  ::substrait::Type_I8* mutable_i8();
  void set_allocated_i8(::substrait::Type_I8* i8);
  private:
  const ::substrait::Type_I8& _internal_i8() const;
  ::substrait::Type_I8* _internal_mutable_i8();
  public:
  void unsafe_arena_set_allocated_i8(
      ::substrait::Type_I8* i8);
  ::substrait::Type_I8* unsafe_arena_release_i8();

  // .substrait.Type.I16 i16 = 3 [json_name = "i16"];
  bool has_i16() const;
  private:
  bool _internal_has_i16() const;
  public:
  void clear_i16();
  const ::substrait::Type_I16& i16() const;
  PROTOBUF_NODISCARD ::substrait::Type_I16* release_i16();
  ::substrait::Type_I16* mutable_i16();
  void set_allocated_i16(::substrait::Type_I16* i16);
  private:
  const ::substrait::Type_I16& _internal_i16() const;
  ::substrait::Type_I16* _internal_mutable_i16();
  public:
  void unsafe_arena_set_allocated_i16(
      ::substrait::Type_I16* i16);
  ::substrait::Type_I16* unsafe_arena_release_i16();

  // .substrait.Type.I32 i32 = 5 [json_name = "i32"];
  bool has_i32() const;
  private:
  bool _internal_has_i32() const;
  public:
  void clear_i32();
  const ::substrait::Type_I32& i32() const;
  PROTOBUF_NODISCARD ::substrait::Type_I32* release_i32();
  ::substrait::Type_I32* mutable_i32();
  void set_allocated_i32(::substrait::Type_I32* i32);
  private:
  const ::substrait::Type_I32& _internal_i32() const;
  ::substrait::Type_I32* _internal_mutable_i32();
  public:
  void unsafe_arena_set_allocated_i32(
      ::substrait::Type_I32* i32);
  ::substrait::Type_I32* unsafe_arena_release_i32();

  // .substrait.Type.I64 i64 = 7 [json_name = "i64"];
  bool has_i64() const;
  private:
  bool _internal_has_i64() const;
  public:
  void clear_i64();
  const ::substrait::Type_I64& i64() const;
  PROTOBUF_NODISCARD ::substrait::Type_I64* release_i64();
  ::substrait::Type_I64* mutable_i64();
  void set_allocated_i64(::substrait::Type_I64* i64);
  private:
  const ::substrait::Type_I64& _internal_i64() const;
  ::substrait::Type_I64* _internal_mutable_i64();
  public:
  void unsafe_arena_set_allocated_i64(
      ::substrait::Type_I64* i64);
  ::substrait::Type_I64* unsafe_arena_release_i64();

  // .substrait.Type.FP32 fp32 = 10 [json_name = "fp32"];
  bool has_fp32() const;
  private:
  bool _internal_has_fp32() const;
  public:
  void clear_fp32();
  const ::substrait::Type_FP32& fp32() const;
  PROTOBUF_NODISCARD ::substrait::Type_FP32* release_fp32();
  ::substrait::Type_FP32* mutable_fp32();
  void set_allocated_fp32(::substrait::Type_FP32* fp32);
  private:
  const ::substrait::Type_FP32& _internal_fp32() const;
  ::substrait::Type_FP32* _internal_mutable_fp32();
  public:
  void unsafe_arena_set_allocated_fp32(
      ::substrait::Type_FP32* fp32);
  ::substrait::Type_FP32* unsafe_arena_release_fp32();

  // .substrait.Type.FP64 fp64 = 11 [json_name = "fp64"];
  bool has_fp64() const;
  private:
  bool _internal_has_fp64() const;
  public:
  void clear_fp64();
  const ::substrait::Type_FP64& fp64() const;
  PROTOBUF_NODISCARD ::substrait::Type_FP64* release_fp64();
  ::substrait::Type_FP64* mutable_fp64();
  void set_allocated_fp64(::substrait::Type_FP64* fp64);
  private:
  const ::substrait::Type_FP64& _internal_fp64() const;
  ::substrait::Type_FP64* _internal_mutable_fp64();
  public:
  void unsafe_arena_set_allocated_fp64(
      ::substrait::Type_FP64* fp64);
  ::substrait::Type_FP64* unsafe_arena_release_fp64();

  // .substrait.Type.String string = 12 [json_name = "string"];
  bool has_string() const;
  private:
  bool _internal_has_string() const;
  public:
  void clear_string();
  const ::substrait::Type_String& string() const;
  PROTOBUF_NODISCARD ::substrait::Type_String* release_string();
  ::substrait::Type_String* mutable_string();
  void set_allocated_string(::substrait::Type_String* string);
  private:
  const ::substrait::Type_String& _internal_string() const;
  ::substrait::Type_String* _internal_mutable_string();
  public:
  void unsafe_arena_set_allocated_string(
      ::substrait::Type_String* string);
  ::substrait::Type_String* unsafe_arena_release_string();

  // .substrait.Type.Binary binary = 13 [json_name = "binary"];
  bool has_binary() const;
  private:
  bool _internal_has_binary() const;
  public:
  void clear_binary();
  const ::substrait::Type_Binary& binary() const;
  PROTOBUF_NODISCARD ::substrait::Type_Binary* release_binary();
  ::substrait::Type_Binary* mutable_binary();
  void set_allocated_binary(::substrait::Type_Binary* binary);
  private:
  const ::substrait::Type_Binary& _internal_binary() const;
  ::substrait::Type_Binary* _internal_mutable_binary();
  public:
  void unsafe_arena_set_allocated_binary(
      ::substrait::Type_Binary* binary);
  ::substrait::Type_Binary* unsafe_arena_release_binary();

  // .substrait.Type.Timestamp timestamp = 14 [json_name = "timestamp"];
  bool has_timestamp() const;
  private:
  bool _internal_has_timestamp() const;
  public:
  void clear_timestamp();
  const ::substrait::Type_Timestamp& timestamp() const;
  PROTOBUF_NODISCARD ::substrait::Type_Timestamp* release_timestamp();
  ::substrait::Type_Timestamp* mutable_timestamp();
  void set_allocated_timestamp(::substrait::Type_Timestamp* timestamp);
  private:
  const ::substrait::Type_Timestamp& _internal_timestamp() const;
  ::substrait::Type_Timestamp* _internal_mutable_timestamp();
  public:
  void unsafe_arena_set_allocated_timestamp(
      ::substrait::Type_Timestamp* timestamp);
  ::substrait::Type_Timestamp* unsafe_arena_release_timestamp();

  // .substrait.Type.Date date = 16 [json_name = "date"];
  bool has_date() const;
  private:
  bool _internal_has_date() const;
  public:
  void clear_date();
  const ::substrait::Type_Date& date() const;
  PROTOBUF_NODISCARD ::substrait::Type_Date* release_date();
  ::substrait::Type_Date* mutable_date();
  void set_allocated_date(::substrait::Type_Date* date);
  private:
  const ::substrait::Type_Date& _internal_date() const;
  ::substrait::Type_Date* _internal_mutable_date();
  public:
  void unsafe_arena_set_allocated_date(
      ::substrait::Type_Date* date);
  ::substrait::Type_Date* unsafe_arena_release_date();

  // .substrait.Type.Time time = 17 [json_name = "time"];
  bool has_time() const;
  private:
  bool _internal_has_time() const;
  public:
  void clear_time();
  const ::substrait::Type_Time& time() const;
  PROTOBUF_NODISCARD ::substrait::Type_Time* release_time();
  ::substrait::Type_Time* mutable_time();
  void set_allocated_time(::substrait::Type_Time* time);
  private:
  const ::substrait::Type_Time& _internal_time() const;
  ::substrait::Type_Time* _internal_mutable_time();
  public:
  void unsafe_arena_set_allocated_time(
      ::substrait::Type_Time* time);
  ::substrait::Type_Time* unsafe_arena_release_time();

  // .substrait.Type.IntervalYear interval_year = 19 [json_name = "intervalYear"];
  bool has_interval_year() const;
  private:
  bool _internal_has_interval_year() const;
  public:
  void clear_interval_year();
  const ::substrait::Type_IntervalYear& interval_year() const;
  PROTOBUF_NODISCARD ::substrait::Type_IntervalYear* release_interval_year();
  ::substrait::Type_IntervalYear* mutable_interval_year();
  void set_allocated_interval_year(::substrait::Type_IntervalYear* interval_year);
  private:
  const ::substrait::Type_IntervalYear& _internal_interval_year() const;
  ::substrait::Type_IntervalYear* _internal_mutable_interval_year();
  public:
  void unsafe_arena_set_allocated_interval_year(
      ::substrait::Type_IntervalYear* interval_year);
  ::substrait::Type_IntervalYear* unsafe_arena_release_interval_year();

  // .substrait.Type.IntervalDay interval_day = 20 [json_name = "intervalDay"];
  bool has_interval_day() const;
  private:
  bool _internal_has_interval_day() const;
  public:
  void clear_interval_day();
  const ::substrait::Type_IntervalDay& interval_day() const;
  PROTOBUF_NODISCARD ::substrait::Type_IntervalDay* release_interval_day();
  ::substrait::Type_IntervalDay* mutable_interval_day();
  void set_allocated_interval_day(::substrait::Type_IntervalDay* interval_day);
  private:
  const ::substrait::Type_IntervalDay& _internal_interval_day() const;
  ::substrait::Type_IntervalDay* _internal_mutable_interval_day();
  public:
  void unsafe_arena_set_allocated_interval_day(
      ::substrait::Type_IntervalDay* interval_day);
  ::substrait::Type_IntervalDay* unsafe_arena_release_interval_day();

  // .substrait.Type.TimestampTZ timestamp_tz = 29 [json_name = "timestampTz"];
  bool has_timestamp_tz() const;
  private:
  bool _internal_has_timestamp_tz() const;
  public:
  void clear_timestamp_tz();
  const ::substrait::Type_TimestampTZ& timestamp_tz() const;
  PROTOBUF_NODISCARD ::substrait::Type_TimestampTZ* release_timestamp_tz();
  ::substrait::Type_TimestampTZ* mutable_timestamp_tz();
  void set_allocated_timestamp_tz(::substrait::Type_TimestampTZ* timestamp_tz);
  private:
  const ::substrait::Type_TimestampTZ& _internal_timestamp_tz() const;
  ::substrait::Type_TimestampTZ* _internal_mutable_timestamp_tz();
  public:
  void unsafe_arena_set_allocated_timestamp_tz(
      ::substrait::Type_TimestampTZ* timestamp_tz);
  ::substrait::Type_TimestampTZ* unsafe_arena_release_timestamp_tz();

  // .substrait.Type.UUID uuid = 32 [json_name = "uuid"];
  bool has_uuid() const;
  private:
  bool _internal_has_uuid() const;
  public:
  void clear_uuid();
  const ::substrait::Type_UUID& uuid() const;
  PROTOBUF_NODISCARD ::substrait::Type_UUID* release_uuid();
  ::substrait::Type_UUID* mutable_uuid();
  void set_allocated_uuid(::substrait::Type_UUID* uuid);
  private:
  const ::substrait::Type_UUID& _internal_uuid() const;
  ::substrait::Type_UUID* _internal_mutable_uuid();
  public:
  void unsafe_arena_set_allocated_uuid(
      ::substrait::Type_UUID* uuid);
  ::substrait::Type_UUID* unsafe_arena_release_uuid();

  // .substrait.ParameterizedType.ParameterizedFixedChar fixed_char = 21 [json_name = "fixedChar"];
  bool has_fixed_char() const;
  private:
  bool _internal_has_fixed_char() const;
  public:
  void clear_fixed_char();
  const ::substrait::ParameterizedType_ParameterizedFixedChar& fixed_char() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_ParameterizedFixedChar* release_fixed_char();
  ::substrait::ParameterizedType_ParameterizedFixedChar* mutable_fixed_char();
  void set_allocated_fixed_char(::substrait::ParameterizedType_ParameterizedFixedChar* fixed_char);
  private:
  const ::substrait::ParameterizedType_ParameterizedFixedChar& _internal_fixed_char() const;
  ::substrait::ParameterizedType_ParameterizedFixedChar* _internal_mutable_fixed_char();
  public:
  void unsafe_arena_set_allocated_fixed_char(
      ::substrait::ParameterizedType_ParameterizedFixedChar* fixed_char);
  ::substrait::ParameterizedType_ParameterizedFixedChar* unsafe_arena_release_fixed_char();

  // .substrait.ParameterizedType.ParameterizedVarChar varchar = 22 [json_name = "varchar"];
  bool has_varchar() const;
  private:
  bool _internal_has_varchar() const;
  public:
  void clear_varchar();
  const ::substrait::ParameterizedType_ParameterizedVarChar& varchar() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_ParameterizedVarChar* release_varchar();
  ::substrait::ParameterizedType_ParameterizedVarChar* mutable_varchar();
  void set_allocated_varchar(::substrait::ParameterizedType_ParameterizedVarChar* varchar);
  private:
  const ::substrait::ParameterizedType_ParameterizedVarChar& _internal_varchar() const;
  ::substrait::ParameterizedType_ParameterizedVarChar* _internal_mutable_varchar();
  public:
  void unsafe_arena_set_allocated_varchar(
      ::substrait::ParameterizedType_ParameterizedVarChar* varchar);
  ::substrait::ParameterizedType_ParameterizedVarChar* unsafe_arena_release_varchar();

  // .substrait.ParameterizedType.ParameterizedFixedBinary fixed_binary = 23 [json_name = "fixedBinary"];
  bool has_fixed_binary() const;
  private:
  bool _internal_has_fixed_binary() const;
  public:
  void clear_fixed_binary();
  const ::substrait::ParameterizedType_ParameterizedFixedBinary& fixed_binary() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_ParameterizedFixedBinary* release_fixed_binary();
  ::substrait::ParameterizedType_ParameterizedFixedBinary* mutable_fixed_binary();
  void set_allocated_fixed_binary(::substrait::ParameterizedType_ParameterizedFixedBinary* fixed_binary);
  private:
  const ::substrait::ParameterizedType_ParameterizedFixedBinary& _internal_fixed_binary() const;
  ::substrait::ParameterizedType_ParameterizedFixedBinary* _internal_mutable_fixed_binary();
  public:
  void unsafe_arena_set_allocated_fixed_binary(
      ::substrait::ParameterizedType_ParameterizedFixedBinary* fixed_binary);
  ::substrait::ParameterizedType_ParameterizedFixedBinary* unsafe_arena_release_fixed_binary();

  // .substrait.ParameterizedType.ParameterizedDecimal decimal = 24 [json_name = "decimal"];
  bool has_decimal() const;
  private:
  bool _internal_has_decimal() const;
  public:
  void clear_decimal();
  const ::substrait::ParameterizedType_ParameterizedDecimal& decimal() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_ParameterizedDecimal* release_decimal();
  ::substrait::ParameterizedType_ParameterizedDecimal* mutable_decimal();
  void set_allocated_decimal(::substrait::ParameterizedType_ParameterizedDecimal* decimal);
  private:
  const ::substrait::ParameterizedType_ParameterizedDecimal& _internal_decimal() const;
  ::substrait::ParameterizedType_ParameterizedDecimal* _internal_mutable_decimal();
  public:
  void unsafe_arena_set_allocated_decimal(
      ::substrait::ParameterizedType_ParameterizedDecimal* decimal);
  ::substrait::ParameterizedType_ParameterizedDecimal* unsafe_arena_release_decimal();

  // .substrait.ParameterizedType.ParameterizedStruct struct = 25 [json_name = "struct"];
  bool has_struct_() const;
  private:
  bool _internal_has_struct_() const;
  public:
  void clear_struct_();
  const ::substrait::ParameterizedType_ParameterizedStruct& struct_() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_ParameterizedStruct* release_struct_();
  ::substrait::ParameterizedType_ParameterizedStruct* mutable_struct_();
  void set_allocated_struct_(::substrait::ParameterizedType_ParameterizedStruct* struct_);
  private:
  const ::substrait::ParameterizedType_ParameterizedStruct& _internal_struct_() const;
  ::substrait::ParameterizedType_ParameterizedStruct* _internal_mutable_struct_();
  public:
  void unsafe_arena_set_allocated_struct_(
      ::substrait::ParameterizedType_ParameterizedStruct* struct_);
  ::substrait::ParameterizedType_ParameterizedStruct* unsafe_arena_release_struct_();

  // .substrait.ParameterizedType.ParameterizedList list = 27 [json_name = "list"];
  bool has_list() const;
  private:
  bool _internal_has_list() const;
  public:
  void clear_list();
  const ::substrait::ParameterizedType_ParameterizedList& list() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_ParameterizedList* release_list();
  ::substrait::ParameterizedType_ParameterizedList* mutable_list();
  void set_allocated_list(::substrait::ParameterizedType_ParameterizedList* list);
  private:
  const ::substrait::ParameterizedType_ParameterizedList& _internal_list() const;
  ::substrait::ParameterizedType_ParameterizedList* _internal_mutable_list();
  public:
  void unsafe_arena_set_allocated_list(
      ::substrait::ParameterizedType_ParameterizedList* list);
  ::substrait::ParameterizedType_ParameterizedList* unsafe_arena_release_list();

  // .substrait.ParameterizedType.ParameterizedMap map = 28 [json_name = "map"];
  bool has_map() const;
  private:
  bool _internal_has_map() const;
  public:
  void clear_map();
  const ::substrait::ParameterizedType_ParameterizedMap& map() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_ParameterizedMap* release_map();
  ::substrait::ParameterizedType_ParameterizedMap* mutable_map();
  void set_allocated_map(::substrait::ParameterizedType_ParameterizedMap* map);
  private:
  const ::substrait::ParameterizedType_ParameterizedMap& _internal_map() const;
  ::substrait::ParameterizedType_ParameterizedMap* _internal_mutable_map();
  public:
  void unsafe_arena_set_allocated_map(
      ::substrait::ParameterizedType_ParameterizedMap* map);
  ::substrait::ParameterizedType_ParameterizedMap* unsafe_arena_release_map();

  // uint32 user_defined_pointer = 31 [json_name = "userDefinedPointer"];
  bool has_user_defined_pointer() const;
  private:
  bool _internal_has_user_defined_pointer() const;
  public:
  void clear_user_defined_pointer();
  uint32_t user_defined_pointer() const;
  void set_user_defined_pointer(uint32_t value);
  private:
  uint32_t _internal_user_defined_pointer() const;
  void _internal_set_user_defined_pointer(uint32_t value);
  public:

  // .substrait.ParameterizedType.TypeParameter type_parameter = 33 [json_name = "typeParameter"];
  bool has_type_parameter() const;
  private:
  bool _internal_has_type_parameter() const;
  public:
  void clear_type_parameter();
  const ::substrait::ParameterizedType_TypeParameter& type_parameter() const;
  PROTOBUF_NODISCARD ::substrait::ParameterizedType_TypeParameter* release_type_parameter();
  ::substrait::ParameterizedType_TypeParameter* mutable_type_parameter();
  void set_allocated_type_parameter(::substrait::ParameterizedType_TypeParameter* type_parameter);
  private:
  const ::substrait::ParameterizedType_TypeParameter& _internal_type_parameter() const;
  ::substrait::ParameterizedType_TypeParameter* _internal_mutable_type_parameter();
  public:
  void unsafe_arena_set_allocated_type_parameter(
      ::substrait::ParameterizedType_TypeParameter* type_parameter);
  ::substrait::ParameterizedType_TypeParameter* unsafe_arena_release_type_parameter();

  void clear_kind();
  KindCase kind_case() const;
  // @@protoc_insertion_point(class_scope:substrait.ParameterizedType)
 private:
  class _Internal;
  void set_has_bool_();
  void set_has_i8();
  void set_has_i16();
  void set_has_i32();
  void set_has_i64();
  void set_has_fp32();
  void set_has_fp64();
  void set_has_string();
  void set_has_binary();
  void set_has_timestamp();
  void set_has_date();
  void set_has_time();
  void set_has_interval_year();
  void set_has_interval_day();
  void set_has_timestamp_tz();
  void set_has_uuid();
  void set_has_fixed_char();
  void set_has_varchar();
  void set_has_fixed_binary();
  void set_has_decimal();
  void set_has_struct_();
  void set_has_list();
  void set_has_map();
  void set_has_user_defined_pointer();
  void set_has_type_parameter();

  inline bool has_kind() const;
  inline void clear_has_kind();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  union KindUnion {
    constexpr KindUnion() : _constinit_{} {}
      ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
    ::substrait::Type_Boolean* bool__;
    ::substrait::Type_I8* i8_;
    ::substrait::Type_I16* i16_;
    ::substrait::Type_I32* i32_;
    ::substrait::Type_I64* i64_;
    ::substrait::Type_FP32* fp32_;
    ::substrait::Type_FP64* fp64_;
    ::substrait::Type_String* string_;
    ::substrait::Type_Binary* binary_;
    ::substrait::Type_Timestamp* timestamp_;
    ::substrait::Type_Date* date_;
    ::substrait::Type_Time* time_;
    ::substrait::Type_IntervalYear* interval_year_;
    ::substrait::Type_IntervalDay* interval_day_;
    ::substrait::Type_TimestampTZ* timestamp_tz_;
    ::substrait::Type_UUID* uuid_;
    ::substrait::ParameterizedType_ParameterizedFixedChar* fixed_char_;
    ::substrait::ParameterizedType_ParameterizedVarChar* varchar_;
    ::substrait::ParameterizedType_ParameterizedFixedBinary* fixed_binary_;
    ::substrait::ParameterizedType_ParameterizedDecimal* decimal_;
    ::substrait::ParameterizedType_ParameterizedStruct* struct__;
    ::substrait::ParameterizedType_ParameterizedList* list_;
    ::substrait::ParameterizedType_ParameterizedMap* map_;
    uint32_t user_defined_pointer_;
    ::substrait::ParameterizedType_TypeParameter* type_parameter_;
  } kind_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  uint32_t _oneof_case_[1];

  friend struct ::TableStruct_substrait_2fparameterized_5ftypes_2eproto;
};
// ===================================================================


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

#ifdef __GNUC__
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// ParameterizedType_TypeParameter

// string name = 1 [json_name = "name"];
inline void ParameterizedType_TypeParameter::clear_name() {
  name_.ClearToEmpty();
}
inline const std::string& ParameterizedType_TypeParameter::name() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.TypeParameter.name)
  return _internal_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void ParameterizedType_TypeParameter::set_name(ArgT0&& arg0, ArgT... args) {
 
 name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.TypeParameter.name)
}
inline std::string* ParameterizedType_TypeParameter::mutable_name() {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.TypeParameter.name)
  return _s;
}
inline const std::string& ParameterizedType_TypeParameter::_internal_name() const {
  return name_.Get();
}
inline void ParameterizedType_TypeParameter::_internal_set_name(const std::string& value) {
  
  name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* ParameterizedType_TypeParameter::_internal_mutable_name() {
  
  return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* ParameterizedType_TypeParameter::release_name() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.TypeParameter.name)
  return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void ParameterizedType_TypeParameter::set_allocated_name(std::string* name) {
  if (name != nullptr) {
    
  } else {
    
  }
  name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (name_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.TypeParameter.name)
}

// repeated .substrait.ParameterizedType bounds = 2 [json_name = "bounds"];
inline int ParameterizedType_TypeParameter::_internal_bounds_size() const {
  return bounds_.size();
}
inline int ParameterizedType_TypeParameter::bounds_size() const {
  return _internal_bounds_size();
}
inline void ParameterizedType_TypeParameter::clear_bounds() {
  bounds_.Clear();
}
inline ::substrait::ParameterizedType* ParameterizedType_TypeParameter::mutable_bounds(int index) {
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.TypeParameter.bounds)
  return bounds_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::substrait::ParameterizedType >*
ParameterizedType_TypeParameter::mutable_bounds() {
  // @@protoc_insertion_point(field_mutable_list:substrait.ParameterizedType.TypeParameter.bounds)
  return &bounds_;
}
inline const ::substrait::ParameterizedType& ParameterizedType_TypeParameter::_internal_bounds(int index) const {
  return bounds_.Get(index);
}
inline const ::substrait::ParameterizedType& ParameterizedType_TypeParameter::bounds(int index) const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.TypeParameter.bounds)
  return _internal_bounds(index);
}
inline ::substrait::ParameterizedType* ParameterizedType_TypeParameter::_internal_add_bounds() {
  return bounds_.Add();
}
inline ::substrait::ParameterizedType* ParameterizedType_TypeParameter::add_bounds() {
  ::substrait::ParameterizedType* _add = _internal_add_bounds();
  // @@protoc_insertion_point(field_add:substrait.ParameterizedType.TypeParameter.bounds)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::substrait::ParameterizedType >&
ParameterizedType_TypeParameter::bounds() const {
  // @@protoc_insertion_point(field_list:substrait.ParameterizedType.TypeParameter.bounds)
  return bounds_;
}

// -------------------------------------------------------------------

// ParameterizedType_IntegerParameter

// string name = 1 [json_name = "name"];
inline void ParameterizedType_IntegerParameter::clear_name() {
  name_.ClearToEmpty();
}
inline const std::string& ParameterizedType_IntegerParameter::name() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.IntegerParameter.name)
  return _internal_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void ParameterizedType_IntegerParameter::set_name(ArgT0&& arg0, ArgT... args) {
 
 name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.IntegerParameter.name)
}
inline std::string* ParameterizedType_IntegerParameter::mutable_name() {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.IntegerParameter.name)
  return _s;
}
inline const std::string& ParameterizedType_IntegerParameter::_internal_name() const {
  return name_.Get();
}
inline void ParameterizedType_IntegerParameter::_internal_set_name(const std::string& value) {
  
  name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* ParameterizedType_IntegerParameter::_internal_mutable_name() {
  
  return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* ParameterizedType_IntegerParameter::release_name() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.IntegerParameter.name)
  return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void ParameterizedType_IntegerParameter::set_allocated_name(std::string* name) {
  if (name != nullptr) {
    
  } else {
    
  }
  name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (name_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.IntegerParameter.name)
}

// .substrait.ParameterizedType.NullableInteger range_start_inclusive = 2 [json_name = "rangeStartInclusive"];
inline bool ParameterizedType_IntegerParameter::_internal_has_range_start_inclusive() const {
  return this != internal_default_instance() && range_start_inclusive_ != nullptr;
}
inline bool ParameterizedType_IntegerParameter::has_range_start_inclusive() const {
  return _internal_has_range_start_inclusive();
}
inline void ParameterizedType_IntegerParameter::clear_range_start_inclusive() {
  if (GetArenaForAllocation() == nullptr && range_start_inclusive_ != nullptr) {
    delete range_start_inclusive_;
  }
  range_start_inclusive_ = nullptr;
}
inline const ::substrait::ParameterizedType_NullableInteger& ParameterizedType_IntegerParameter::_internal_range_start_inclusive() const {
  const ::substrait::ParameterizedType_NullableInteger* p = range_start_inclusive_;
  return p != nullptr ? *p : reinterpret_cast<const ::substrait::ParameterizedType_NullableInteger&>(
      ::substrait::_ParameterizedType_NullableInteger_default_instance_);
}
inline const ::substrait::ParameterizedType_NullableInteger& ParameterizedType_IntegerParameter::range_start_inclusive() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.IntegerParameter.range_start_inclusive)
  return _internal_range_start_inclusive();
}
inline void ParameterizedType_IntegerParameter::unsafe_arena_set_allocated_range_start_inclusive(
    ::substrait::ParameterizedType_NullableInteger* range_start_inclusive) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(range_start_inclusive_);
  }
  range_start_inclusive_ = range_start_inclusive;
  if (range_start_inclusive) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.IntegerParameter.range_start_inclusive)
}
inline ::substrait::ParameterizedType_NullableInteger* ParameterizedType_IntegerParameter::release_range_start_inclusive() {
  
  ::substrait::ParameterizedType_NullableInteger* temp = range_start_inclusive_;
  range_start_inclusive_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::substrait::ParameterizedType_NullableInteger* ParameterizedType_IntegerParameter::unsafe_arena_release_range_start_inclusive() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.IntegerParameter.range_start_inclusive)
  
  ::substrait::ParameterizedType_NullableInteger* temp = range_start_inclusive_;
  range_start_inclusive_ = nullptr;
  return temp;
}
inline ::substrait::ParameterizedType_NullableInteger* ParameterizedType_IntegerParameter::_internal_mutable_range_start_inclusive() {
  
  if (range_start_inclusive_ == nullptr) {
    auto* p = CreateMaybeMessage<::substrait::ParameterizedType_NullableInteger>(GetArenaForAllocation());
    range_start_inclusive_ = p;
  }
  return range_start_inclusive_;
}
inline ::substrait::ParameterizedType_NullableInteger* ParameterizedType_IntegerParameter::mutable_range_start_inclusive() {
  ::substrait::ParameterizedType_NullableInteger* _msg = _internal_mutable_range_start_inclusive();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.IntegerParameter.range_start_inclusive)
  return _msg;
}
inline void ParameterizedType_IntegerParameter::set_allocated_range_start_inclusive(::substrait::ParameterizedType_NullableInteger* range_start_inclusive) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete range_start_inclusive_;
  }
  if (range_start_inclusive) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_NullableInteger>::GetOwningArena(range_start_inclusive);
    if (message_arena != submessage_arena) {
      range_start_inclusive = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, range_start_inclusive, submessage_arena);
    }
    
  } else {
    
  }
  range_start_inclusive_ = range_start_inclusive;
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.IntegerParameter.range_start_inclusive)
}

// .substrait.ParameterizedType.NullableInteger range_end_exclusive = 3 [json_name = "rangeEndExclusive"];
inline bool ParameterizedType_IntegerParameter::_internal_has_range_end_exclusive() const {
  return this != internal_default_instance() && range_end_exclusive_ != nullptr;
}
inline bool ParameterizedType_IntegerParameter::has_range_end_exclusive() const {
  return _internal_has_range_end_exclusive();
}
inline void ParameterizedType_IntegerParameter::clear_range_end_exclusive() {
  if (GetArenaForAllocation() == nullptr && range_end_exclusive_ != nullptr) {
    delete range_end_exclusive_;
  }
  range_end_exclusive_ = nullptr;
}
inline const ::substrait::ParameterizedType_NullableInteger& ParameterizedType_IntegerParameter::_internal_range_end_exclusive() const {
  const ::substrait::ParameterizedType_NullableInteger* p = range_end_exclusive_;
  return p != nullptr ? *p : reinterpret_cast<const ::substrait::ParameterizedType_NullableInteger&>(
      ::substrait::_ParameterizedType_NullableInteger_default_instance_);
}
inline const ::substrait::ParameterizedType_NullableInteger& ParameterizedType_IntegerParameter::range_end_exclusive() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.IntegerParameter.range_end_exclusive)
  return _internal_range_end_exclusive();
}
inline void ParameterizedType_IntegerParameter::unsafe_arena_set_allocated_range_end_exclusive(
    ::substrait::ParameterizedType_NullableInteger* range_end_exclusive) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(range_end_exclusive_);
  }
  range_end_exclusive_ = range_end_exclusive;
  if (range_end_exclusive) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.IntegerParameter.range_end_exclusive)
}
inline ::substrait::ParameterizedType_NullableInteger* ParameterizedType_IntegerParameter::release_range_end_exclusive() {
  
  ::substrait::ParameterizedType_NullableInteger* temp = range_end_exclusive_;
  range_end_exclusive_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::substrait::ParameterizedType_NullableInteger* ParameterizedType_IntegerParameter::unsafe_arena_release_range_end_exclusive() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.IntegerParameter.range_end_exclusive)
  
  ::substrait::ParameterizedType_NullableInteger* temp = range_end_exclusive_;
  range_end_exclusive_ = nullptr;
  return temp;
}
inline ::substrait::ParameterizedType_NullableInteger* ParameterizedType_IntegerParameter::_internal_mutable_range_end_exclusive() {
  
  if (range_end_exclusive_ == nullptr) {
    auto* p = CreateMaybeMessage<::substrait::ParameterizedType_NullableInteger>(GetArenaForAllocation());
    range_end_exclusive_ = p;
  }
  return range_end_exclusive_;
}
inline ::substrait::ParameterizedType_NullableInteger* ParameterizedType_IntegerParameter::mutable_range_end_exclusive() {
  ::substrait::ParameterizedType_NullableInteger* _msg = _internal_mutable_range_end_exclusive();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.IntegerParameter.range_end_exclusive)
  return _msg;
}
inline void ParameterizedType_IntegerParameter::set_allocated_range_end_exclusive(::substrait::ParameterizedType_NullableInteger* range_end_exclusive) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete range_end_exclusive_;
  }
  if (range_end_exclusive) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_NullableInteger>::GetOwningArena(range_end_exclusive);
    if (message_arena != submessage_arena) {
      range_end_exclusive = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, range_end_exclusive, submessage_arena);
    }
    
  } else {
    
  }
  range_end_exclusive_ = range_end_exclusive;
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.IntegerParameter.range_end_exclusive)
}

// -------------------------------------------------------------------

// ParameterizedType_NullableInteger

// int64 value = 1 [json_name = "value"];
inline void ParameterizedType_NullableInteger::clear_value() {
  value_ = int64_t{0};
}
inline int64_t ParameterizedType_NullableInteger::_internal_value() const {
  return value_;
}
inline int64_t ParameterizedType_NullableInteger::value() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.NullableInteger.value)
  return _internal_value();
}
inline void ParameterizedType_NullableInteger::_internal_set_value(int64_t value) {
  
  value_ = value;
}
inline void ParameterizedType_NullableInteger::set_value(int64_t value) {
  _internal_set_value(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.NullableInteger.value)
}

// -------------------------------------------------------------------

// ParameterizedType_ParameterizedFixedChar

// .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
inline bool ParameterizedType_ParameterizedFixedChar::_internal_has_length() const {
  return this != internal_default_instance() && length_ != nullptr;
}
inline bool ParameterizedType_ParameterizedFixedChar::has_length() const {
  return _internal_has_length();
}
inline void ParameterizedType_ParameterizedFixedChar::clear_length() {
  if (GetArenaForAllocation() == nullptr && length_ != nullptr) {
    delete length_;
  }
  length_ = nullptr;
}
inline const ::substrait::ParameterizedType_IntegerOption& ParameterizedType_ParameterizedFixedChar::_internal_length() const {
  const ::substrait::ParameterizedType_IntegerOption* p = length_;
  return p != nullptr ? *p : reinterpret_cast<const ::substrait::ParameterizedType_IntegerOption&>(
      ::substrait::_ParameterizedType_IntegerOption_default_instance_);
}
inline const ::substrait::ParameterizedType_IntegerOption& ParameterizedType_ParameterizedFixedChar::length() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedFixedChar.length)
  return _internal_length();
}
inline void ParameterizedType_ParameterizedFixedChar::unsafe_arena_set_allocated_length(
    ::substrait::ParameterizedType_IntegerOption* length) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(length_);
  }
  length_ = length;
  if (length) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.ParameterizedFixedChar.length)
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedFixedChar::release_length() {
  
  ::substrait::ParameterizedType_IntegerOption* temp = length_;
  length_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedFixedChar::unsafe_arena_release_length() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.ParameterizedFixedChar.length)
  
  ::substrait::ParameterizedType_IntegerOption* temp = length_;
  length_ = nullptr;
  return temp;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedFixedChar::_internal_mutable_length() {
  
  if (length_ == nullptr) {
    auto* p = CreateMaybeMessage<::substrait::ParameterizedType_IntegerOption>(GetArenaForAllocation());
    length_ = p;
  }
  return length_;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedFixedChar::mutable_length() {
  ::substrait::ParameterizedType_IntegerOption* _msg = _internal_mutable_length();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.ParameterizedFixedChar.length)
  return _msg;
}
inline void ParameterizedType_ParameterizedFixedChar::set_allocated_length(::substrait::ParameterizedType_IntegerOption* length) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete length_;
  }
  if (length) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_IntegerOption>::GetOwningArena(length);
    if (message_arena != submessage_arena) {
      length = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, length, submessage_arena);
    }
    
  } else {
    
  }
  length_ = length;
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.ParameterizedFixedChar.length)
}

// uint32 variation_pointer = 2 [json_name = "variationPointer"];
inline void ParameterizedType_ParameterizedFixedChar::clear_variation_pointer() {
  variation_pointer_ = 0u;
}
inline uint32_t ParameterizedType_ParameterizedFixedChar::_internal_variation_pointer() const {
  return variation_pointer_;
}
inline uint32_t ParameterizedType_ParameterizedFixedChar::variation_pointer() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedFixedChar.variation_pointer)
  return _internal_variation_pointer();
}
inline void ParameterizedType_ParameterizedFixedChar::_internal_set_variation_pointer(uint32_t value) {
  
  variation_pointer_ = value;
}
inline void ParameterizedType_ParameterizedFixedChar::set_variation_pointer(uint32_t value) {
  _internal_set_variation_pointer(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedFixedChar.variation_pointer)
}

// .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
inline void ParameterizedType_ParameterizedFixedChar::clear_nullability() {
  nullability_ = 0;
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedFixedChar::_internal_nullability() const {
  return static_cast< ::substrait::Type_Nullability >(nullability_);
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedFixedChar::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedFixedChar.nullability)
  return _internal_nullability();
}
inline void ParameterizedType_ParameterizedFixedChar::_internal_set_nullability(::substrait::Type_Nullability value) {
  
  nullability_ = value;
}
inline void ParameterizedType_ParameterizedFixedChar::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedFixedChar.nullability)
}

// -------------------------------------------------------------------

// ParameterizedType_ParameterizedVarChar

// .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
inline bool ParameterizedType_ParameterizedVarChar::_internal_has_length() const {
  return this != internal_default_instance() && length_ != nullptr;
}
inline bool ParameterizedType_ParameterizedVarChar::has_length() const {
  return _internal_has_length();
}
inline void ParameterizedType_ParameterizedVarChar::clear_length() {
  if (GetArenaForAllocation() == nullptr && length_ != nullptr) {
    delete length_;
  }
  length_ = nullptr;
}
inline const ::substrait::ParameterizedType_IntegerOption& ParameterizedType_ParameterizedVarChar::_internal_length() const {
  const ::substrait::ParameterizedType_IntegerOption* p = length_;
  return p != nullptr ? *p : reinterpret_cast<const ::substrait::ParameterizedType_IntegerOption&>(
      ::substrait::_ParameterizedType_IntegerOption_default_instance_);
}
inline const ::substrait::ParameterizedType_IntegerOption& ParameterizedType_ParameterizedVarChar::length() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedVarChar.length)
  return _internal_length();
}
inline void ParameterizedType_ParameterizedVarChar::unsafe_arena_set_allocated_length(
    ::substrait::ParameterizedType_IntegerOption* length) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(length_);
  }
  length_ = length;
  if (length) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.ParameterizedVarChar.length)
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedVarChar::release_length() {
  
  ::substrait::ParameterizedType_IntegerOption* temp = length_;
  length_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedVarChar::unsafe_arena_release_length() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.ParameterizedVarChar.length)
  
  ::substrait::ParameterizedType_IntegerOption* temp = length_;
  length_ = nullptr;
  return temp;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedVarChar::_internal_mutable_length() {
  
  if (length_ == nullptr) {
    auto* p = CreateMaybeMessage<::substrait::ParameterizedType_IntegerOption>(GetArenaForAllocation());
    length_ = p;
  }
  return length_;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedVarChar::mutable_length() {
  ::substrait::ParameterizedType_IntegerOption* _msg = _internal_mutable_length();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.ParameterizedVarChar.length)
  return _msg;
}
inline void ParameterizedType_ParameterizedVarChar::set_allocated_length(::substrait::ParameterizedType_IntegerOption* length) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete length_;
  }
  if (length) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_IntegerOption>::GetOwningArena(length);
    if (message_arena != submessage_arena) {
      length = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, length, submessage_arena);
    }
    
  } else {
    
  }
  length_ = length;
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.ParameterizedVarChar.length)
}

// uint32 variation_pointer = 2 [json_name = "variationPointer"];
inline void ParameterizedType_ParameterizedVarChar::clear_variation_pointer() {
  variation_pointer_ = 0u;
}
inline uint32_t ParameterizedType_ParameterizedVarChar::_internal_variation_pointer() const {
  return variation_pointer_;
}
inline uint32_t ParameterizedType_ParameterizedVarChar::variation_pointer() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedVarChar.variation_pointer)
  return _internal_variation_pointer();
}
inline void ParameterizedType_ParameterizedVarChar::_internal_set_variation_pointer(uint32_t value) {
  
  variation_pointer_ = value;
}
inline void ParameterizedType_ParameterizedVarChar::set_variation_pointer(uint32_t value) {
  _internal_set_variation_pointer(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedVarChar.variation_pointer)
}

// .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
inline void ParameterizedType_ParameterizedVarChar::clear_nullability() {
  nullability_ = 0;
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedVarChar::_internal_nullability() const {
  return static_cast< ::substrait::Type_Nullability >(nullability_);
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedVarChar::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedVarChar.nullability)
  return _internal_nullability();
}
inline void ParameterizedType_ParameterizedVarChar::_internal_set_nullability(::substrait::Type_Nullability value) {
  
  nullability_ = value;
}
inline void ParameterizedType_ParameterizedVarChar::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedVarChar.nullability)
}

// -------------------------------------------------------------------

// ParameterizedType_ParameterizedFixedBinary

// .substrait.ParameterizedType.IntegerOption length = 1 [json_name = "length"];
inline bool ParameterizedType_ParameterizedFixedBinary::_internal_has_length() const {
  return this != internal_default_instance() && length_ != nullptr;
}
inline bool ParameterizedType_ParameterizedFixedBinary::has_length() const {
  return _internal_has_length();
}
inline void ParameterizedType_ParameterizedFixedBinary::clear_length() {
  if (GetArenaForAllocation() == nullptr && length_ != nullptr) {
    delete length_;
  }
  length_ = nullptr;
}
inline const ::substrait::ParameterizedType_IntegerOption& ParameterizedType_ParameterizedFixedBinary::_internal_length() const {
  const ::substrait::ParameterizedType_IntegerOption* p = length_;
  return p != nullptr ? *p : reinterpret_cast<const ::substrait::ParameterizedType_IntegerOption&>(
      ::substrait::_ParameterizedType_IntegerOption_default_instance_);
}
inline const ::substrait::ParameterizedType_IntegerOption& ParameterizedType_ParameterizedFixedBinary::length() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedFixedBinary.length)
  return _internal_length();
}
inline void ParameterizedType_ParameterizedFixedBinary::unsafe_arena_set_allocated_length(
    ::substrait::ParameterizedType_IntegerOption* length) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(length_);
  }
  length_ = length;
  if (length) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.ParameterizedFixedBinary.length)
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedFixedBinary::release_length() {
  
  ::substrait::ParameterizedType_IntegerOption* temp = length_;
  length_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedFixedBinary::unsafe_arena_release_length() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.ParameterizedFixedBinary.length)
  
  ::substrait::ParameterizedType_IntegerOption* temp = length_;
  length_ = nullptr;
  return temp;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedFixedBinary::_internal_mutable_length() {
  
  if (length_ == nullptr) {
    auto* p = CreateMaybeMessage<::substrait::ParameterizedType_IntegerOption>(GetArenaForAllocation());
    length_ = p;
  }
  return length_;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedFixedBinary::mutable_length() {
  ::substrait::ParameterizedType_IntegerOption* _msg = _internal_mutable_length();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.ParameterizedFixedBinary.length)
  return _msg;
}
inline void ParameterizedType_ParameterizedFixedBinary::set_allocated_length(::substrait::ParameterizedType_IntegerOption* length) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete length_;
  }
  if (length) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_IntegerOption>::GetOwningArena(length);
    if (message_arena != submessage_arena) {
      length = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, length, submessage_arena);
    }
    
  } else {
    
  }
  length_ = length;
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.ParameterizedFixedBinary.length)
}

// uint32 variation_pointer = 2 [json_name = "variationPointer"];
inline void ParameterizedType_ParameterizedFixedBinary::clear_variation_pointer() {
  variation_pointer_ = 0u;
}
inline uint32_t ParameterizedType_ParameterizedFixedBinary::_internal_variation_pointer() const {
  return variation_pointer_;
}
inline uint32_t ParameterizedType_ParameterizedFixedBinary::variation_pointer() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedFixedBinary.variation_pointer)
  return _internal_variation_pointer();
}
inline void ParameterizedType_ParameterizedFixedBinary::_internal_set_variation_pointer(uint32_t value) {
  
  variation_pointer_ = value;
}
inline void ParameterizedType_ParameterizedFixedBinary::set_variation_pointer(uint32_t value) {
  _internal_set_variation_pointer(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedFixedBinary.variation_pointer)
}

// .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
inline void ParameterizedType_ParameterizedFixedBinary::clear_nullability() {
  nullability_ = 0;
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedFixedBinary::_internal_nullability() const {
  return static_cast< ::substrait::Type_Nullability >(nullability_);
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedFixedBinary::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedFixedBinary.nullability)
  return _internal_nullability();
}
inline void ParameterizedType_ParameterizedFixedBinary::_internal_set_nullability(::substrait::Type_Nullability value) {
  
  nullability_ = value;
}
inline void ParameterizedType_ParameterizedFixedBinary::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedFixedBinary.nullability)
}

// -------------------------------------------------------------------

// ParameterizedType_ParameterizedDecimal

// .substrait.ParameterizedType.IntegerOption scale = 1 [json_name = "scale"];
inline bool ParameterizedType_ParameterizedDecimal::_internal_has_scale() const {
  return this != internal_default_instance() && scale_ != nullptr;
}
inline bool ParameterizedType_ParameterizedDecimal::has_scale() const {
  return _internal_has_scale();
}
inline void ParameterizedType_ParameterizedDecimal::clear_scale() {
  if (GetArenaForAllocation() == nullptr && scale_ != nullptr) {
    delete scale_;
  }
  scale_ = nullptr;
}
inline const ::substrait::ParameterizedType_IntegerOption& ParameterizedType_ParameterizedDecimal::_internal_scale() const {
  const ::substrait::ParameterizedType_IntegerOption* p = scale_;
  return p != nullptr ? *p : reinterpret_cast<const ::substrait::ParameterizedType_IntegerOption&>(
      ::substrait::_ParameterizedType_IntegerOption_default_instance_);
}
inline const ::substrait::ParameterizedType_IntegerOption& ParameterizedType_ParameterizedDecimal::scale() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedDecimal.scale)
  return _internal_scale();
}
inline void ParameterizedType_ParameterizedDecimal::unsafe_arena_set_allocated_scale(
    ::substrait::ParameterizedType_IntegerOption* scale) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(scale_);
  }
  scale_ = scale;
  if (scale) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.ParameterizedDecimal.scale)
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedDecimal::release_scale() {
  
  ::substrait::ParameterizedType_IntegerOption* temp = scale_;
  scale_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedDecimal::unsafe_arena_release_scale() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.ParameterizedDecimal.scale)
  
  ::substrait::ParameterizedType_IntegerOption* temp = scale_;
  scale_ = nullptr;
  return temp;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedDecimal::_internal_mutable_scale() {
  
  if (scale_ == nullptr) {
    auto* p = CreateMaybeMessage<::substrait::ParameterizedType_IntegerOption>(GetArenaForAllocation());
    scale_ = p;
  }
  return scale_;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedDecimal::mutable_scale() {
  ::substrait::ParameterizedType_IntegerOption* _msg = _internal_mutable_scale();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.ParameterizedDecimal.scale)
  return _msg;
}
inline void ParameterizedType_ParameterizedDecimal::set_allocated_scale(::substrait::ParameterizedType_IntegerOption* scale) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete scale_;
  }
  if (scale) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_IntegerOption>::GetOwningArena(scale);
    if (message_arena != submessage_arena) {
      scale = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, scale, submessage_arena);
    }
    
  } else {
    
  }
  scale_ = scale;
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.ParameterizedDecimal.scale)
}

// .substrait.ParameterizedType.IntegerOption precision = 2 [json_name = "precision"];
inline bool ParameterizedType_ParameterizedDecimal::_internal_has_precision() const {
  return this != internal_default_instance() && precision_ != nullptr;
}
inline bool ParameterizedType_ParameterizedDecimal::has_precision() const {
  return _internal_has_precision();
}
inline void ParameterizedType_ParameterizedDecimal::clear_precision() {
  if (GetArenaForAllocation() == nullptr && precision_ != nullptr) {
    delete precision_;
  }
  precision_ = nullptr;
}
inline const ::substrait::ParameterizedType_IntegerOption& ParameterizedType_ParameterizedDecimal::_internal_precision() const {
  const ::substrait::ParameterizedType_IntegerOption* p = precision_;
  return p != nullptr ? *p : reinterpret_cast<const ::substrait::ParameterizedType_IntegerOption&>(
      ::substrait::_ParameterizedType_IntegerOption_default_instance_);
}
inline const ::substrait::ParameterizedType_IntegerOption& ParameterizedType_ParameterizedDecimal::precision() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedDecimal.precision)
  return _internal_precision();
}
inline void ParameterizedType_ParameterizedDecimal::unsafe_arena_set_allocated_precision(
    ::substrait::ParameterizedType_IntegerOption* precision) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(precision_);
  }
  precision_ = precision;
  if (precision) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.ParameterizedDecimal.precision)
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedDecimal::release_precision() {
  
  ::substrait::ParameterizedType_IntegerOption* temp = precision_;
  precision_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedDecimal::unsafe_arena_release_precision() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.ParameterizedDecimal.precision)
  
  ::substrait::ParameterizedType_IntegerOption* temp = precision_;
  precision_ = nullptr;
  return temp;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedDecimal::_internal_mutable_precision() {
  
  if (precision_ == nullptr) {
    auto* p = CreateMaybeMessage<::substrait::ParameterizedType_IntegerOption>(GetArenaForAllocation());
    precision_ = p;
  }
  return precision_;
}
inline ::substrait::ParameterizedType_IntegerOption* ParameterizedType_ParameterizedDecimal::mutable_precision() {
  ::substrait::ParameterizedType_IntegerOption* _msg = _internal_mutable_precision();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.ParameterizedDecimal.precision)
  return _msg;
}
inline void ParameterizedType_ParameterizedDecimal::set_allocated_precision(::substrait::ParameterizedType_IntegerOption* precision) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete precision_;
  }
  if (precision) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType_IntegerOption>::GetOwningArena(precision);
    if (message_arena != submessage_arena) {
      precision = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, precision, submessage_arena);
    }
    
  } else {
    
  }
  precision_ = precision;
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.ParameterizedDecimal.precision)
}

// uint32 variation_pointer = 3 [json_name = "variationPointer"];
inline void ParameterizedType_ParameterizedDecimal::clear_variation_pointer() {
  variation_pointer_ = 0u;
}
inline uint32_t ParameterizedType_ParameterizedDecimal::_internal_variation_pointer() const {
  return variation_pointer_;
}
inline uint32_t ParameterizedType_ParameterizedDecimal::variation_pointer() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedDecimal.variation_pointer)
  return _internal_variation_pointer();
}
inline void ParameterizedType_ParameterizedDecimal::_internal_set_variation_pointer(uint32_t value) {
  
  variation_pointer_ = value;
}
inline void ParameterizedType_ParameterizedDecimal::set_variation_pointer(uint32_t value) {
  _internal_set_variation_pointer(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedDecimal.variation_pointer)
}

// .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
inline void ParameterizedType_ParameterizedDecimal::clear_nullability() {
  nullability_ = 0;
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedDecimal::_internal_nullability() const {
  return static_cast< ::substrait::Type_Nullability >(nullability_);
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedDecimal::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedDecimal.nullability)
  return _internal_nullability();
}
inline void ParameterizedType_ParameterizedDecimal::_internal_set_nullability(::substrait::Type_Nullability value) {
  
  nullability_ = value;
}
inline void ParameterizedType_ParameterizedDecimal::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedDecimal.nullability)
}

// -------------------------------------------------------------------

// ParameterizedType_ParameterizedStruct

// repeated .substrait.ParameterizedType types = 1 [json_name = "types"];
inline int ParameterizedType_ParameterizedStruct::_internal_types_size() const {
  return types_.size();
}
inline int ParameterizedType_ParameterizedStruct::types_size() const {
  return _internal_types_size();
}
inline void ParameterizedType_ParameterizedStruct::clear_types() {
  types_.Clear();
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedStruct::mutable_types(int index) {
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.ParameterizedStruct.types)
  return types_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::substrait::ParameterizedType >*
ParameterizedType_ParameterizedStruct::mutable_types() {
  // @@protoc_insertion_point(field_mutable_list:substrait.ParameterizedType.ParameterizedStruct.types)
  return &types_;
}
inline const ::substrait::ParameterizedType& ParameterizedType_ParameterizedStruct::_internal_types(int index) const {
  return types_.Get(index);
}
inline const ::substrait::ParameterizedType& ParameterizedType_ParameterizedStruct::types(int index) const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedStruct.types)
  return _internal_types(index);
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedStruct::_internal_add_types() {
  return types_.Add();
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedStruct::add_types() {
  ::substrait::ParameterizedType* _add = _internal_add_types();
  // @@protoc_insertion_point(field_add:substrait.ParameterizedType.ParameterizedStruct.types)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::substrait::ParameterizedType >&
ParameterizedType_ParameterizedStruct::types() const {
  // @@protoc_insertion_point(field_list:substrait.ParameterizedType.ParameterizedStruct.types)
  return types_;
}

// uint32 variation_pointer = 2 [json_name = "variationPointer"];
inline void ParameterizedType_ParameterizedStruct::clear_variation_pointer() {
  variation_pointer_ = 0u;
}
inline uint32_t ParameterizedType_ParameterizedStruct::_internal_variation_pointer() const {
  return variation_pointer_;
}
inline uint32_t ParameterizedType_ParameterizedStruct::variation_pointer() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedStruct.variation_pointer)
  return _internal_variation_pointer();
}
inline void ParameterizedType_ParameterizedStruct::_internal_set_variation_pointer(uint32_t value) {
  
  variation_pointer_ = value;
}
inline void ParameterizedType_ParameterizedStruct::set_variation_pointer(uint32_t value) {
  _internal_set_variation_pointer(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedStruct.variation_pointer)
}

// .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
inline void ParameterizedType_ParameterizedStruct::clear_nullability() {
  nullability_ = 0;
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedStruct::_internal_nullability() const {
  return static_cast< ::substrait::Type_Nullability >(nullability_);
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedStruct::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedStruct.nullability)
  return _internal_nullability();
}
inline void ParameterizedType_ParameterizedStruct::_internal_set_nullability(::substrait::Type_Nullability value) {
  
  nullability_ = value;
}
inline void ParameterizedType_ParameterizedStruct::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedStruct.nullability)
}

// -------------------------------------------------------------------

// ParameterizedType_ParameterizedNamedStruct

// repeated string names = 1 [json_name = "names"];
inline int ParameterizedType_ParameterizedNamedStruct::_internal_names_size() const {
  return names_.size();
}
inline int ParameterizedType_ParameterizedNamedStruct::names_size() const {
  return _internal_names_size();
}
inline void ParameterizedType_ParameterizedNamedStruct::clear_names() {
  names_.Clear();
}
inline std::string* ParameterizedType_ParameterizedNamedStruct::add_names() {
  std::string* _s = _internal_add_names();
  // @@protoc_insertion_point(field_add_mutable:substrait.ParameterizedType.ParameterizedNamedStruct.names)
  return _s;
}
inline const std::string& ParameterizedType_ParameterizedNamedStruct::_internal_names(int index) const {
  return names_.Get(index);
}
inline const std::string& ParameterizedType_ParameterizedNamedStruct::names(int index) const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedNamedStruct.names)
  return _internal_names(index);
}
inline std::string* ParameterizedType_ParameterizedNamedStruct::mutable_names(int index) {
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.ParameterizedNamedStruct.names)
  return names_.Mutable(index);
}
inline void ParameterizedType_ParameterizedNamedStruct::set_names(int index, const std::string& value) {
  names_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedNamedStruct.names)
}
inline void ParameterizedType_ParameterizedNamedStruct::set_names(int index, std::string&& value) {
  names_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedNamedStruct.names)
}
inline void ParameterizedType_ParameterizedNamedStruct::set_names(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  names_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:substrait.ParameterizedType.ParameterizedNamedStruct.names)
}
inline void ParameterizedType_ParameterizedNamedStruct::set_names(int index, const char* value, size_t size) {
  names_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:substrait.ParameterizedType.ParameterizedNamedStruct.names)
}
inline std::string* ParameterizedType_ParameterizedNamedStruct::_internal_add_names() {
  return names_.Add();
}
inline void ParameterizedType_ParameterizedNamedStruct::add_names(const std::string& value) {
  names_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:substrait.ParameterizedType.ParameterizedNamedStruct.names)
}
inline void ParameterizedType_ParameterizedNamedStruct::add_names(std::string&& value) {
  names_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:substrait.ParameterizedType.ParameterizedNamedStruct.names)
}
inline void ParameterizedType_ParameterizedNamedStruct::add_names(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  names_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:substrait.ParameterizedType.ParameterizedNamedStruct.names)
}
inline void ParameterizedType_ParameterizedNamedStruct::add_names(const char* value, size_t size) {
  names_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:substrait.ParameterizedType.ParameterizedNamedStruct.names)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
ParameterizedType_ParameterizedNamedStruct::names() const {
  // @@protoc_insertion_point(field_list:substrait.ParameterizedType.ParameterizedNamedStruct.names)
  return names_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
ParameterizedType_ParameterizedNamedStruct::mutable_names() {
  // @@protoc_insertion_point(field_mutable_list:substrait.ParameterizedType.ParameterizedNamedStruct.names)
  return &names_;
}

// .substrait.ParameterizedType.ParameterizedStruct struct = 2 [json_name = "struct"];
inline bool ParameterizedType_ParameterizedNamedStruct::_internal_has_struct_() const {
  return this != internal_default_instance() && struct__ != nullptr;
}
inline bool ParameterizedType_ParameterizedNamedStruct::has_struct_() const {
  return _internal_has_struct_();
}
inline void ParameterizedType_ParameterizedNamedStruct::clear_struct_() {
  if (GetArenaForAllocation() == nullptr && struct__ != nullptr) {
    delete struct__;
  }
  struct__ = nullptr;
}
inline const ::substrait::ParameterizedType_ParameterizedStruct& ParameterizedType_ParameterizedNamedStruct::_internal_struct_() const {
  const ::substrait::ParameterizedType_ParameterizedStruct* p = struct__;
  return p != nullptr ? *p : reinterpret_cast<const ::substrait::ParameterizedType_ParameterizedStruct&>(
      ::substrait::_ParameterizedType_ParameterizedStruct_default_instance_);
}
inline const ::substrait::ParameterizedType_ParameterizedStruct& ParameterizedType_ParameterizedNamedStruct::struct_() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedNamedStruct.struct)
  return _internal_struct_();
}
inline void ParameterizedType_ParameterizedNamedStruct::unsafe_arena_set_allocated_struct_(
    ::substrait::ParameterizedType_ParameterizedStruct* struct_) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(struct__);
  }
  struct__ = struct_;
  if (struct_) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.ParameterizedNamedStruct.struct)
}
inline ::substrait::ParameterizedType_ParameterizedStruct* ParameterizedType_ParameterizedNamedStruct::release_struct_() {
  
  ::substrait::ParameterizedType_ParameterizedStruct* temp = struct__;
  struct__ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::substrait::ParameterizedType_ParameterizedStruct* ParameterizedType_ParameterizedNamedStruct::unsafe_arena_release_struct_() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.ParameterizedNamedStruct.struct)
  
  ::substrait::ParameterizedType_ParameterizedStruct* temp = struct__;
  struct__ = nullptr;
  return temp;
}
inline ::substrait::ParameterizedType_ParameterizedStruct* ParameterizedType_ParameterizedNamedStruct::_internal_mutable_struct_() {
  
  if (struct__ == nullptr) {
    auto* p = CreateMaybeMessage<::substrait::ParameterizedType_ParameterizedStruct>(GetArenaForAllocation());
    struct__ = p;
  }
  return struct__;
}
inline ::substrait::ParameterizedType_ParameterizedStruct* ParameterizedType_ParameterizedNamedStruct::mutable_struct_() {
  ::substrait::ParameterizedType_ParameterizedStruct* _msg = _internal_mutable_struct_();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.ParameterizedNamedStruct.struct)
  return _msg;
}
inline void ParameterizedType_ParameterizedNamedStruct::set_allocated_struct_(::substrait::ParameterizedType_ParameterizedStruct* struct_) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete struct__;
  }
  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);
    }
    
  } else {
    
  }
  struct__ = struct_;
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.ParameterizedNamedStruct.struct)
}

// -------------------------------------------------------------------

// ParameterizedType_ParameterizedList

// .substrait.ParameterizedType type = 1 [json_name = "type"];
inline bool ParameterizedType_ParameterizedList::_internal_has_type() const {
  return this != internal_default_instance() && type_ != nullptr;
}
inline bool ParameterizedType_ParameterizedList::has_type() const {
  return _internal_has_type();
}
inline void ParameterizedType_ParameterizedList::clear_type() {
  if (GetArenaForAllocation() == nullptr && type_ != nullptr) {
    delete type_;
  }
  type_ = nullptr;
}
inline const ::substrait::ParameterizedType& ParameterizedType_ParameterizedList::_internal_type() const {
  const ::substrait::ParameterizedType* p = type_;
  return p != nullptr ? *p : reinterpret_cast<const ::substrait::ParameterizedType&>(
      ::substrait::_ParameterizedType_default_instance_);
}
inline const ::substrait::ParameterizedType& ParameterizedType_ParameterizedList::type() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedList.type)
  return _internal_type();
}
inline void ParameterizedType_ParameterizedList::unsafe_arena_set_allocated_type(
    ::substrait::ParameterizedType* type) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_);
  }
  type_ = type;
  if (type) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.ParameterizedList.type)
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedList::release_type() {
  
  ::substrait::ParameterizedType* temp = type_;
  type_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedList::unsafe_arena_release_type() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.ParameterizedList.type)
  
  ::substrait::ParameterizedType* temp = type_;
  type_ = nullptr;
  return temp;
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedList::_internal_mutable_type() {
  
  if (type_ == nullptr) {
    auto* p = CreateMaybeMessage<::substrait::ParameterizedType>(GetArenaForAllocation());
    type_ = p;
  }
  return type_;
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedList::mutable_type() {
  ::substrait::ParameterizedType* _msg = _internal_mutable_type();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.ParameterizedList.type)
  return _msg;
}
inline void ParameterizedType_ParameterizedList::set_allocated_type(::substrait::ParameterizedType* type) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete type_;
  }
  if (type) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType>::GetOwningArena(type);
    if (message_arena != submessage_arena) {
      type = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, type, submessage_arena);
    }
    
  } else {
    
  }
  type_ = type;
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.ParameterizedList.type)
}

// uint32 variation_pointer = 2 [json_name = "variationPointer"];
inline void ParameterizedType_ParameterizedList::clear_variation_pointer() {
  variation_pointer_ = 0u;
}
inline uint32_t ParameterizedType_ParameterizedList::_internal_variation_pointer() const {
  return variation_pointer_;
}
inline uint32_t ParameterizedType_ParameterizedList::variation_pointer() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedList.variation_pointer)
  return _internal_variation_pointer();
}
inline void ParameterizedType_ParameterizedList::_internal_set_variation_pointer(uint32_t value) {
  
  variation_pointer_ = value;
}
inline void ParameterizedType_ParameterizedList::set_variation_pointer(uint32_t value) {
  _internal_set_variation_pointer(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedList.variation_pointer)
}

// .substrait.Type.Nullability nullability = 3 [json_name = "nullability"];
inline void ParameterizedType_ParameterizedList::clear_nullability() {
  nullability_ = 0;
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedList::_internal_nullability() const {
  return static_cast< ::substrait::Type_Nullability >(nullability_);
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedList::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedList.nullability)
  return _internal_nullability();
}
inline void ParameterizedType_ParameterizedList::_internal_set_nullability(::substrait::Type_Nullability value) {
  
  nullability_ = value;
}
inline void ParameterizedType_ParameterizedList::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedList.nullability)
}

// -------------------------------------------------------------------

// ParameterizedType_ParameterizedMap

// .substrait.ParameterizedType key = 1 [json_name = "key"];
inline bool ParameterizedType_ParameterizedMap::_internal_has_key() const {
  return this != internal_default_instance() && key_ != nullptr;
}
inline bool ParameterizedType_ParameterizedMap::has_key() const {
  return _internal_has_key();
}
inline void ParameterizedType_ParameterizedMap::clear_key() {
  if (GetArenaForAllocation() == nullptr && key_ != nullptr) {
    delete key_;
  }
  key_ = nullptr;
}
inline const ::substrait::ParameterizedType& ParameterizedType_ParameterizedMap::_internal_key() const {
  const ::substrait::ParameterizedType* p = key_;
  return p != nullptr ? *p : reinterpret_cast<const ::substrait::ParameterizedType&>(
      ::substrait::_ParameterizedType_default_instance_);
}
inline const ::substrait::ParameterizedType& ParameterizedType_ParameterizedMap::key() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedMap.key)
  return _internal_key();
}
inline void ParameterizedType_ParameterizedMap::unsafe_arena_set_allocated_key(
    ::substrait::ParameterizedType* key) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(key_);
  }
  key_ = key;
  if (key) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.ParameterizedMap.key)
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedMap::release_key() {
  
  ::substrait::ParameterizedType* temp = key_;
  key_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedMap::unsafe_arena_release_key() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.ParameterizedMap.key)
  
  ::substrait::ParameterizedType* temp = key_;
  key_ = nullptr;
  return temp;
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedMap::_internal_mutable_key() {
  
  if (key_ == nullptr) {
    auto* p = CreateMaybeMessage<::substrait::ParameterizedType>(GetArenaForAllocation());
    key_ = p;
  }
  return key_;
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedMap::mutable_key() {
  ::substrait::ParameterizedType* _msg = _internal_mutable_key();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.ParameterizedMap.key)
  return _msg;
}
inline void ParameterizedType_ParameterizedMap::set_allocated_key(::substrait::ParameterizedType* key) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete key_;
  }
  if (key) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType>::GetOwningArena(key);
    if (message_arena != submessage_arena) {
      key = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, key, submessage_arena);
    }
    
  } else {
    
  }
  key_ = key;
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.ParameterizedMap.key)
}

// .substrait.ParameterizedType value = 2 [json_name = "value"];
inline bool ParameterizedType_ParameterizedMap::_internal_has_value() const {
  return this != internal_default_instance() && value_ != nullptr;
}
inline bool ParameterizedType_ParameterizedMap::has_value() const {
  return _internal_has_value();
}
inline void ParameterizedType_ParameterizedMap::clear_value() {
  if (GetArenaForAllocation() == nullptr && value_ != nullptr) {
    delete value_;
  }
  value_ = nullptr;
}
inline const ::substrait::ParameterizedType& ParameterizedType_ParameterizedMap::_internal_value() const {
  const ::substrait::ParameterizedType* p = value_;
  return p != nullptr ? *p : reinterpret_cast<const ::substrait::ParameterizedType&>(
      ::substrait::_ParameterizedType_default_instance_);
}
inline const ::substrait::ParameterizedType& ParameterizedType_ParameterizedMap::value() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedMap.value)
  return _internal_value();
}
inline void ParameterizedType_ParameterizedMap::unsafe_arena_set_allocated_value(
    ::substrait::ParameterizedType* value) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(value_);
  }
  value_ = value;
  if (value) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.ParameterizedMap.value)
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedMap::release_value() {
  
  ::substrait::ParameterizedType* temp = value_;
  value_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedMap::unsafe_arena_release_value() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.ParameterizedMap.value)
  
  ::substrait::ParameterizedType* temp = value_;
  value_ = nullptr;
  return temp;
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedMap::_internal_mutable_value() {
  
  if (value_ == nullptr) {
    auto* p = CreateMaybeMessage<::substrait::ParameterizedType>(GetArenaForAllocation());
    value_ = p;
  }
  return value_;
}
inline ::substrait::ParameterizedType* ParameterizedType_ParameterizedMap::mutable_value() {
  ::substrait::ParameterizedType* _msg = _internal_mutable_value();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.ParameterizedMap.value)
  return _msg;
}
inline void ParameterizedType_ParameterizedMap::set_allocated_value(::substrait::ParameterizedType* value) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete value_;
  }
  if (value) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::substrait::ParameterizedType>::GetOwningArena(value);
    if (message_arena != submessage_arena) {
      value = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, value, submessage_arena);
    }
    
  } else {
    
  }
  value_ = value;
  // @@protoc_insertion_point(field_set_allocated:substrait.ParameterizedType.ParameterizedMap.value)
}

// uint32 variation_pointer = 3 [json_name = "variationPointer"];
inline void ParameterizedType_ParameterizedMap::clear_variation_pointer() {
  variation_pointer_ = 0u;
}
inline uint32_t ParameterizedType_ParameterizedMap::_internal_variation_pointer() const {
  return variation_pointer_;
}
inline uint32_t ParameterizedType_ParameterizedMap::variation_pointer() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedMap.variation_pointer)
  return _internal_variation_pointer();
}
inline void ParameterizedType_ParameterizedMap::_internal_set_variation_pointer(uint32_t value) {
  
  variation_pointer_ = value;
}
inline void ParameterizedType_ParameterizedMap::set_variation_pointer(uint32_t value) {
  _internal_set_variation_pointer(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedMap.variation_pointer)
}

// .substrait.Type.Nullability nullability = 4 [json_name = "nullability"];
inline void ParameterizedType_ParameterizedMap::clear_nullability() {
  nullability_ = 0;
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedMap::_internal_nullability() const {
  return static_cast< ::substrait::Type_Nullability >(nullability_);
}
inline ::substrait::Type_Nullability ParameterizedType_ParameterizedMap::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.ParameterizedMap.nullability)
  return _internal_nullability();
}
inline void ParameterizedType_ParameterizedMap::_internal_set_nullability(::substrait::Type_Nullability value) {
  
  nullability_ = value;
}
inline void ParameterizedType_ParameterizedMap::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.ParameterizedMap.nullability)
}

// -------------------------------------------------------------------

// ParameterizedType_IntegerOption

// int32 literal = 1 [json_name = "literal"];
inline bool ParameterizedType_IntegerOption::_internal_has_literal() const {
  return integer_type_case() == kLiteral;
}
inline bool ParameterizedType_IntegerOption::has_literal() const {
  return _internal_has_literal();
}
inline void ParameterizedType_IntegerOption::set_has_literal() {
  _oneof_case_[0] = kLiteral;
}
inline void ParameterizedType_IntegerOption::clear_literal() {
  if (_internal_has_literal()) {
    integer_type_.literal_ = 0;
    clear_has_integer_type();
  }
}
inline int32_t ParameterizedType_IntegerOption::_internal_literal() const {
  if (_internal_has_literal()) {
    return integer_type_.literal_;
  }
  return 0;
}
inline void ParameterizedType_IntegerOption::_internal_set_literal(int32_t value) {
  if (!_internal_has_literal()) {
    clear_integer_type();
    set_has_literal();
  }
  integer_type_.literal_ = value;
}
inline int32_t ParameterizedType_IntegerOption::literal() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.IntegerOption.literal)
  return _internal_literal();
}
inline void ParameterizedType_IntegerOption::set_literal(int32_t value) {
  _internal_set_literal(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.IntegerOption.literal)
}

// .substrait.ParameterizedType.IntegerParameter parameter = 2 [json_name = "parameter"];
inline bool ParameterizedType_IntegerOption::_internal_has_parameter() const {
  return integer_type_case() == kParameter;
}
inline bool ParameterizedType_IntegerOption::has_parameter() const {
  return _internal_has_parameter();
}
inline void ParameterizedType_IntegerOption::set_has_parameter() {
  _oneof_case_[0] = kParameter;
}
inline void ParameterizedType_IntegerOption::clear_parameter() {
  if (_internal_has_parameter()) {
    if (GetArenaForAllocation() == nullptr) {
      delete integer_type_.parameter_;
    }
    clear_has_integer_type();
  }
}
inline ::substrait::ParameterizedType_IntegerParameter* ParameterizedType_IntegerOption::release_parameter() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.IntegerOption.parameter)
  if (_internal_has_parameter()) {
    clear_has_integer_type();
      ::substrait::ParameterizedType_IntegerParameter* temp = integer_type_.parameter_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    integer_type_.parameter_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::ParameterizedType_IntegerParameter& ParameterizedType_IntegerOption::_internal_parameter() const {
  return _internal_has_parameter()
      ? *integer_type_.parameter_
      : reinterpret_cast< ::substrait::ParameterizedType_IntegerParameter&>(::substrait::_ParameterizedType_IntegerParameter_default_instance_);
}
inline const ::substrait::ParameterizedType_IntegerParameter& ParameterizedType_IntegerOption::parameter() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.IntegerOption.parameter)
  return _internal_parameter();
}
inline ::substrait::ParameterizedType_IntegerParameter* ParameterizedType_IntegerOption::unsafe_arena_release_parameter() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.IntegerOption.parameter)
  if (_internal_has_parameter()) {
    clear_has_integer_type();
    ::substrait::ParameterizedType_IntegerParameter* temp = integer_type_.parameter_;
    integer_type_.parameter_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType_IntegerOption::unsafe_arena_set_allocated_parameter(::substrait::ParameterizedType_IntegerParameter* parameter) {
  clear_integer_type();
  if (parameter) {
    set_has_parameter();
    integer_type_.parameter_ = parameter;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.IntegerOption.parameter)
}
inline ::substrait::ParameterizedType_IntegerParameter* ParameterizedType_IntegerOption::_internal_mutable_parameter() {
  if (!_internal_has_parameter()) {
    clear_integer_type();
    set_has_parameter();
    integer_type_.parameter_ = CreateMaybeMessage< ::substrait::ParameterizedType_IntegerParameter >(GetArenaForAllocation());
  }
  return integer_type_.parameter_;
}
inline ::substrait::ParameterizedType_IntegerParameter* ParameterizedType_IntegerOption::mutable_parameter() {
  ::substrait::ParameterizedType_IntegerParameter* _msg = _internal_mutable_parameter();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.IntegerOption.parameter)
  return _msg;
}

inline bool ParameterizedType_IntegerOption::has_integer_type() const {
  return integer_type_case() != INTEGER_TYPE_NOT_SET;
}
inline void ParameterizedType_IntegerOption::clear_has_integer_type() {
  _oneof_case_[0] = INTEGER_TYPE_NOT_SET;
}
inline ParameterizedType_IntegerOption::IntegerTypeCase ParameterizedType_IntegerOption::integer_type_case() const {
  return ParameterizedType_IntegerOption::IntegerTypeCase(_oneof_case_[0]);
}
// -------------------------------------------------------------------

// ParameterizedType

// .substrait.Type.Boolean bool = 1 [json_name = "bool"];
inline bool ParameterizedType::_internal_has_bool_() const {
  return kind_case() == kBool;
}
inline bool ParameterizedType::has_bool_() const {
  return _internal_has_bool_();
}
inline void ParameterizedType::set_has_bool_() {
  _oneof_case_[0] = kBool;
}
inline ::substrait::Type_Boolean* ParameterizedType::release_bool_() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.bool)
  if (_internal_has_bool_()) {
    clear_has_kind();
      ::substrait::Type_Boolean* temp = kind_.bool__;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.bool__ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_Boolean& ParameterizedType::_internal_bool_() const {
  return _internal_has_bool_()
      ? *kind_.bool__
      : reinterpret_cast< ::substrait::Type_Boolean&>(::substrait::_Type_Boolean_default_instance_);
}
inline const ::substrait::Type_Boolean& ParameterizedType::bool_() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.bool)
  return _internal_bool_();
}
inline ::substrait::Type_Boolean* ParameterizedType::unsafe_arena_release_bool_() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.bool)
  if (_internal_has_bool_()) {
    clear_has_kind();
    ::substrait::Type_Boolean* temp = kind_.bool__;
    kind_.bool__ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_bool_(::substrait::Type_Boolean* bool_) {
  clear_kind();
  if (bool_) {
    set_has_bool_();
    kind_.bool__ = bool_;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.bool)
}
inline ::substrait::Type_Boolean* ParameterizedType::_internal_mutable_bool_() {
  if (!_internal_has_bool_()) {
    clear_kind();
    set_has_bool_();
    kind_.bool__ = CreateMaybeMessage< ::substrait::Type_Boolean >(GetArenaForAllocation());
  }
  return kind_.bool__;
}
inline ::substrait::Type_Boolean* ParameterizedType::mutable_bool_() {
  ::substrait::Type_Boolean* _msg = _internal_mutable_bool_();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.bool)
  return _msg;
}

// .substrait.Type.I8 i8 = 2 [json_name = "i8"];
inline bool ParameterizedType::_internal_has_i8() const {
  return kind_case() == kI8;
}
inline bool ParameterizedType::has_i8() const {
  return _internal_has_i8();
}
inline void ParameterizedType::set_has_i8() {
  _oneof_case_[0] = kI8;
}
inline ::substrait::Type_I8* ParameterizedType::release_i8() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.i8)
  if (_internal_has_i8()) {
    clear_has_kind();
      ::substrait::Type_I8* temp = kind_.i8_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.i8_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_I8& ParameterizedType::_internal_i8() const {
  return _internal_has_i8()
      ? *kind_.i8_
      : reinterpret_cast< ::substrait::Type_I8&>(::substrait::_Type_I8_default_instance_);
}
inline const ::substrait::Type_I8& ParameterizedType::i8() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.i8)
  return _internal_i8();
}
inline ::substrait::Type_I8* ParameterizedType::unsafe_arena_release_i8() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.i8)
  if (_internal_has_i8()) {
    clear_has_kind();
    ::substrait::Type_I8* temp = kind_.i8_;
    kind_.i8_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_i8(::substrait::Type_I8* i8) {
  clear_kind();
  if (i8) {
    set_has_i8();
    kind_.i8_ = i8;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.i8)
}
inline ::substrait::Type_I8* ParameterizedType::_internal_mutable_i8() {
  if (!_internal_has_i8()) {
    clear_kind();
    set_has_i8();
    kind_.i8_ = CreateMaybeMessage< ::substrait::Type_I8 >(GetArenaForAllocation());
  }
  return kind_.i8_;
}
inline ::substrait::Type_I8* ParameterizedType::mutable_i8() {
  ::substrait::Type_I8* _msg = _internal_mutable_i8();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.i8)
  return _msg;
}

// .substrait.Type.I16 i16 = 3 [json_name = "i16"];
inline bool ParameterizedType::_internal_has_i16() const {
  return kind_case() == kI16;
}
inline bool ParameterizedType::has_i16() const {
  return _internal_has_i16();
}
inline void ParameterizedType::set_has_i16() {
  _oneof_case_[0] = kI16;
}
inline ::substrait::Type_I16* ParameterizedType::release_i16() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.i16)
  if (_internal_has_i16()) {
    clear_has_kind();
      ::substrait::Type_I16* temp = kind_.i16_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.i16_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_I16& ParameterizedType::_internal_i16() const {
  return _internal_has_i16()
      ? *kind_.i16_
      : reinterpret_cast< ::substrait::Type_I16&>(::substrait::_Type_I16_default_instance_);
}
inline const ::substrait::Type_I16& ParameterizedType::i16() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.i16)
  return _internal_i16();
}
inline ::substrait::Type_I16* ParameterizedType::unsafe_arena_release_i16() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.i16)
  if (_internal_has_i16()) {
    clear_has_kind();
    ::substrait::Type_I16* temp = kind_.i16_;
    kind_.i16_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_i16(::substrait::Type_I16* i16) {
  clear_kind();
  if (i16) {
    set_has_i16();
    kind_.i16_ = i16;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.i16)
}
inline ::substrait::Type_I16* ParameterizedType::_internal_mutable_i16() {
  if (!_internal_has_i16()) {
    clear_kind();
    set_has_i16();
    kind_.i16_ = CreateMaybeMessage< ::substrait::Type_I16 >(GetArenaForAllocation());
  }
  return kind_.i16_;
}
inline ::substrait::Type_I16* ParameterizedType::mutable_i16() {
  ::substrait::Type_I16* _msg = _internal_mutable_i16();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.i16)
  return _msg;
}

// .substrait.Type.I32 i32 = 5 [json_name = "i32"];
inline bool ParameterizedType::_internal_has_i32() const {
  return kind_case() == kI32;
}
inline bool ParameterizedType::has_i32() const {
  return _internal_has_i32();
}
inline void ParameterizedType::set_has_i32() {
  _oneof_case_[0] = kI32;
}
inline ::substrait::Type_I32* ParameterizedType::release_i32() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.i32)
  if (_internal_has_i32()) {
    clear_has_kind();
      ::substrait::Type_I32* temp = kind_.i32_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.i32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_I32& ParameterizedType::_internal_i32() const {
  return _internal_has_i32()
      ? *kind_.i32_
      : reinterpret_cast< ::substrait::Type_I32&>(::substrait::_Type_I32_default_instance_);
}
inline const ::substrait::Type_I32& ParameterizedType::i32() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.i32)
  return _internal_i32();
}
inline ::substrait::Type_I32* ParameterizedType::unsafe_arena_release_i32() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.i32)
  if (_internal_has_i32()) {
    clear_has_kind();
    ::substrait::Type_I32* temp = kind_.i32_;
    kind_.i32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_i32(::substrait::Type_I32* i32) {
  clear_kind();
  if (i32) {
    set_has_i32();
    kind_.i32_ = i32;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.i32)
}
inline ::substrait::Type_I32* ParameterizedType::_internal_mutable_i32() {
  if (!_internal_has_i32()) {
    clear_kind();
    set_has_i32();
    kind_.i32_ = CreateMaybeMessage< ::substrait::Type_I32 >(GetArenaForAllocation());
  }
  return kind_.i32_;
}
inline ::substrait::Type_I32* ParameterizedType::mutable_i32() {
  ::substrait::Type_I32* _msg = _internal_mutable_i32();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.i32)
  return _msg;
}

// .substrait.Type.I64 i64 = 7 [json_name = "i64"];
inline bool ParameterizedType::_internal_has_i64() const {
  return kind_case() == kI64;
}
inline bool ParameterizedType::has_i64() const {
  return _internal_has_i64();
}
inline void ParameterizedType::set_has_i64() {
  _oneof_case_[0] = kI64;
}
inline ::substrait::Type_I64* ParameterizedType::release_i64() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.i64)
  if (_internal_has_i64()) {
    clear_has_kind();
      ::substrait::Type_I64* temp = kind_.i64_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.i64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_I64& ParameterizedType::_internal_i64() const {
  return _internal_has_i64()
      ? *kind_.i64_
      : reinterpret_cast< ::substrait::Type_I64&>(::substrait::_Type_I64_default_instance_);
}
inline const ::substrait::Type_I64& ParameterizedType::i64() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.i64)
  return _internal_i64();
}
inline ::substrait::Type_I64* ParameterizedType::unsafe_arena_release_i64() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.i64)
  if (_internal_has_i64()) {
    clear_has_kind();
    ::substrait::Type_I64* temp = kind_.i64_;
    kind_.i64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_i64(::substrait::Type_I64* i64) {
  clear_kind();
  if (i64) {
    set_has_i64();
    kind_.i64_ = i64;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.i64)
}
inline ::substrait::Type_I64* ParameterizedType::_internal_mutable_i64() {
  if (!_internal_has_i64()) {
    clear_kind();
    set_has_i64();
    kind_.i64_ = CreateMaybeMessage< ::substrait::Type_I64 >(GetArenaForAllocation());
  }
  return kind_.i64_;
}
inline ::substrait::Type_I64* ParameterizedType::mutable_i64() {
  ::substrait::Type_I64* _msg = _internal_mutable_i64();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.i64)
  return _msg;
}

// .substrait.Type.FP32 fp32 = 10 [json_name = "fp32"];
inline bool ParameterizedType::_internal_has_fp32() const {
  return kind_case() == kFp32;
}
inline bool ParameterizedType::has_fp32() const {
  return _internal_has_fp32();
}
inline void ParameterizedType::set_has_fp32() {
  _oneof_case_[0] = kFp32;
}
inline ::substrait::Type_FP32* ParameterizedType::release_fp32() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.fp32)
  if (_internal_has_fp32()) {
    clear_has_kind();
      ::substrait::Type_FP32* temp = kind_.fp32_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.fp32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_FP32& ParameterizedType::_internal_fp32() const {
  return _internal_has_fp32()
      ? *kind_.fp32_
      : reinterpret_cast< ::substrait::Type_FP32&>(::substrait::_Type_FP32_default_instance_);
}
inline const ::substrait::Type_FP32& ParameterizedType::fp32() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.fp32)
  return _internal_fp32();
}
inline ::substrait::Type_FP32* ParameterizedType::unsafe_arena_release_fp32() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.fp32)
  if (_internal_has_fp32()) {
    clear_has_kind();
    ::substrait::Type_FP32* temp = kind_.fp32_;
    kind_.fp32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_fp32(::substrait::Type_FP32* fp32) {
  clear_kind();
  if (fp32) {
    set_has_fp32();
    kind_.fp32_ = fp32;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.fp32)
}
inline ::substrait::Type_FP32* ParameterizedType::_internal_mutable_fp32() {
  if (!_internal_has_fp32()) {
    clear_kind();
    set_has_fp32();
    kind_.fp32_ = CreateMaybeMessage< ::substrait::Type_FP32 >(GetArenaForAllocation());
  }
  return kind_.fp32_;
}
inline ::substrait::Type_FP32* ParameterizedType::mutable_fp32() {
  ::substrait::Type_FP32* _msg = _internal_mutable_fp32();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.fp32)
  return _msg;
}

// .substrait.Type.FP64 fp64 = 11 [json_name = "fp64"];
inline bool ParameterizedType::_internal_has_fp64() const {
  return kind_case() == kFp64;
}
inline bool ParameterizedType::has_fp64() const {
  return _internal_has_fp64();
}
inline void ParameterizedType::set_has_fp64() {
  _oneof_case_[0] = kFp64;
}
inline ::substrait::Type_FP64* ParameterizedType::release_fp64() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.fp64)
  if (_internal_has_fp64()) {
    clear_has_kind();
      ::substrait::Type_FP64* temp = kind_.fp64_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.fp64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_FP64& ParameterizedType::_internal_fp64() const {
  return _internal_has_fp64()
      ? *kind_.fp64_
      : reinterpret_cast< ::substrait::Type_FP64&>(::substrait::_Type_FP64_default_instance_);
}
inline const ::substrait::Type_FP64& ParameterizedType::fp64() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.fp64)
  return _internal_fp64();
}
inline ::substrait::Type_FP64* ParameterizedType::unsafe_arena_release_fp64() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.fp64)
  if (_internal_has_fp64()) {
    clear_has_kind();
    ::substrait::Type_FP64* temp = kind_.fp64_;
    kind_.fp64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_fp64(::substrait::Type_FP64* fp64) {
  clear_kind();
  if (fp64) {
    set_has_fp64();
    kind_.fp64_ = fp64;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.fp64)
}
inline ::substrait::Type_FP64* ParameterizedType::_internal_mutable_fp64() {
  if (!_internal_has_fp64()) {
    clear_kind();
    set_has_fp64();
    kind_.fp64_ = CreateMaybeMessage< ::substrait::Type_FP64 >(GetArenaForAllocation());
  }
  return kind_.fp64_;
}
inline ::substrait::Type_FP64* ParameterizedType::mutable_fp64() {
  ::substrait::Type_FP64* _msg = _internal_mutable_fp64();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.fp64)
  return _msg;
}

// .substrait.Type.String string = 12 [json_name = "string"];
inline bool ParameterizedType::_internal_has_string() const {
  return kind_case() == kString;
}
inline bool ParameterizedType::has_string() const {
  return _internal_has_string();
}
inline void ParameterizedType::set_has_string() {
  _oneof_case_[0] = kString;
}
inline ::substrait::Type_String* ParameterizedType::release_string() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.string)
  if (_internal_has_string()) {
    clear_has_kind();
      ::substrait::Type_String* temp = kind_.string_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.string_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_String& ParameterizedType::_internal_string() const {
  return _internal_has_string()
      ? *kind_.string_
      : reinterpret_cast< ::substrait::Type_String&>(::substrait::_Type_String_default_instance_);
}
inline const ::substrait::Type_String& ParameterizedType::string() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.string)
  return _internal_string();
}
inline ::substrait::Type_String* ParameterizedType::unsafe_arena_release_string() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.string)
  if (_internal_has_string()) {
    clear_has_kind();
    ::substrait::Type_String* temp = kind_.string_;
    kind_.string_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_string(::substrait::Type_String* string) {
  clear_kind();
  if (string) {
    set_has_string();
    kind_.string_ = string;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.string)
}
inline ::substrait::Type_String* ParameterizedType::_internal_mutable_string() {
  if (!_internal_has_string()) {
    clear_kind();
    set_has_string();
    kind_.string_ = CreateMaybeMessage< ::substrait::Type_String >(GetArenaForAllocation());
  }
  return kind_.string_;
}
inline ::substrait::Type_String* ParameterizedType::mutable_string() {
  ::substrait::Type_String* _msg = _internal_mutable_string();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.string)
  return _msg;
}

// .substrait.Type.Binary binary = 13 [json_name = "binary"];
inline bool ParameterizedType::_internal_has_binary() const {
  return kind_case() == kBinary;
}
inline bool ParameterizedType::has_binary() const {
  return _internal_has_binary();
}
inline void ParameterizedType::set_has_binary() {
  _oneof_case_[0] = kBinary;
}
inline ::substrait::Type_Binary* ParameterizedType::release_binary() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.binary)
  if (_internal_has_binary()) {
    clear_has_kind();
      ::substrait::Type_Binary* temp = kind_.binary_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.binary_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_Binary& ParameterizedType::_internal_binary() const {
  return _internal_has_binary()
      ? *kind_.binary_
      : reinterpret_cast< ::substrait::Type_Binary&>(::substrait::_Type_Binary_default_instance_);
}
inline const ::substrait::Type_Binary& ParameterizedType::binary() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.binary)
  return _internal_binary();
}
inline ::substrait::Type_Binary* ParameterizedType::unsafe_arena_release_binary() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.binary)
  if (_internal_has_binary()) {
    clear_has_kind();
    ::substrait::Type_Binary* temp = kind_.binary_;
    kind_.binary_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_binary(::substrait::Type_Binary* binary) {
  clear_kind();
  if (binary) {
    set_has_binary();
    kind_.binary_ = binary;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.binary)
}
inline ::substrait::Type_Binary* ParameterizedType::_internal_mutable_binary() {
  if (!_internal_has_binary()) {
    clear_kind();
    set_has_binary();
    kind_.binary_ = CreateMaybeMessage< ::substrait::Type_Binary >(GetArenaForAllocation());
  }
  return kind_.binary_;
}
inline ::substrait::Type_Binary* ParameterizedType::mutable_binary() {
  ::substrait::Type_Binary* _msg = _internal_mutable_binary();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.binary)
  return _msg;
}

// .substrait.Type.Timestamp timestamp = 14 [json_name = "timestamp"];
inline bool ParameterizedType::_internal_has_timestamp() const {
  return kind_case() == kTimestamp;
}
inline bool ParameterizedType::has_timestamp() const {
  return _internal_has_timestamp();
}
inline void ParameterizedType::set_has_timestamp() {
  _oneof_case_[0] = kTimestamp;
}
inline ::substrait::Type_Timestamp* ParameterizedType::release_timestamp() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.timestamp)
  if (_internal_has_timestamp()) {
    clear_has_kind();
      ::substrait::Type_Timestamp* temp = kind_.timestamp_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.timestamp_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_Timestamp& ParameterizedType::_internal_timestamp() const {
  return _internal_has_timestamp()
      ? *kind_.timestamp_
      : reinterpret_cast< ::substrait::Type_Timestamp&>(::substrait::_Type_Timestamp_default_instance_);
}
inline const ::substrait::Type_Timestamp& ParameterizedType::timestamp() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.timestamp)
  return _internal_timestamp();
}
inline ::substrait::Type_Timestamp* ParameterizedType::unsafe_arena_release_timestamp() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.timestamp)
  if (_internal_has_timestamp()) {
    clear_has_kind();
    ::substrait::Type_Timestamp* temp = kind_.timestamp_;
    kind_.timestamp_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_timestamp(::substrait::Type_Timestamp* timestamp) {
  clear_kind();
  if (timestamp) {
    set_has_timestamp();
    kind_.timestamp_ = timestamp;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.timestamp)
}
inline ::substrait::Type_Timestamp* ParameterizedType::_internal_mutable_timestamp() {
  if (!_internal_has_timestamp()) {
    clear_kind();
    set_has_timestamp();
    kind_.timestamp_ = CreateMaybeMessage< ::substrait::Type_Timestamp >(GetArenaForAllocation());
  }
  return kind_.timestamp_;
}
inline ::substrait::Type_Timestamp* ParameterizedType::mutable_timestamp() {
  ::substrait::Type_Timestamp* _msg = _internal_mutable_timestamp();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.timestamp)
  return _msg;
}

// .substrait.Type.Date date = 16 [json_name = "date"];
inline bool ParameterizedType::_internal_has_date() const {
  return kind_case() == kDate;
}
inline bool ParameterizedType::has_date() const {
  return _internal_has_date();
}
inline void ParameterizedType::set_has_date() {
  _oneof_case_[0] = kDate;
}
inline ::substrait::Type_Date* ParameterizedType::release_date() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.date)
  if (_internal_has_date()) {
    clear_has_kind();
      ::substrait::Type_Date* temp = kind_.date_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.date_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_Date& ParameterizedType::_internal_date() const {
  return _internal_has_date()
      ? *kind_.date_
      : reinterpret_cast< ::substrait::Type_Date&>(::substrait::_Type_Date_default_instance_);
}
inline const ::substrait::Type_Date& ParameterizedType::date() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.date)
  return _internal_date();
}
inline ::substrait::Type_Date* ParameterizedType::unsafe_arena_release_date() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.date)
  if (_internal_has_date()) {
    clear_has_kind();
    ::substrait::Type_Date* temp = kind_.date_;
    kind_.date_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_date(::substrait::Type_Date* date) {
  clear_kind();
  if (date) {
    set_has_date();
    kind_.date_ = date;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.date)
}
inline ::substrait::Type_Date* ParameterizedType::_internal_mutable_date() {
  if (!_internal_has_date()) {
    clear_kind();
    set_has_date();
    kind_.date_ = CreateMaybeMessage< ::substrait::Type_Date >(GetArenaForAllocation());
  }
  return kind_.date_;
}
inline ::substrait::Type_Date* ParameterizedType::mutable_date() {
  ::substrait::Type_Date* _msg = _internal_mutable_date();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.date)
  return _msg;
}

// .substrait.Type.Time time = 17 [json_name = "time"];
inline bool ParameterizedType::_internal_has_time() const {
  return kind_case() == kTime;
}
inline bool ParameterizedType::has_time() const {
  return _internal_has_time();
}
inline void ParameterizedType::set_has_time() {
  _oneof_case_[0] = kTime;
}
inline ::substrait::Type_Time* ParameterizedType::release_time() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.time)
  if (_internal_has_time()) {
    clear_has_kind();
      ::substrait::Type_Time* temp = kind_.time_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_Time& ParameterizedType::_internal_time() const {
  return _internal_has_time()
      ? *kind_.time_
      : reinterpret_cast< ::substrait::Type_Time&>(::substrait::_Type_Time_default_instance_);
}
inline const ::substrait::Type_Time& ParameterizedType::time() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.time)
  return _internal_time();
}
inline ::substrait::Type_Time* ParameterizedType::unsafe_arena_release_time() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.time)
  if (_internal_has_time()) {
    clear_has_kind();
    ::substrait::Type_Time* temp = kind_.time_;
    kind_.time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_time(::substrait::Type_Time* time) {
  clear_kind();
  if (time) {
    set_has_time();
    kind_.time_ = time;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.time)
}
inline ::substrait::Type_Time* ParameterizedType::_internal_mutable_time() {
  if (!_internal_has_time()) {
    clear_kind();
    set_has_time();
    kind_.time_ = CreateMaybeMessage< ::substrait::Type_Time >(GetArenaForAllocation());
  }
  return kind_.time_;
}
inline ::substrait::Type_Time* ParameterizedType::mutable_time() {
  ::substrait::Type_Time* _msg = _internal_mutable_time();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.time)
  return _msg;
}

// .substrait.Type.IntervalYear interval_year = 19 [json_name = "intervalYear"];
inline bool ParameterizedType::_internal_has_interval_year() const {
  return kind_case() == kIntervalYear;
}
inline bool ParameterizedType::has_interval_year() const {
  return _internal_has_interval_year();
}
inline void ParameterizedType::set_has_interval_year() {
  _oneof_case_[0] = kIntervalYear;
}
inline ::substrait::Type_IntervalYear* ParameterizedType::release_interval_year() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.interval_year)
  if (_internal_has_interval_year()) {
    clear_has_kind();
      ::substrait::Type_IntervalYear* temp = kind_.interval_year_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.interval_year_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_IntervalYear& ParameterizedType::_internal_interval_year() const {
  return _internal_has_interval_year()
      ? *kind_.interval_year_
      : reinterpret_cast< ::substrait::Type_IntervalYear&>(::substrait::_Type_IntervalYear_default_instance_);
}
inline const ::substrait::Type_IntervalYear& ParameterizedType::interval_year() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.interval_year)
  return _internal_interval_year();
}
inline ::substrait::Type_IntervalYear* ParameterizedType::unsafe_arena_release_interval_year() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.interval_year)
  if (_internal_has_interval_year()) {
    clear_has_kind();
    ::substrait::Type_IntervalYear* temp = kind_.interval_year_;
    kind_.interval_year_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_interval_year(::substrait::Type_IntervalYear* interval_year) {
  clear_kind();
  if (interval_year) {
    set_has_interval_year();
    kind_.interval_year_ = interval_year;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.interval_year)
}
inline ::substrait::Type_IntervalYear* ParameterizedType::_internal_mutable_interval_year() {
  if (!_internal_has_interval_year()) {
    clear_kind();
    set_has_interval_year();
    kind_.interval_year_ = CreateMaybeMessage< ::substrait::Type_IntervalYear >(GetArenaForAllocation());
  }
  return kind_.interval_year_;
}
inline ::substrait::Type_IntervalYear* ParameterizedType::mutable_interval_year() {
  ::substrait::Type_IntervalYear* _msg = _internal_mutable_interval_year();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.interval_year)
  return _msg;
}

// .substrait.Type.IntervalDay interval_day = 20 [json_name = "intervalDay"];
inline bool ParameterizedType::_internal_has_interval_day() const {
  return kind_case() == kIntervalDay;
}
inline bool ParameterizedType::has_interval_day() const {
  return _internal_has_interval_day();
}
inline void ParameterizedType::set_has_interval_day() {
  _oneof_case_[0] = kIntervalDay;
}
inline ::substrait::Type_IntervalDay* ParameterizedType::release_interval_day() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.interval_day)
  if (_internal_has_interval_day()) {
    clear_has_kind();
      ::substrait::Type_IntervalDay* temp = kind_.interval_day_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.interval_day_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_IntervalDay& ParameterizedType::_internal_interval_day() const {
  return _internal_has_interval_day()
      ? *kind_.interval_day_
      : reinterpret_cast< ::substrait::Type_IntervalDay&>(::substrait::_Type_IntervalDay_default_instance_);
}
inline const ::substrait::Type_IntervalDay& ParameterizedType::interval_day() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.interval_day)
  return _internal_interval_day();
}
inline ::substrait::Type_IntervalDay* ParameterizedType::unsafe_arena_release_interval_day() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.interval_day)
  if (_internal_has_interval_day()) {
    clear_has_kind();
    ::substrait::Type_IntervalDay* temp = kind_.interval_day_;
    kind_.interval_day_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_interval_day(::substrait::Type_IntervalDay* interval_day) {
  clear_kind();
  if (interval_day) {
    set_has_interval_day();
    kind_.interval_day_ = interval_day;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.interval_day)
}
inline ::substrait::Type_IntervalDay* ParameterizedType::_internal_mutable_interval_day() {
  if (!_internal_has_interval_day()) {
    clear_kind();
    set_has_interval_day();
    kind_.interval_day_ = CreateMaybeMessage< ::substrait::Type_IntervalDay >(GetArenaForAllocation());
  }
  return kind_.interval_day_;
}
inline ::substrait::Type_IntervalDay* ParameterizedType::mutable_interval_day() {
  ::substrait::Type_IntervalDay* _msg = _internal_mutable_interval_day();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.interval_day)
  return _msg;
}

// .substrait.Type.TimestampTZ timestamp_tz = 29 [json_name = "timestampTz"];
inline bool ParameterizedType::_internal_has_timestamp_tz() const {
  return kind_case() == kTimestampTz;
}
inline bool ParameterizedType::has_timestamp_tz() const {
  return _internal_has_timestamp_tz();
}
inline void ParameterizedType::set_has_timestamp_tz() {
  _oneof_case_[0] = kTimestampTz;
}
inline ::substrait::Type_TimestampTZ* ParameterizedType::release_timestamp_tz() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.timestamp_tz)
  if (_internal_has_timestamp_tz()) {
    clear_has_kind();
      ::substrait::Type_TimestampTZ* temp = kind_.timestamp_tz_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.timestamp_tz_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_TimestampTZ& ParameterizedType::_internal_timestamp_tz() const {
  return _internal_has_timestamp_tz()
      ? *kind_.timestamp_tz_
      : reinterpret_cast< ::substrait::Type_TimestampTZ&>(::substrait::_Type_TimestampTZ_default_instance_);
}
inline const ::substrait::Type_TimestampTZ& ParameterizedType::timestamp_tz() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.timestamp_tz)
  return _internal_timestamp_tz();
}
inline ::substrait::Type_TimestampTZ* ParameterizedType::unsafe_arena_release_timestamp_tz() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.timestamp_tz)
  if (_internal_has_timestamp_tz()) {
    clear_has_kind();
    ::substrait::Type_TimestampTZ* temp = kind_.timestamp_tz_;
    kind_.timestamp_tz_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_timestamp_tz(::substrait::Type_TimestampTZ* timestamp_tz) {
  clear_kind();
  if (timestamp_tz) {
    set_has_timestamp_tz();
    kind_.timestamp_tz_ = timestamp_tz;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.timestamp_tz)
}
inline ::substrait::Type_TimestampTZ* ParameterizedType::_internal_mutable_timestamp_tz() {
  if (!_internal_has_timestamp_tz()) {
    clear_kind();
    set_has_timestamp_tz();
    kind_.timestamp_tz_ = CreateMaybeMessage< ::substrait::Type_TimestampTZ >(GetArenaForAllocation());
  }
  return kind_.timestamp_tz_;
}
inline ::substrait::Type_TimestampTZ* ParameterizedType::mutable_timestamp_tz() {
  ::substrait::Type_TimestampTZ* _msg = _internal_mutable_timestamp_tz();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.timestamp_tz)
  return _msg;
}

// .substrait.Type.UUID uuid = 32 [json_name = "uuid"];
inline bool ParameterizedType::_internal_has_uuid() const {
  return kind_case() == kUuid;
}
inline bool ParameterizedType::has_uuid() const {
  return _internal_has_uuid();
}
inline void ParameterizedType::set_has_uuid() {
  _oneof_case_[0] = kUuid;
}
inline ::substrait::Type_UUID* ParameterizedType::release_uuid() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.uuid)
  if (_internal_has_uuid()) {
    clear_has_kind();
      ::substrait::Type_UUID* temp = kind_.uuid_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.uuid_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_UUID& ParameterizedType::_internal_uuid() const {
  return _internal_has_uuid()
      ? *kind_.uuid_
      : reinterpret_cast< ::substrait::Type_UUID&>(::substrait::_Type_UUID_default_instance_);
}
inline const ::substrait::Type_UUID& ParameterizedType::uuid() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.uuid)
  return _internal_uuid();
}
inline ::substrait::Type_UUID* ParameterizedType::unsafe_arena_release_uuid() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.uuid)
  if (_internal_has_uuid()) {
    clear_has_kind();
    ::substrait::Type_UUID* temp = kind_.uuid_;
    kind_.uuid_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_uuid(::substrait::Type_UUID* uuid) {
  clear_kind();
  if (uuid) {
    set_has_uuid();
    kind_.uuid_ = uuid;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.uuid)
}
inline ::substrait::Type_UUID* ParameterizedType::_internal_mutable_uuid() {
  if (!_internal_has_uuid()) {
    clear_kind();
    set_has_uuid();
    kind_.uuid_ = CreateMaybeMessage< ::substrait::Type_UUID >(GetArenaForAllocation());
  }
  return kind_.uuid_;
}
inline ::substrait::Type_UUID* ParameterizedType::mutable_uuid() {
  ::substrait::Type_UUID* _msg = _internal_mutable_uuid();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.uuid)
  return _msg;
}

// .substrait.ParameterizedType.ParameterizedFixedChar fixed_char = 21 [json_name = "fixedChar"];
inline bool ParameterizedType::_internal_has_fixed_char() const {
  return kind_case() == kFixedChar;
}
inline bool ParameterizedType::has_fixed_char() const {
  return _internal_has_fixed_char();
}
inline void ParameterizedType::set_has_fixed_char() {
  _oneof_case_[0] = kFixedChar;
}
inline void ParameterizedType::clear_fixed_char() {
  if (_internal_has_fixed_char()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.fixed_char_;
    }
    clear_has_kind();
  }
}
inline ::substrait::ParameterizedType_ParameterizedFixedChar* ParameterizedType::release_fixed_char() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.fixed_char)
  if (_internal_has_fixed_char()) {
    clear_has_kind();
      ::substrait::ParameterizedType_ParameterizedFixedChar* temp = kind_.fixed_char_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.fixed_char_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::ParameterizedType_ParameterizedFixedChar& ParameterizedType::_internal_fixed_char() const {
  return _internal_has_fixed_char()
      ? *kind_.fixed_char_
      : reinterpret_cast< ::substrait::ParameterizedType_ParameterizedFixedChar&>(::substrait::_ParameterizedType_ParameterizedFixedChar_default_instance_);
}
inline const ::substrait::ParameterizedType_ParameterizedFixedChar& ParameterizedType::fixed_char() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.fixed_char)
  return _internal_fixed_char();
}
inline ::substrait::ParameterizedType_ParameterizedFixedChar* ParameterizedType::unsafe_arena_release_fixed_char() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.fixed_char)
  if (_internal_has_fixed_char()) {
    clear_has_kind();
    ::substrait::ParameterizedType_ParameterizedFixedChar* temp = kind_.fixed_char_;
    kind_.fixed_char_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_fixed_char(::substrait::ParameterizedType_ParameterizedFixedChar* fixed_char) {
  clear_kind();
  if (fixed_char) {
    set_has_fixed_char();
    kind_.fixed_char_ = fixed_char;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.fixed_char)
}
inline ::substrait::ParameterizedType_ParameterizedFixedChar* ParameterizedType::_internal_mutable_fixed_char() {
  if (!_internal_has_fixed_char()) {
    clear_kind();
    set_has_fixed_char();
    kind_.fixed_char_ = CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedFixedChar >(GetArenaForAllocation());
  }
  return kind_.fixed_char_;
}
inline ::substrait::ParameterizedType_ParameterizedFixedChar* ParameterizedType::mutable_fixed_char() {
  ::substrait::ParameterizedType_ParameterizedFixedChar* _msg = _internal_mutable_fixed_char();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.fixed_char)
  return _msg;
}

// .substrait.ParameterizedType.ParameterizedVarChar varchar = 22 [json_name = "varchar"];
inline bool ParameterizedType::_internal_has_varchar() const {
  return kind_case() == kVarchar;
}
inline bool ParameterizedType::has_varchar() const {
  return _internal_has_varchar();
}
inline void ParameterizedType::set_has_varchar() {
  _oneof_case_[0] = kVarchar;
}
inline void ParameterizedType::clear_varchar() {
  if (_internal_has_varchar()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.varchar_;
    }
    clear_has_kind();
  }
}
inline ::substrait::ParameterizedType_ParameterizedVarChar* ParameterizedType::release_varchar() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.varchar)
  if (_internal_has_varchar()) {
    clear_has_kind();
      ::substrait::ParameterizedType_ParameterizedVarChar* temp = kind_.varchar_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.varchar_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::ParameterizedType_ParameterizedVarChar& ParameterizedType::_internal_varchar() const {
  return _internal_has_varchar()
      ? *kind_.varchar_
      : reinterpret_cast< ::substrait::ParameterizedType_ParameterizedVarChar&>(::substrait::_ParameterizedType_ParameterizedVarChar_default_instance_);
}
inline const ::substrait::ParameterizedType_ParameterizedVarChar& ParameterizedType::varchar() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.varchar)
  return _internal_varchar();
}
inline ::substrait::ParameterizedType_ParameterizedVarChar* ParameterizedType::unsafe_arena_release_varchar() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.varchar)
  if (_internal_has_varchar()) {
    clear_has_kind();
    ::substrait::ParameterizedType_ParameterizedVarChar* temp = kind_.varchar_;
    kind_.varchar_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_varchar(::substrait::ParameterizedType_ParameterizedVarChar* varchar) {
  clear_kind();
  if (varchar) {
    set_has_varchar();
    kind_.varchar_ = varchar;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.varchar)
}
inline ::substrait::ParameterizedType_ParameterizedVarChar* ParameterizedType::_internal_mutable_varchar() {
  if (!_internal_has_varchar()) {
    clear_kind();
    set_has_varchar();
    kind_.varchar_ = CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedVarChar >(GetArenaForAllocation());
  }
  return kind_.varchar_;
}
inline ::substrait::ParameterizedType_ParameterizedVarChar* ParameterizedType::mutable_varchar() {
  ::substrait::ParameterizedType_ParameterizedVarChar* _msg = _internal_mutable_varchar();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.varchar)
  return _msg;
}

// .substrait.ParameterizedType.ParameterizedFixedBinary fixed_binary = 23 [json_name = "fixedBinary"];
inline bool ParameterizedType::_internal_has_fixed_binary() const {
  return kind_case() == kFixedBinary;
}
inline bool ParameterizedType::has_fixed_binary() const {
  return _internal_has_fixed_binary();
}
inline void ParameterizedType::set_has_fixed_binary() {
  _oneof_case_[0] = kFixedBinary;
}
inline void ParameterizedType::clear_fixed_binary() {
  if (_internal_has_fixed_binary()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.fixed_binary_;
    }
    clear_has_kind();
  }
}
inline ::substrait::ParameterizedType_ParameterizedFixedBinary* ParameterizedType::release_fixed_binary() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.fixed_binary)
  if (_internal_has_fixed_binary()) {
    clear_has_kind();
      ::substrait::ParameterizedType_ParameterizedFixedBinary* temp = kind_.fixed_binary_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.fixed_binary_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::ParameterizedType_ParameterizedFixedBinary& ParameterizedType::_internal_fixed_binary() const {
  return _internal_has_fixed_binary()
      ? *kind_.fixed_binary_
      : reinterpret_cast< ::substrait::ParameterizedType_ParameterizedFixedBinary&>(::substrait::_ParameterizedType_ParameterizedFixedBinary_default_instance_);
}
inline const ::substrait::ParameterizedType_ParameterizedFixedBinary& ParameterizedType::fixed_binary() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.fixed_binary)
  return _internal_fixed_binary();
}
inline ::substrait::ParameterizedType_ParameterizedFixedBinary* ParameterizedType::unsafe_arena_release_fixed_binary() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.fixed_binary)
  if (_internal_has_fixed_binary()) {
    clear_has_kind();
    ::substrait::ParameterizedType_ParameterizedFixedBinary* temp = kind_.fixed_binary_;
    kind_.fixed_binary_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_fixed_binary(::substrait::ParameterizedType_ParameterizedFixedBinary* fixed_binary) {
  clear_kind();
  if (fixed_binary) {
    set_has_fixed_binary();
    kind_.fixed_binary_ = fixed_binary;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.fixed_binary)
}
inline ::substrait::ParameterizedType_ParameterizedFixedBinary* ParameterizedType::_internal_mutable_fixed_binary() {
  if (!_internal_has_fixed_binary()) {
    clear_kind();
    set_has_fixed_binary();
    kind_.fixed_binary_ = CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedFixedBinary >(GetArenaForAllocation());
  }
  return kind_.fixed_binary_;
}
inline ::substrait::ParameterizedType_ParameterizedFixedBinary* ParameterizedType::mutable_fixed_binary() {
  ::substrait::ParameterizedType_ParameterizedFixedBinary* _msg = _internal_mutable_fixed_binary();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.fixed_binary)
  return _msg;
}

// .substrait.ParameterizedType.ParameterizedDecimal decimal = 24 [json_name = "decimal"];
inline bool ParameterizedType::_internal_has_decimal() const {
  return kind_case() == kDecimal;
}
inline bool ParameterizedType::has_decimal() const {
  return _internal_has_decimal();
}
inline void ParameterizedType::set_has_decimal() {
  _oneof_case_[0] = kDecimal;
}
inline void ParameterizedType::clear_decimal() {
  if (_internal_has_decimal()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.decimal_;
    }
    clear_has_kind();
  }
}
inline ::substrait::ParameterizedType_ParameterizedDecimal* ParameterizedType::release_decimal() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.decimal)
  if (_internal_has_decimal()) {
    clear_has_kind();
      ::substrait::ParameterizedType_ParameterizedDecimal* temp = kind_.decimal_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.decimal_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::ParameterizedType_ParameterizedDecimal& ParameterizedType::_internal_decimal() const {
  return _internal_has_decimal()
      ? *kind_.decimal_
      : reinterpret_cast< ::substrait::ParameterizedType_ParameterizedDecimal&>(::substrait::_ParameterizedType_ParameterizedDecimal_default_instance_);
}
inline const ::substrait::ParameterizedType_ParameterizedDecimal& ParameterizedType::decimal() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.decimal)
  return _internal_decimal();
}
inline ::substrait::ParameterizedType_ParameterizedDecimal* ParameterizedType::unsafe_arena_release_decimal() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.decimal)
  if (_internal_has_decimal()) {
    clear_has_kind();
    ::substrait::ParameterizedType_ParameterizedDecimal* temp = kind_.decimal_;
    kind_.decimal_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_decimal(::substrait::ParameterizedType_ParameterizedDecimal* decimal) {
  clear_kind();
  if (decimal) {
    set_has_decimal();
    kind_.decimal_ = decimal;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.decimal)
}
inline ::substrait::ParameterizedType_ParameterizedDecimal* ParameterizedType::_internal_mutable_decimal() {
  if (!_internal_has_decimal()) {
    clear_kind();
    set_has_decimal();
    kind_.decimal_ = CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedDecimal >(GetArenaForAllocation());
  }
  return kind_.decimal_;
}
inline ::substrait::ParameterizedType_ParameterizedDecimal* ParameterizedType::mutable_decimal() {
  ::substrait::ParameterizedType_ParameterizedDecimal* _msg = _internal_mutable_decimal();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.decimal)
  return _msg;
}

// .substrait.ParameterizedType.ParameterizedStruct struct = 25 [json_name = "struct"];
inline bool ParameterizedType::_internal_has_struct_() const {
  return kind_case() == kStruct;
}
inline bool ParameterizedType::has_struct_() const {
  return _internal_has_struct_();
}
inline void ParameterizedType::set_has_struct_() {
  _oneof_case_[0] = kStruct;
}
inline void ParameterizedType::clear_struct_() {
  if (_internal_has_struct_()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.struct__;
    }
    clear_has_kind();
  }
}
inline ::substrait::ParameterizedType_ParameterizedStruct* ParameterizedType::release_struct_() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.struct)
  if (_internal_has_struct_()) {
    clear_has_kind();
      ::substrait::ParameterizedType_ParameterizedStruct* temp = kind_.struct__;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.struct__ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::ParameterizedType_ParameterizedStruct& ParameterizedType::_internal_struct_() const {
  return _internal_has_struct_()
      ? *kind_.struct__
      : reinterpret_cast< ::substrait::ParameterizedType_ParameterizedStruct&>(::substrait::_ParameterizedType_ParameterizedStruct_default_instance_);
}
inline const ::substrait::ParameterizedType_ParameterizedStruct& ParameterizedType::struct_() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.struct)
  return _internal_struct_();
}
inline ::substrait::ParameterizedType_ParameterizedStruct* ParameterizedType::unsafe_arena_release_struct_() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.struct)
  if (_internal_has_struct_()) {
    clear_has_kind();
    ::substrait::ParameterizedType_ParameterizedStruct* temp = kind_.struct__;
    kind_.struct__ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_struct_(::substrait::ParameterizedType_ParameterizedStruct* struct_) {
  clear_kind();
  if (struct_) {
    set_has_struct_();
    kind_.struct__ = struct_;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.struct)
}
inline ::substrait::ParameterizedType_ParameterizedStruct* ParameterizedType::_internal_mutable_struct_() {
  if (!_internal_has_struct_()) {
    clear_kind();
    set_has_struct_();
    kind_.struct__ = CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedStruct >(GetArenaForAllocation());
  }
  return kind_.struct__;
}
inline ::substrait::ParameterizedType_ParameterizedStruct* ParameterizedType::mutable_struct_() {
  ::substrait::ParameterizedType_ParameterizedStruct* _msg = _internal_mutable_struct_();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.struct)
  return _msg;
}

// .substrait.ParameterizedType.ParameterizedList list = 27 [json_name = "list"];
inline bool ParameterizedType::_internal_has_list() const {
  return kind_case() == kList;
}
inline bool ParameterizedType::has_list() const {
  return _internal_has_list();
}
inline void ParameterizedType::set_has_list() {
  _oneof_case_[0] = kList;
}
inline void ParameterizedType::clear_list() {
  if (_internal_has_list()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.list_;
    }
    clear_has_kind();
  }
}
inline ::substrait::ParameterizedType_ParameterizedList* ParameterizedType::release_list() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.list)
  if (_internal_has_list()) {
    clear_has_kind();
      ::substrait::ParameterizedType_ParameterizedList* temp = kind_.list_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::ParameterizedType_ParameterizedList& ParameterizedType::_internal_list() const {
  return _internal_has_list()
      ? *kind_.list_
      : reinterpret_cast< ::substrait::ParameterizedType_ParameterizedList&>(::substrait::_ParameterizedType_ParameterizedList_default_instance_);
}
inline const ::substrait::ParameterizedType_ParameterizedList& ParameterizedType::list() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.list)
  return _internal_list();
}
inline ::substrait::ParameterizedType_ParameterizedList* ParameterizedType::unsafe_arena_release_list() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.list)
  if (_internal_has_list()) {
    clear_has_kind();
    ::substrait::ParameterizedType_ParameterizedList* temp = kind_.list_;
    kind_.list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_list(::substrait::ParameterizedType_ParameterizedList* list) {
  clear_kind();
  if (list) {
    set_has_list();
    kind_.list_ = list;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.list)
}
inline ::substrait::ParameterizedType_ParameterizedList* ParameterizedType::_internal_mutable_list() {
  if (!_internal_has_list()) {
    clear_kind();
    set_has_list();
    kind_.list_ = CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedList >(GetArenaForAllocation());
  }
  return kind_.list_;
}
inline ::substrait::ParameterizedType_ParameterizedList* ParameterizedType::mutable_list() {
  ::substrait::ParameterizedType_ParameterizedList* _msg = _internal_mutable_list();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.list)
  return _msg;
}

// .substrait.ParameterizedType.ParameterizedMap map = 28 [json_name = "map"];
inline bool ParameterizedType::_internal_has_map() const {
  return kind_case() == kMap;
}
inline bool ParameterizedType::has_map() const {
  return _internal_has_map();
}
inline void ParameterizedType::set_has_map() {
  _oneof_case_[0] = kMap;
}
inline void ParameterizedType::clear_map() {
  if (_internal_has_map()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.map_;
    }
    clear_has_kind();
  }
}
inline ::substrait::ParameterizedType_ParameterizedMap* ParameterizedType::release_map() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.map)
  if (_internal_has_map()) {
    clear_has_kind();
      ::substrait::ParameterizedType_ParameterizedMap* temp = kind_.map_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.map_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::ParameterizedType_ParameterizedMap& ParameterizedType::_internal_map() const {
  return _internal_has_map()
      ? *kind_.map_
      : reinterpret_cast< ::substrait::ParameterizedType_ParameterizedMap&>(::substrait::_ParameterizedType_ParameterizedMap_default_instance_);
}
inline const ::substrait::ParameterizedType_ParameterizedMap& ParameterizedType::map() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.map)
  return _internal_map();
}
inline ::substrait::ParameterizedType_ParameterizedMap* ParameterizedType::unsafe_arena_release_map() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.map)
  if (_internal_has_map()) {
    clear_has_kind();
    ::substrait::ParameterizedType_ParameterizedMap* temp = kind_.map_;
    kind_.map_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_map(::substrait::ParameterizedType_ParameterizedMap* map) {
  clear_kind();
  if (map) {
    set_has_map();
    kind_.map_ = map;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.map)
}
inline ::substrait::ParameterizedType_ParameterizedMap* ParameterizedType::_internal_mutable_map() {
  if (!_internal_has_map()) {
    clear_kind();
    set_has_map();
    kind_.map_ = CreateMaybeMessage< ::substrait::ParameterizedType_ParameterizedMap >(GetArenaForAllocation());
  }
  return kind_.map_;
}
inline ::substrait::ParameterizedType_ParameterizedMap* ParameterizedType::mutable_map() {
  ::substrait::ParameterizedType_ParameterizedMap* _msg = _internal_mutable_map();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.map)
  return _msg;
}

// uint32 user_defined_pointer = 31 [json_name = "userDefinedPointer"];
inline bool ParameterizedType::_internal_has_user_defined_pointer() const {
  return kind_case() == kUserDefinedPointer;
}
inline bool ParameterizedType::has_user_defined_pointer() const {
  return _internal_has_user_defined_pointer();
}
inline void ParameterizedType::set_has_user_defined_pointer() {
  _oneof_case_[0] = kUserDefinedPointer;
}
inline void ParameterizedType::clear_user_defined_pointer() {
  if (_internal_has_user_defined_pointer()) {
    kind_.user_defined_pointer_ = 0u;
    clear_has_kind();
  }
}
inline uint32_t ParameterizedType::_internal_user_defined_pointer() const {
  if (_internal_has_user_defined_pointer()) {
    return kind_.user_defined_pointer_;
  }
  return 0u;
}
inline void ParameterizedType::_internal_set_user_defined_pointer(uint32_t value) {
  if (!_internal_has_user_defined_pointer()) {
    clear_kind();
    set_has_user_defined_pointer();
  }
  kind_.user_defined_pointer_ = value;
}
inline uint32_t ParameterizedType::user_defined_pointer() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.user_defined_pointer)
  return _internal_user_defined_pointer();
}
inline void ParameterizedType::set_user_defined_pointer(uint32_t value) {
  _internal_set_user_defined_pointer(value);
  // @@protoc_insertion_point(field_set:substrait.ParameterizedType.user_defined_pointer)
}

// .substrait.ParameterizedType.TypeParameter type_parameter = 33 [json_name = "typeParameter"];
inline bool ParameterizedType::_internal_has_type_parameter() const {
  return kind_case() == kTypeParameter;
}
inline bool ParameterizedType::has_type_parameter() const {
  return _internal_has_type_parameter();
}
inline void ParameterizedType::set_has_type_parameter() {
  _oneof_case_[0] = kTypeParameter;
}
inline void ParameterizedType::clear_type_parameter() {
  if (_internal_has_type_parameter()) {
    if (GetArenaForAllocation() == nullptr) {
      delete kind_.type_parameter_;
    }
    clear_has_kind();
  }
}
inline ::substrait::ParameterizedType_TypeParameter* ParameterizedType::release_type_parameter() {
  // @@protoc_insertion_point(field_release:substrait.ParameterizedType.type_parameter)
  if (_internal_has_type_parameter()) {
    clear_has_kind();
      ::substrait::ParameterizedType_TypeParameter* temp = kind_.type_parameter_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    kind_.type_parameter_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::ParameterizedType_TypeParameter& ParameterizedType::_internal_type_parameter() const {
  return _internal_has_type_parameter()
      ? *kind_.type_parameter_
      : reinterpret_cast< ::substrait::ParameterizedType_TypeParameter&>(::substrait::_ParameterizedType_TypeParameter_default_instance_);
}
inline const ::substrait::ParameterizedType_TypeParameter& ParameterizedType::type_parameter() const {
  // @@protoc_insertion_point(field_get:substrait.ParameterizedType.type_parameter)
  return _internal_type_parameter();
}
inline ::substrait::ParameterizedType_TypeParameter* ParameterizedType::unsafe_arena_release_type_parameter() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.ParameterizedType.type_parameter)
  if (_internal_has_type_parameter()) {
    clear_has_kind();
    ::substrait::ParameterizedType_TypeParameter* temp = kind_.type_parameter_;
    kind_.type_parameter_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ParameterizedType::unsafe_arena_set_allocated_type_parameter(::substrait::ParameterizedType_TypeParameter* type_parameter) {
  clear_kind();
  if (type_parameter) {
    set_has_type_parameter();
    kind_.type_parameter_ = type_parameter;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.ParameterizedType.type_parameter)
}
inline ::substrait::ParameterizedType_TypeParameter* ParameterizedType::_internal_mutable_type_parameter() {
  if (!_internal_has_type_parameter()) {
    clear_kind();
    set_has_type_parameter();
    kind_.type_parameter_ = CreateMaybeMessage< ::substrait::ParameterizedType_TypeParameter >(GetArenaForAllocation());
  }
  return kind_.type_parameter_;
}
inline ::substrait::ParameterizedType_TypeParameter* ParameterizedType::mutable_type_parameter() {
  ::substrait::ParameterizedType_TypeParameter* _msg = _internal_mutable_type_parameter();
  // @@protoc_insertion_point(field_mutable:substrait.ParameterizedType.type_parameter)
  return _msg;
}

inline bool ParameterizedType::has_kind() const {
  return kind_case() != KIND_NOT_SET;
}
inline void ParameterizedType::clear_has_kind() {
  _oneof_case_[0] = KIND_NOT_SET;
}
inline ParameterizedType::KindCase ParameterizedType::kind_case() const {
  return ParameterizedType::KindCase(_oneof_case_[0]);
}
#ifdef __GNUC__
  #pragma GCC diagnostic pop
#endif  // __GNUC__
// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------


// @@protoc_insertion_point(namespace_scope)

}  // namespace substrait

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_substrait_2fparameterized_5ftypes_2eproto
