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

#ifndef substrait_2ftype_2eproto_2epb_2eh
#define substrait_2ftype_2eproto_2epb_2eh

#include <limits>
#include <string>
#include <type_traits>
#include <utility>

// clang-format off
#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 7035001
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.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/message_lite.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
#include "google/protobuf/empty.pb.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"

#define PROTOBUF_INTERNAL_EXPORT_substrait_2ftype_2eproto

namespace google {
namespace protobuf {
namespace internal {
template <typename T>
::absl::string_view GetAnyMessageName();
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct TableStruct_substrait_2ftype_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
extern const ::google::protobuf::internal::DescriptorTable descriptor_table_substrait_2ftype_2eproto;
}  // extern "C"
namespace substrait {
enum Type_Nullability : int;
extern const uint32_t Type_Nullability_internal_data_[];
class NamedStruct;
struct NamedStructGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern NamedStructGlobalsTypeInternal NamedStruct_globals_;
extern const ::google::protobuf::internal::ClassDataFull NamedStruct_class_data_;
#else
extern const NamedStructGlobalsTypeInternal NamedStruct_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type;
struct TypeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TypeGlobalsTypeInternal Type_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_class_data_;
#else
extern const TypeGlobalsTypeInternal Type_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_Binary;
struct Type_BinaryGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_BinaryGlobalsTypeInternal Type_Binary_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_Binary_class_data_;
#else
extern const Type_BinaryGlobalsTypeInternal Type_Binary_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_Boolean;
struct Type_BooleanGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_BooleanGlobalsTypeInternal Type_Boolean_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_Boolean_class_data_;
#else
extern const Type_BooleanGlobalsTypeInternal Type_Boolean_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_Date;
struct Type_DateGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_DateGlobalsTypeInternal Type_Date_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_Date_class_data_;
#else
extern const Type_DateGlobalsTypeInternal Type_Date_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_Decimal;
struct Type_DecimalGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_DecimalGlobalsTypeInternal Type_Decimal_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_Decimal_class_data_;
#else
extern const Type_DecimalGlobalsTypeInternal Type_Decimal_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_FP32;
struct Type_FP32GlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_FP32GlobalsTypeInternal Type_FP32_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_FP32_class_data_;
#else
extern const Type_FP32GlobalsTypeInternal Type_FP32_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_FP64;
struct Type_FP64GlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_FP64GlobalsTypeInternal Type_FP64_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_FP64_class_data_;
#else
extern const Type_FP64GlobalsTypeInternal Type_FP64_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_FixedBinary;
struct Type_FixedBinaryGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_FixedBinaryGlobalsTypeInternal Type_FixedBinary_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_FixedBinary_class_data_;
#else
extern const Type_FixedBinaryGlobalsTypeInternal Type_FixedBinary_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_FixedChar;
struct Type_FixedCharGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_FixedCharGlobalsTypeInternal Type_FixedChar_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_FixedChar_class_data_;
#else
extern const Type_FixedCharGlobalsTypeInternal Type_FixedChar_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_I16;
struct Type_I16GlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_I16GlobalsTypeInternal Type_I16_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_I16_class_data_;
#else
extern const Type_I16GlobalsTypeInternal Type_I16_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_I32;
struct Type_I32GlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_I32GlobalsTypeInternal Type_I32_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_I32_class_data_;
#else
extern const Type_I32GlobalsTypeInternal Type_I32_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_I64;
struct Type_I64GlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_I64GlobalsTypeInternal Type_I64_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_I64_class_data_;
#else
extern const Type_I64GlobalsTypeInternal Type_I64_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_I8;
struct Type_I8GlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_I8GlobalsTypeInternal Type_I8_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_I8_class_data_;
#else
extern const Type_I8GlobalsTypeInternal Type_I8_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_IntervalDay;
struct Type_IntervalDayGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_IntervalDayGlobalsTypeInternal Type_IntervalDay_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_IntervalDay_class_data_;
#else
extern const Type_IntervalDayGlobalsTypeInternal Type_IntervalDay_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_IntervalYear;
struct Type_IntervalYearGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_IntervalYearGlobalsTypeInternal Type_IntervalYear_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_IntervalYear_class_data_;
#else
extern const Type_IntervalYearGlobalsTypeInternal Type_IntervalYear_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_List;
struct Type_ListGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_ListGlobalsTypeInternal Type_List_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_List_class_data_;
#else
extern const Type_ListGlobalsTypeInternal Type_List_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_Map;
struct Type_MapGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_MapGlobalsTypeInternal Type_Map_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_Map_class_data_;
#else
extern const Type_MapGlobalsTypeInternal Type_Map_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_Parameter;
struct Type_ParameterGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_ParameterGlobalsTypeInternal Type_Parameter_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_Parameter_class_data_;
#else
extern const Type_ParameterGlobalsTypeInternal Type_Parameter_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_PrecisionTimestamp;
struct Type_PrecisionTimestampGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_PrecisionTimestampGlobalsTypeInternal Type_PrecisionTimestamp_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_PrecisionTimestamp_class_data_;
#else
extern const Type_PrecisionTimestampGlobalsTypeInternal Type_PrecisionTimestamp_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_PrecisionTimestampTZ;
struct Type_PrecisionTimestampTZGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_PrecisionTimestampTZGlobalsTypeInternal Type_PrecisionTimestampTZ_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_PrecisionTimestampTZ_class_data_;
#else
extern const Type_PrecisionTimestampTZGlobalsTypeInternal Type_PrecisionTimestampTZ_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_String;
struct Type_StringGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_StringGlobalsTypeInternal Type_String_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_String_class_data_;
#else
extern const Type_StringGlobalsTypeInternal Type_String_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_Struct;
struct Type_StructGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_StructGlobalsTypeInternal Type_Struct_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_Struct_class_data_;
#else
extern const Type_StructGlobalsTypeInternal Type_Struct_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_Time;
struct Type_TimeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_TimeGlobalsTypeInternal Type_Time_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_Time_class_data_;
#else
extern const Type_TimeGlobalsTypeInternal Type_Time_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_Timestamp;
struct Type_TimestampGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_TimestampGlobalsTypeInternal Type_Timestamp_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_Timestamp_class_data_;
#else
extern const Type_TimestampGlobalsTypeInternal Type_Timestamp_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_TimestampTZ;
struct Type_TimestampTZGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_TimestampTZGlobalsTypeInternal Type_TimestampTZ_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_TimestampTZ_class_data_;
#else
extern const Type_TimestampTZGlobalsTypeInternal Type_TimestampTZ_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_UUID;
struct Type_UUIDGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_UUIDGlobalsTypeInternal Type_UUID_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_UUID_class_data_;
#else
extern const Type_UUIDGlobalsTypeInternal Type_UUID_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_UserDefined;
struct Type_UserDefinedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_UserDefinedGlobalsTypeInternal Type_UserDefined_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_UserDefined_class_data_;
#else
extern const Type_UserDefinedGlobalsTypeInternal Type_UserDefined_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class Type_VarChar;
struct Type_VarCharGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern Type_VarCharGlobalsTypeInternal Type_VarChar_globals_;
extern const ::google::protobuf::internal::ClassDataFull Type_VarChar_class_data_;
#else
extern const Type_VarCharGlobalsTypeInternal Type_VarChar_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
}  // namespace substrait
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::substrait::Type_Nullability_internal_data_>
    internal::EnumTraitsImpl::value<::substrait::Type_Nullability>;
}  // namespace protobuf
}  // namespace google

namespace substrait {
enum Type_Nullability : int {
  Type_Nullability_NULLABILITY_UNSPECIFIED = 0,
  Type_Nullability_NULLABILITY_NULLABLE = 1,
  Type_Nullability_NULLABILITY_REQUIRED = 2,
  Type_Nullability_Type_Nullability_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  Type_Nullability_Type_Nullability_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t Type_Nullability_internal_data_[];
inline constexpr Type_Nullability Type_Nullability_Nullability_MIN =
    static_cast<Type_Nullability>(0);
inline constexpr Type_Nullability Type_Nullability_Nullability_MAX =
    static_cast<Type_Nullability>(2);
[[nodiscard]] inline bool Type_Nullability_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int Type_Nullability_Nullability_ARRAYSIZE = 2 + 1;
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
Type_Nullability_descriptor();
[[nodiscard]] inline auto ProtobufInternalGetEnumDescriptor(Type_Nullability) {
  return Type_Nullability_descriptor();
}
template <typename T>
[[nodiscard]] const ::std::string& Type_Nullability_Name(T value) {
  static_assert(::std::is_same<T, Type_Nullability>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Nullability_Name().");
  return Type_Nullability_Name(static_cast<Type_Nullability>(value));
}
template <>
[[nodiscard]] inline const ::std::string& Type_Nullability_Name(Type_Nullability value) {
  return ::google::protobuf::internal::NameOfDenseEnum<Type_Nullability_descriptor, 0, 2>(
      static_cast<int>(value));
}
[[nodiscard]] inline bool Type_Nullability_Parse(
    ::absl::string_view name, Type_Nullability* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<Type_Nullability>(Type_Nullability_descriptor(), name,
                                           value);
}
using ::google::protobuf::internal::generated_enum::AbslParseFlag;
using ::google::protobuf::internal::generated_enum::AbslUnparseFlag;

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


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

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_VarChar final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.VarChar) */ {
 public:
  inline Type_VarChar() : Type_VarChar(nullptr) {}
  ~Type_VarChar() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_VarChar* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_VarChar));
  }
#endif

  template <typename = void>
  explicit constexpr Type_VarChar(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_VarChar(const Type_VarChar& from) : Type_VarChar(nullptr, from) {}
  inline Type_VarChar(Type_VarChar&& from) noexcept : Type_VarChar(nullptr, ::std::move(from)) {}
  inline Type_VarChar& operator=(const Type_VarChar& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_VarChar& operator=(Type_VarChar&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_VarChar& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_VarChar>(&Type_VarChar_globals_);
  }
  static constexpr int kIndexInFileMessages = 17;
  friend void swap(Type_VarChar& a, Type_VarChar& b) { a.Swap(&b); }
  inline void Swap(Type_VarChar* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_VarChar* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_VarChar* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_VarChar>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_VarChar& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_VarChar& from) { Type_VarChar::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_VarChar* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.VarChar"; }

  explicit Type_VarChar(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_VarChar(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_VarChar& from);
  Type_VarChar(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_VarChar&& from) noexcept
      : Type_VarChar(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLengthFieldNumber = 1,
    kTypeVariationReferenceFieldNumber = 2,
    kNullabilityFieldNumber = 3,
  };
  // int32 length = 1;
  void clear_length() ;
  [[nodiscard]] ::int32_t length() const;
  void set_length(::int32_t value);

  private:
  ::int32_t _internal_length() const;
  void _internal_set_length(::int32_t value);

  public:
  // uint32 type_variation_reference = 2;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 3;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.VarChar)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_VarChar& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int32_t length_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_UUID final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.UUID) */ {
 public:
  inline Type_UUID() : Type_UUID(nullptr) {}
  ~Type_UUID() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_UUID* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_UUID));
  }
#endif

  template <typename = void>
  explicit constexpr Type_UUID(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_UUID(const Type_UUID& from) : Type_UUID(nullptr, from) {}
  inline Type_UUID(Type_UUID&& from) noexcept : Type_UUID(nullptr, ::std::move(from)) {}
  inline Type_UUID& operator=(const Type_UUID& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_UUID& operator=(Type_UUID&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_UUID& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_UUID>(&Type_UUID_globals_);
  }
  static constexpr int kIndexInFileMessages = 15;
  friend void swap(Type_UUID& a, Type_UUID& b) { a.Swap(&b); }
  inline void Swap(Type_UUID* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_UUID* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_UUID* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_UUID>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_UUID& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_UUID& from) { Type_UUID::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_UUID* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.UUID"; }

  explicit Type_UUID(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_UUID(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_UUID& from);
  Type_UUID(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_UUID&& from) noexcept
      : Type_UUID(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.UUID)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_UUID& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_TimestampTZ final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.TimestampTZ) */ {
 public:
  inline Type_TimestampTZ() : Type_TimestampTZ(nullptr) {}
  ~Type_TimestampTZ() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_TimestampTZ* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_TimestampTZ));
  }
#endif

  template <typename = void>
  explicit constexpr Type_TimestampTZ(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_TimestampTZ(const Type_TimestampTZ& from) : Type_TimestampTZ(nullptr, from) {}
  inline Type_TimestampTZ(Type_TimestampTZ&& from) noexcept : Type_TimestampTZ(nullptr, ::std::move(from)) {}
  inline Type_TimestampTZ& operator=(const Type_TimestampTZ& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_TimestampTZ& operator=(Type_TimestampTZ&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_TimestampTZ& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_TimestampTZ>(&Type_TimestampTZ_globals_);
  }
  static constexpr int kIndexInFileMessages = 12;
  friend void swap(Type_TimestampTZ& a, Type_TimestampTZ& b) { a.Swap(&b); }
  inline void Swap(Type_TimestampTZ* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_TimestampTZ* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_TimestampTZ* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_TimestampTZ>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_TimestampTZ& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_TimestampTZ& from) { Type_TimestampTZ::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_TimestampTZ* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.TimestampTZ"; }

  explicit Type_TimestampTZ(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_TimestampTZ(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_TimestampTZ& from);
  Type_TimestampTZ(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_TimestampTZ&& from) noexcept
      : Type_TimestampTZ(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.TimestampTZ)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_TimestampTZ& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_Timestamp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.Timestamp) */ {
 public:
  inline Type_Timestamp() : Type_Timestamp(nullptr) {}
  ~Type_Timestamp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_Timestamp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_Timestamp));
  }
#endif

  template <typename = void>
  explicit constexpr Type_Timestamp(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_Timestamp(const Type_Timestamp& from) : Type_Timestamp(nullptr, from) {}
  inline Type_Timestamp(Type_Timestamp&& from) noexcept : Type_Timestamp(nullptr, ::std::move(from)) {}
  inline Type_Timestamp& operator=(const Type_Timestamp& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_Timestamp& operator=(Type_Timestamp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_Timestamp& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_Timestamp>(&Type_Timestamp_globals_);
  }
  static constexpr int kIndexInFileMessages = 9;
  friend void swap(Type_Timestamp& a, Type_Timestamp& b) { a.Swap(&b); }
  inline void Swap(Type_Timestamp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_Timestamp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_Timestamp* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_Timestamp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_Timestamp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_Timestamp& from) { Type_Timestamp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_Timestamp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.Timestamp"; }

  explicit Type_Timestamp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_Timestamp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_Timestamp& from);
  Type_Timestamp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_Timestamp&& from) noexcept
      : Type_Timestamp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.Timestamp)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_Timestamp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_Time final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.Time) */ {
 public:
  inline Type_Time() : Type_Time(nullptr) {}
  ~Type_Time() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_Time* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_Time));
  }
#endif

  template <typename = void>
  explicit constexpr Type_Time(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_Time(const Type_Time& from) : Type_Time(nullptr, from) {}
  inline Type_Time(Type_Time&& from) noexcept : Type_Time(nullptr, ::std::move(from)) {}
  inline Type_Time& operator=(const Type_Time& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_Time& operator=(Type_Time&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_Time& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_Time>(&Type_Time_globals_);
  }
  static constexpr int kIndexInFileMessages = 11;
  friend void swap(Type_Time& a, Type_Time& b) { a.Swap(&b); }
  inline void Swap(Type_Time* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_Time* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_Time* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_Time>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_Time& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_Time& from) { Type_Time::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_Time* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.Time"; }

  explicit Type_Time(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_Time(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_Time& from);
  Type_Time(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_Time&& from) noexcept
      : Type_Time(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.Time)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_Time& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_String final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.String) */ {
 public:
  inline Type_String() : Type_String(nullptr) {}
  ~Type_String() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_String* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_String));
  }
#endif

  template <typename = void>
  explicit constexpr Type_String(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_String(const Type_String& from) : Type_String(nullptr, from) {}
  inline Type_String(Type_String&& from) noexcept : Type_String(nullptr, ::std::move(from)) {}
  inline Type_String& operator=(const Type_String& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_String& operator=(Type_String&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_String& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_String>(&Type_String_globals_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(Type_String& a, Type_String& b) { a.Swap(&b); }
  inline void Swap(Type_String* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_String* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_String* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_String>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_String& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_String& from) { Type_String::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_String* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.String"; }

  explicit Type_String(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_String(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_String& from);
  Type_String(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_String&& from) noexcept
      : Type_String(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.String)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_String& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_PrecisionTimestampTZ final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.PrecisionTimestampTZ) */ {
 public:
  inline Type_PrecisionTimestampTZ() : Type_PrecisionTimestampTZ(nullptr) {}
  ~Type_PrecisionTimestampTZ() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_PrecisionTimestampTZ* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_PrecisionTimestampTZ));
  }
#endif

  template <typename = void>
  explicit constexpr Type_PrecisionTimestampTZ(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_PrecisionTimestampTZ(const Type_PrecisionTimestampTZ& from) : Type_PrecisionTimestampTZ(nullptr, from) {}
  inline Type_PrecisionTimestampTZ(Type_PrecisionTimestampTZ&& from) noexcept : Type_PrecisionTimestampTZ(nullptr, ::std::move(from)) {}
  inline Type_PrecisionTimestampTZ& operator=(const Type_PrecisionTimestampTZ& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_PrecisionTimestampTZ& operator=(Type_PrecisionTimestampTZ&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_PrecisionTimestampTZ& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_PrecisionTimestampTZ>(&Type_PrecisionTimestampTZ_globals_);
  }
  static constexpr int kIndexInFileMessages = 21;
  friend void swap(Type_PrecisionTimestampTZ& a, Type_PrecisionTimestampTZ& b) { a.Swap(&b); }
  inline void Swap(Type_PrecisionTimestampTZ* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_PrecisionTimestampTZ* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_PrecisionTimestampTZ* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_PrecisionTimestampTZ>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_PrecisionTimestampTZ& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_PrecisionTimestampTZ& from) { Type_PrecisionTimestampTZ::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_PrecisionTimestampTZ* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.PrecisionTimestampTZ"; }

  explicit Type_PrecisionTimestampTZ(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_PrecisionTimestampTZ(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_PrecisionTimestampTZ& from);
  Type_PrecisionTimestampTZ(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_PrecisionTimestampTZ&& from) noexcept
      : Type_PrecisionTimestampTZ(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kPrecisionFieldNumber = 1,
    kTypeVariationReferenceFieldNumber = 2,
    kNullabilityFieldNumber = 3,
  };
  // int32 precision = 1;
  void clear_precision() ;
  [[nodiscard]] ::int32_t precision() const;
  void set_precision(::int32_t value);

  private:
  ::int32_t _internal_precision() const;
  void _internal_set_precision(::int32_t value);

  public:
  // uint32 type_variation_reference = 2;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 3;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.PrecisionTimestampTZ)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_PrecisionTimestampTZ& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int32_t precision_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_PrecisionTimestamp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.PrecisionTimestamp) */ {
 public:
  inline Type_PrecisionTimestamp() : Type_PrecisionTimestamp(nullptr) {}
  ~Type_PrecisionTimestamp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_PrecisionTimestamp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_PrecisionTimestamp));
  }
#endif

  template <typename = void>
  explicit constexpr Type_PrecisionTimestamp(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_PrecisionTimestamp(const Type_PrecisionTimestamp& from) : Type_PrecisionTimestamp(nullptr, from) {}
  inline Type_PrecisionTimestamp(Type_PrecisionTimestamp&& from) noexcept : Type_PrecisionTimestamp(nullptr, ::std::move(from)) {}
  inline Type_PrecisionTimestamp& operator=(const Type_PrecisionTimestamp& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_PrecisionTimestamp& operator=(Type_PrecisionTimestamp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_PrecisionTimestamp& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_PrecisionTimestamp>(&Type_PrecisionTimestamp_globals_);
  }
  static constexpr int kIndexInFileMessages = 20;
  friend void swap(Type_PrecisionTimestamp& a, Type_PrecisionTimestamp& b) { a.Swap(&b); }
  inline void Swap(Type_PrecisionTimestamp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_PrecisionTimestamp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_PrecisionTimestamp* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_PrecisionTimestamp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_PrecisionTimestamp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_PrecisionTimestamp& from) { Type_PrecisionTimestamp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_PrecisionTimestamp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.PrecisionTimestamp"; }

  explicit Type_PrecisionTimestamp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_PrecisionTimestamp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_PrecisionTimestamp& from);
  Type_PrecisionTimestamp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_PrecisionTimestamp&& from) noexcept
      : Type_PrecisionTimestamp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kPrecisionFieldNumber = 1,
    kTypeVariationReferenceFieldNumber = 2,
    kNullabilityFieldNumber = 3,
  };
  // int32 precision = 1;
  void clear_precision() ;
  [[nodiscard]] ::int32_t precision() const;
  void set_precision(::int32_t value);

  private:
  ::int32_t _internal_precision() const;
  void _internal_set_precision(::int32_t value);

  public:
  // uint32 type_variation_reference = 2;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 3;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.PrecisionTimestamp)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_PrecisionTimestamp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int32_t precision_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_IntervalYear final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.IntervalYear) */ {
 public:
  inline Type_IntervalYear() : Type_IntervalYear(nullptr) {}
  ~Type_IntervalYear() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_IntervalYear* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_IntervalYear));
  }
#endif

  template <typename = void>
  explicit constexpr Type_IntervalYear(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_IntervalYear(const Type_IntervalYear& from) : Type_IntervalYear(nullptr, from) {}
  inline Type_IntervalYear(Type_IntervalYear&& from) noexcept : Type_IntervalYear(nullptr, ::std::move(from)) {}
  inline Type_IntervalYear& operator=(const Type_IntervalYear& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_IntervalYear& operator=(Type_IntervalYear&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_IntervalYear& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_IntervalYear>(&Type_IntervalYear_globals_);
  }
  static constexpr int kIndexInFileMessages = 13;
  friend void swap(Type_IntervalYear& a, Type_IntervalYear& b) { a.Swap(&b); }
  inline void Swap(Type_IntervalYear* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_IntervalYear* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_IntervalYear* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_IntervalYear>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_IntervalYear& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_IntervalYear& from) { Type_IntervalYear::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_IntervalYear* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.IntervalYear"; }

  explicit Type_IntervalYear(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_IntervalYear(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_IntervalYear& from);
  Type_IntervalYear(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_IntervalYear&& from) noexcept
      : Type_IntervalYear(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.IntervalYear)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_IntervalYear& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_IntervalDay final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.IntervalDay) */ {
 public:
  inline Type_IntervalDay() : Type_IntervalDay(nullptr) {}
  ~Type_IntervalDay() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_IntervalDay* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_IntervalDay));
  }
#endif

  template <typename = void>
  explicit constexpr Type_IntervalDay(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_IntervalDay(const Type_IntervalDay& from) : Type_IntervalDay(nullptr, from) {}
  inline Type_IntervalDay(Type_IntervalDay&& from) noexcept : Type_IntervalDay(nullptr, ::std::move(from)) {}
  inline Type_IntervalDay& operator=(const Type_IntervalDay& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_IntervalDay& operator=(Type_IntervalDay&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_IntervalDay& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_IntervalDay>(&Type_IntervalDay_globals_);
  }
  static constexpr int kIndexInFileMessages = 14;
  friend void swap(Type_IntervalDay& a, Type_IntervalDay& b) { a.Swap(&b); }
  inline void Swap(Type_IntervalDay* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_IntervalDay* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_IntervalDay* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_IntervalDay>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_IntervalDay& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_IntervalDay& from) { Type_IntervalDay::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_IntervalDay* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.IntervalDay"; }

  explicit Type_IntervalDay(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_IntervalDay(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_IntervalDay& from);
  Type_IntervalDay(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_IntervalDay&& from) noexcept
      : Type_IntervalDay(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.IntervalDay)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_IntervalDay& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_I8 final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.I8) */ {
 public:
  inline Type_I8() : Type_I8(nullptr) {}
  ~Type_I8() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_I8* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_I8));
  }
#endif

  template <typename = void>
  explicit constexpr Type_I8(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_I8(const Type_I8& from) : Type_I8(nullptr, from) {}
  inline Type_I8(Type_I8&& from) noexcept : Type_I8(nullptr, ::std::move(from)) {}
  inline Type_I8& operator=(const Type_I8& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_I8& operator=(Type_I8&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_I8& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_I8>(&Type_I8_globals_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(Type_I8& a, Type_I8& b) { a.Swap(&b); }
  inline void Swap(Type_I8* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_I8* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_I8* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_I8>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_I8& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_I8& from) { Type_I8::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_I8* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.I8"; }

  explicit Type_I8(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_I8(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_I8& from);
  Type_I8(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_I8&& from) noexcept
      : Type_I8(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.I8)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_I8& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_I64 final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.I64) */ {
 public:
  inline Type_I64() : Type_I64(nullptr) {}
  ~Type_I64() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_I64* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_I64));
  }
#endif

  template <typename = void>
  explicit constexpr Type_I64(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_I64(const Type_I64& from) : Type_I64(nullptr, from) {}
  inline Type_I64(Type_I64&& from) noexcept : Type_I64(nullptr, ::std::move(from)) {}
  inline Type_I64& operator=(const Type_I64& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_I64& operator=(Type_I64&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_I64& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_I64>(&Type_I64_globals_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(Type_I64& a, Type_I64& b) { a.Swap(&b); }
  inline void Swap(Type_I64* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_I64* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_I64* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_I64>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_I64& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_I64& from) { Type_I64::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_I64* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.I64"; }

  explicit Type_I64(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_I64(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_I64& from);
  Type_I64(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_I64&& from) noexcept
      : Type_I64(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.I64)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_I64& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_I32 final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.I32) */ {
 public:
  inline Type_I32() : Type_I32(nullptr) {}
  ~Type_I32() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_I32* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_I32));
  }
#endif

  template <typename = void>
  explicit constexpr Type_I32(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_I32(const Type_I32& from) : Type_I32(nullptr, from) {}
  inline Type_I32(Type_I32&& from) noexcept : Type_I32(nullptr, ::std::move(from)) {}
  inline Type_I32& operator=(const Type_I32& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_I32& operator=(Type_I32&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_I32& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_I32>(&Type_I32_globals_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(Type_I32& a, Type_I32& b) { a.Swap(&b); }
  inline void Swap(Type_I32* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_I32* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_I32* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_I32>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_I32& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_I32& from) { Type_I32::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_I32* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.I32"; }

  explicit Type_I32(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_I32(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_I32& from);
  Type_I32(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_I32&& from) noexcept
      : Type_I32(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.I32)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_I32& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_I16 final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.I16) */ {
 public:
  inline Type_I16() : Type_I16(nullptr) {}
  ~Type_I16() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_I16* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_I16));
  }
#endif

  template <typename = void>
  explicit constexpr Type_I16(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_I16(const Type_I16& from) : Type_I16(nullptr, from) {}
  inline Type_I16(Type_I16&& from) noexcept : Type_I16(nullptr, ::std::move(from)) {}
  inline Type_I16& operator=(const Type_I16& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_I16& operator=(Type_I16&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_I16& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_I16>(&Type_I16_globals_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(Type_I16& a, Type_I16& b) { a.Swap(&b); }
  inline void Swap(Type_I16* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_I16* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_I16* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_I16>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_I16& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_I16& from) { Type_I16::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_I16* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.I16"; }

  explicit Type_I16(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_I16(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_I16& from);
  Type_I16(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_I16&& from) noexcept
      : Type_I16(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.I16)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_I16& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_FixedChar final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.FixedChar) */ {
 public:
  inline Type_FixedChar() : Type_FixedChar(nullptr) {}
  ~Type_FixedChar() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_FixedChar* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_FixedChar));
  }
#endif

  template <typename = void>
  explicit constexpr Type_FixedChar(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_FixedChar(const Type_FixedChar& from) : Type_FixedChar(nullptr, from) {}
  inline Type_FixedChar(Type_FixedChar&& from) noexcept : Type_FixedChar(nullptr, ::std::move(from)) {}
  inline Type_FixedChar& operator=(const Type_FixedChar& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_FixedChar& operator=(Type_FixedChar&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_FixedChar& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_FixedChar>(&Type_FixedChar_globals_);
  }
  static constexpr int kIndexInFileMessages = 16;
  friend void swap(Type_FixedChar& a, Type_FixedChar& b) { a.Swap(&b); }
  inline void Swap(Type_FixedChar* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_FixedChar* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_FixedChar* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_FixedChar>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_FixedChar& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_FixedChar& from) { Type_FixedChar::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_FixedChar* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.FixedChar"; }

  explicit Type_FixedChar(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_FixedChar(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_FixedChar& from);
  Type_FixedChar(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_FixedChar&& from) noexcept
      : Type_FixedChar(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLengthFieldNumber = 1,
    kTypeVariationReferenceFieldNumber = 2,
    kNullabilityFieldNumber = 3,
  };
  // int32 length = 1;
  void clear_length() ;
  [[nodiscard]] ::int32_t length() const;
  void set_length(::int32_t value);

  private:
  ::int32_t _internal_length() const;
  void _internal_set_length(::int32_t value);

  public:
  // uint32 type_variation_reference = 2;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 3;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.FixedChar)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_FixedChar& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int32_t length_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_FixedBinary final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.FixedBinary) */ {
 public:
  inline Type_FixedBinary() : Type_FixedBinary(nullptr) {}
  ~Type_FixedBinary() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_FixedBinary* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_FixedBinary));
  }
#endif

  template <typename = void>
  explicit constexpr Type_FixedBinary(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_FixedBinary(const Type_FixedBinary& from) : Type_FixedBinary(nullptr, from) {}
  inline Type_FixedBinary(Type_FixedBinary&& from) noexcept : Type_FixedBinary(nullptr, ::std::move(from)) {}
  inline Type_FixedBinary& operator=(const Type_FixedBinary& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_FixedBinary& operator=(Type_FixedBinary&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_FixedBinary& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_FixedBinary>(&Type_FixedBinary_globals_);
  }
  static constexpr int kIndexInFileMessages = 18;
  friend void swap(Type_FixedBinary& a, Type_FixedBinary& b) { a.Swap(&b); }
  inline void Swap(Type_FixedBinary* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_FixedBinary* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_FixedBinary* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_FixedBinary>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_FixedBinary& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_FixedBinary& from) { Type_FixedBinary::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_FixedBinary* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.FixedBinary"; }

  explicit Type_FixedBinary(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_FixedBinary(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_FixedBinary& from);
  Type_FixedBinary(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_FixedBinary&& from) noexcept
      : Type_FixedBinary(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLengthFieldNumber = 1,
    kTypeVariationReferenceFieldNumber = 2,
    kNullabilityFieldNumber = 3,
  };
  // int32 length = 1;
  void clear_length() ;
  [[nodiscard]] ::int32_t length() const;
  void set_length(::int32_t value);

  private:
  ::int32_t _internal_length() const;
  void _internal_set_length(::int32_t value);

  public:
  // uint32 type_variation_reference = 2;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 3;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.FixedBinary)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_FixedBinary& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int32_t length_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_FP64 final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.FP64) */ {
 public:
  inline Type_FP64() : Type_FP64(nullptr) {}
  ~Type_FP64() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_FP64* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_FP64));
  }
#endif

  template <typename = void>
  explicit constexpr Type_FP64(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_FP64(const Type_FP64& from) : Type_FP64(nullptr, from) {}
  inline Type_FP64(Type_FP64&& from) noexcept : Type_FP64(nullptr, ::std::move(from)) {}
  inline Type_FP64& operator=(const Type_FP64& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_FP64& operator=(Type_FP64&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_FP64& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_FP64>(&Type_FP64_globals_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(Type_FP64& a, Type_FP64& b) { a.Swap(&b); }
  inline void Swap(Type_FP64* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_FP64* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_FP64* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_FP64>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_FP64& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_FP64& from) { Type_FP64::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_FP64* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.FP64"; }

  explicit Type_FP64(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_FP64(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_FP64& from);
  Type_FP64(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_FP64&& from) noexcept
      : Type_FP64(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.FP64)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_FP64& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_FP32 final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.FP32) */ {
 public:
  inline Type_FP32() : Type_FP32(nullptr) {}
  ~Type_FP32() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_FP32* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_FP32));
  }
#endif

  template <typename = void>
  explicit constexpr Type_FP32(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_FP32(const Type_FP32& from) : Type_FP32(nullptr, from) {}
  inline Type_FP32(Type_FP32&& from) noexcept : Type_FP32(nullptr, ::std::move(from)) {}
  inline Type_FP32& operator=(const Type_FP32& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_FP32& operator=(Type_FP32&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_FP32& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_FP32>(&Type_FP32_globals_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(Type_FP32& a, Type_FP32& b) { a.Swap(&b); }
  inline void Swap(Type_FP32* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_FP32* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_FP32* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_FP32>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_FP32& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_FP32& from) { Type_FP32::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_FP32* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.FP32"; }

  explicit Type_FP32(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_FP32(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_FP32& from);
  Type_FP32(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_FP32&& from) noexcept
      : Type_FP32(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.FP32)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_FP32& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_Decimal final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.Decimal) */ {
 public:
  inline Type_Decimal() : Type_Decimal(nullptr) {}
  ~Type_Decimal() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_Decimal* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_Decimal));
  }
#endif

  template <typename = void>
  explicit constexpr Type_Decimal(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_Decimal(const Type_Decimal& from) : Type_Decimal(nullptr, from) {}
  inline Type_Decimal(Type_Decimal&& from) noexcept : Type_Decimal(nullptr, ::std::move(from)) {}
  inline Type_Decimal& operator=(const Type_Decimal& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_Decimal& operator=(Type_Decimal&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_Decimal& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_Decimal>(&Type_Decimal_globals_);
  }
  static constexpr int kIndexInFileMessages = 19;
  friend void swap(Type_Decimal& a, Type_Decimal& b) { a.Swap(&b); }
  inline void Swap(Type_Decimal* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_Decimal* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_Decimal* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_Decimal>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_Decimal& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_Decimal& from) { Type_Decimal::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_Decimal* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.Decimal"; }

  explicit Type_Decimal(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_Decimal(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_Decimal& from);
  Type_Decimal(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_Decimal&& from) noexcept
      : Type_Decimal(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kScaleFieldNumber = 1,
    kPrecisionFieldNumber = 2,
    kTypeVariationReferenceFieldNumber = 3,
    kNullabilityFieldNumber = 4,
  };
  // int32 scale = 1;
  void clear_scale() ;
  [[nodiscard]] ::int32_t scale() const;
  void set_scale(::int32_t value);

  private:
  ::int32_t _internal_scale() const;
  void _internal_set_scale(::int32_t value);

  public:
  // int32 precision = 2;
  void clear_precision() ;
  [[nodiscard]] ::int32_t precision() const;
  void set_precision(::int32_t value);

  private:
  ::int32_t _internal_precision() const;
  void _internal_set_precision(::int32_t value);

  public:
  // uint32 type_variation_reference = 3;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 4;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.Decimal)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_Decimal& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int32_t scale_;
    ::int32_t precision_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_Date final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.Date) */ {
 public:
  inline Type_Date() : Type_Date(nullptr) {}
  ~Type_Date() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_Date* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_Date));
  }
#endif

  template <typename = void>
  explicit constexpr Type_Date(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_Date(const Type_Date& from) : Type_Date(nullptr, from) {}
  inline Type_Date(Type_Date&& from) noexcept : Type_Date(nullptr, ::std::move(from)) {}
  inline Type_Date& operator=(const Type_Date& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_Date& operator=(Type_Date&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_Date& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_Date>(&Type_Date_globals_);
  }
  static constexpr int kIndexInFileMessages = 10;
  friend void swap(Type_Date& a, Type_Date& b) { a.Swap(&b); }
  inline void Swap(Type_Date* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_Date* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_Date* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_Date>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_Date& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_Date& from) { Type_Date::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_Date* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.Date"; }

  explicit Type_Date(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_Date(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_Date& from);
  Type_Date(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_Date&& from) noexcept
      : Type_Date(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.Date)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_Date& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_Boolean final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.Boolean) */ {
 public:
  inline Type_Boolean() : Type_Boolean(nullptr) {}
  ~Type_Boolean() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_Boolean* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_Boolean));
  }
#endif

  template <typename = void>
  explicit constexpr Type_Boolean(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_Boolean(const Type_Boolean& from) : Type_Boolean(nullptr, from) {}
  inline Type_Boolean(Type_Boolean&& from) noexcept : Type_Boolean(nullptr, ::std::move(from)) {}
  inline Type_Boolean& operator=(const Type_Boolean& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_Boolean& operator=(Type_Boolean&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_Boolean& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_Boolean>(&Type_Boolean_globals_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(Type_Boolean& a, Type_Boolean& b) { a.Swap(&b); }
  inline void Swap(Type_Boolean* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_Boolean* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_Boolean* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_Boolean>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_Boolean& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_Boolean& from) { Type_Boolean::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_Boolean* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.Boolean"; }

  explicit Type_Boolean(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_Boolean(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_Boolean& from);
  Type_Boolean(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_Boolean&& from) noexcept
      : Type_Boolean(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.Boolean)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_Boolean& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_Binary final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.Binary) */ {
 public:
  inline Type_Binary() : Type_Binary(nullptr) {}
  ~Type_Binary() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_Binary* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_Binary));
  }
#endif

  template <typename = void>
  explicit constexpr Type_Binary(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_Binary(const Type_Binary& from) : Type_Binary(nullptr, from) {}
  inline Type_Binary(Type_Binary&& from) noexcept : Type_Binary(nullptr, ::std::move(from)) {}
  inline Type_Binary& operator=(const Type_Binary& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_Binary& operator=(Type_Binary&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_Binary& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_Binary>(&Type_Binary_globals_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(Type_Binary& a, Type_Binary& b) { a.Swap(&b); }
  inline void Swap(Type_Binary* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_Binary* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_Binary* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_Binary>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_Binary& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_Binary& from) { Type_Binary::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_Binary* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.Binary"; }

  explicit Type_Binary(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_Binary(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_Binary& from);
  Type_Binary(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_Binary&& from) noexcept
      : Type_Binary(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeVariationReferenceFieldNumber = 1,
    kNullabilityFieldNumber = 2,
  };
  // uint32 type_variation_reference = 1;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 2;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.Binary)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_Binary& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type) */ {
 public:
  inline Type() : Type(nullptr) {}
  ~Type() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type));
  }
#endif

  template <typename = void>
  explicit constexpr Type(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type(const Type& from) : Type(nullptr, from) {}
  inline Type(Type&& from) noexcept : Type(nullptr, ::std::move(from)) {}
  inline Type& operator=(const Type& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type& operator=(Type&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type>(&Type_globals_);
  }
  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,
    kPrecisionTimestamp = 33,
    kPrecisionTimestampTz = 34,
    kStruct = 25,
    kList = 27,
    kMap = 28,
    kUserDefined = 30,
    kUserDefinedTypeReference = 31,
    KIND_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 27;
  friend void swap(Type& a, Type& b) { a.Swap(&b); }
  inline void Swap(Type* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type& from) { Type::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type"; }

  explicit Type(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type& from);
  Type(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type&& from) noexcept
      : Type(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Boolean = Type_Boolean;
  using I8 = Type_I8;
  using I16 = Type_I16;
  using I32 = Type_I32;
  using I64 = Type_I64;
  using FP32 = Type_FP32;
  using FP64 = Type_FP64;
  using String = Type_String;
  using Binary = Type_Binary;
  using Timestamp = Type_Timestamp;
  using Date = Type_Date;
  using Time = Type_Time;
  using TimestampTZ = Type_TimestampTZ;
  using IntervalYear = Type_IntervalYear;
  using IntervalDay = Type_IntervalDay;
  using UUID = Type_UUID;
  using FixedChar = Type_FixedChar;
  using VarChar = Type_VarChar;
  using FixedBinary = Type_FixedBinary;
  using Decimal = Type_Decimal;
  using PrecisionTimestamp = Type_PrecisionTimestamp;
  using PrecisionTimestampTZ = Type_PrecisionTimestampTZ;
  using Struct = Type_Struct;
  using List = Type_List;
  using Map = Type_Map;
  using UserDefined = Type_UserDefined;
  using Parameter = Type_Parameter;
  using Nullability = Type_Nullability;
  static constexpr Nullability NULLABILITY_UNSPECIFIED = Type_Nullability_NULLABILITY_UNSPECIFIED;
  static constexpr Nullability NULLABILITY_NULLABLE = Type_Nullability_NULLABILITY_NULLABLE;
  static constexpr Nullability NULLABILITY_REQUIRED = Type_Nullability_NULLABILITY_REQUIRED;
  [[nodiscard]] static inline bool Nullability_IsValid(int value) {
    return Type_Nullability_IsValid(value);
  }
  static constexpr Nullability Nullability_MIN = Type_Nullability_Nullability_MIN;
  static constexpr Nullability Nullability_MAX = Type_Nullability_Nullability_MAX;
  static constexpr int Nullability_ARRAYSIZE = Type_Nullability_Nullability_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Nullability_descriptor() {
    return Type_Nullability_descriptor();
  }
  template <typename T>
  [[nodiscard]] static inline const ::std::string& Nullability_Name(T value) {
    return Type_Nullability_Name(value);
  }
  [[nodiscard]] static inline bool Nullability_Parse(
      ::absl::string_view name, Nullability* PROTOBUF_NONNULL value) {
    return Type_Nullability_Parse(name, value);
  }

  // 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,
    kPrecisionTimestampFieldNumber = 33,
    kPrecisionTimestampTzFieldNumber = 34,
    kStructFieldNumber = 25,
    kListFieldNumber = 27,
    kMapFieldNumber = 28,
    kUserDefinedFieldNumber = 30,
    kUserDefinedTypeReferenceFieldNumber = 31,
  };
  // .substrait.Type.Boolean bool = 1;
  [[nodiscard]] bool has_bool_()
      const;
  private:
  bool _internal_has_bool_() const;

  public:
  void clear_bool_() ;
  [[nodiscard]] const ::substrait::Type_Boolean& bool_() const;
  [[nodiscard]] ::substrait::Type_Boolean* PROTOBUF_NULLABLE release_bool_();
  ::substrait::Type_Boolean* PROTOBUF_NONNULL mutable_bool_();
  void set_allocated_bool_(::substrait::Type_Boolean* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_bool_(::substrait::Type_Boolean* PROTOBUF_NULLABLE value);
  ::substrait::Type_Boolean* PROTOBUF_NULLABLE unsafe_arena_release_bool_();

  private:
  const ::substrait::Type_Boolean& _internal_bool_() const;
  ::substrait::Type_Boolean* PROTOBUF_NONNULL _internal_mutable_bool_();

  public:
  // .substrait.Type.I8 i8 = 2;
  [[nodiscard]] bool has_i8()
      const;
  private:
  bool _internal_has_i8() const;

  public:
  void clear_i8() ;
  [[nodiscard]] const ::substrait::Type_I8& i8() const;
  [[nodiscard]] ::substrait::Type_I8* PROTOBUF_NULLABLE release_i8();
  ::substrait::Type_I8* PROTOBUF_NONNULL mutable_i8();
  void set_allocated_i8(::substrait::Type_I8* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_i8(::substrait::Type_I8* PROTOBUF_NULLABLE value);
  ::substrait::Type_I8* PROTOBUF_NULLABLE unsafe_arena_release_i8();

  private:
  const ::substrait::Type_I8& _internal_i8() const;
  ::substrait::Type_I8* PROTOBUF_NONNULL _internal_mutable_i8();

  public:
  // .substrait.Type.I16 i16 = 3;
  [[nodiscard]] bool has_i16()
      const;
  private:
  bool _internal_has_i16() const;

  public:
  void clear_i16() ;
  [[nodiscard]] const ::substrait::Type_I16& i16() const;
  [[nodiscard]] ::substrait::Type_I16* PROTOBUF_NULLABLE release_i16();
  ::substrait::Type_I16* PROTOBUF_NONNULL mutable_i16();
  void set_allocated_i16(::substrait::Type_I16* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_i16(::substrait::Type_I16* PROTOBUF_NULLABLE value);
  ::substrait::Type_I16* PROTOBUF_NULLABLE unsafe_arena_release_i16();

  private:
  const ::substrait::Type_I16& _internal_i16() const;
  ::substrait::Type_I16* PROTOBUF_NONNULL _internal_mutable_i16();

  public:
  // .substrait.Type.I32 i32 = 5;
  [[nodiscard]] bool has_i32()
      const;
  private:
  bool _internal_has_i32() const;

  public:
  void clear_i32() ;
  [[nodiscard]] const ::substrait::Type_I32& i32() const;
  [[nodiscard]] ::substrait::Type_I32* PROTOBUF_NULLABLE release_i32();
  ::substrait::Type_I32* PROTOBUF_NONNULL mutable_i32();
  void set_allocated_i32(::substrait::Type_I32* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_i32(::substrait::Type_I32* PROTOBUF_NULLABLE value);
  ::substrait::Type_I32* PROTOBUF_NULLABLE unsafe_arena_release_i32();

  private:
  const ::substrait::Type_I32& _internal_i32() const;
  ::substrait::Type_I32* PROTOBUF_NONNULL _internal_mutable_i32();

  public:
  // .substrait.Type.I64 i64 = 7;
  [[nodiscard]] bool has_i64()
      const;
  private:
  bool _internal_has_i64() const;

  public:
  void clear_i64() ;
  [[nodiscard]] const ::substrait::Type_I64& i64() const;
  [[nodiscard]] ::substrait::Type_I64* PROTOBUF_NULLABLE release_i64();
  ::substrait::Type_I64* PROTOBUF_NONNULL mutable_i64();
  void set_allocated_i64(::substrait::Type_I64* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_i64(::substrait::Type_I64* PROTOBUF_NULLABLE value);
  ::substrait::Type_I64* PROTOBUF_NULLABLE unsafe_arena_release_i64();

  private:
  const ::substrait::Type_I64& _internal_i64() const;
  ::substrait::Type_I64* PROTOBUF_NONNULL _internal_mutable_i64();

  public:
  // .substrait.Type.FP32 fp32 = 10;
  [[nodiscard]] bool has_fp32()
      const;
  private:
  bool _internal_has_fp32() const;

  public:
  void clear_fp32() ;
  [[nodiscard]] const ::substrait::Type_FP32& fp32() const;
  [[nodiscard]] ::substrait::Type_FP32* PROTOBUF_NULLABLE release_fp32();
  ::substrait::Type_FP32* PROTOBUF_NONNULL mutable_fp32();
  void set_allocated_fp32(::substrait::Type_FP32* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_fp32(::substrait::Type_FP32* PROTOBUF_NULLABLE value);
  ::substrait::Type_FP32* PROTOBUF_NULLABLE unsafe_arena_release_fp32();

  private:
  const ::substrait::Type_FP32& _internal_fp32() const;
  ::substrait::Type_FP32* PROTOBUF_NONNULL _internal_mutable_fp32();

  public:
  // .substrait.Type.FP64 fp64 = 11;
  [[nodiscard]] bool has_fp64()
      const;
  private:
  bool _internal_has_fp64() const;

  public:
  void clear_fp64() ;
  [[nodiscard]] const ::substrait::Type_FP64& fp64() const;
  [[nodiscard]] ::substrait::Type_FP64* PROTOBUF_NULLABLE release_fp64();
  ::substrait::Type_FP64* PROTOBUF_NONNULL mutable_fp64();
  void set_allocated_fp64(::substrait::Type_FP64* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_fp64(::substrait::Type_FP64* PROTOBUF_NULLABLE value);
  ::substrait::Type_FP64* PROTOBUF_NULLABLE unsafe_arena_release_fp64();

  private:
  const ::substrait::Type_FP64& _internal_fp64() const;
  ::substrait::Type_FP64* PROTOBUF_NONNULL _internal_mutable_fp64();

  public:
  // .substrait.Type.String string = 12;
  [[nodiscard]] bool has_string()
      const;
  private:
  bool _internal_has_string() const;

  public:
  void clear_string() ;
  [[nodiscard]] const ::substrait::Type_String& string() const;
  [[nodiscard]] ::substrait::Type_String* PROTOBUF_NULLABLE release_string();
  ::substrait::Type_String* PROTOBUF_NONNULL mutable_string();
  void set_allocated_string(::substrait::Type_String* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_string(::substrait::Type_String* PROTOBUF_NULLABLE value);
  ::substrait::Type_String* PROTOBUF_NULLABLE unsafe_arena_release_string();

  private:
  const ::substrait::Type_String& _internal_string() const;
  ::substrait::Type_String* PROTOBUF_NONNULL _internal_mutable_string();

  public:
  // .substrait.Type.Binary binary = 13;
  [[nodiscard]] bool has_binary()
      const;
  private:
  bool _internal_has_binary() const;

  public:
  void clear_binary() ;
  [[nodiscard]] const ::substrait::Type_Binary& binary() const;
  [[nodiscard]] ::substrait::Type_Binary* PROTOBUF_NULLABLE release_binary();
  ::substrait::Type_Binary* PROTOBUF_NONNULL mutable_binary();
  void set_allocated_binary(::substrait::Type_Binary* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_binary(::substrait::Type_Binary* PROTOBUF_NULLABLE value);
  ::substrait::Type_Binary* PROTOBUF_NULLABLE unsafe_arena_release_binary();

  private:
  const ::substrait::Type_Binary& _internal_binary() const;
  ::substrait::Type_Binary* PROTOBUF_NONNULL _internal_mutable_binary();

  public:
  // .substrait.Type.Timestamp timestamp = 14 [deprecated = true];
  [[nodiscard]] [[deprecated]]  bool has_timestamp()
      const;
  private:
  bool _internal_has_timestamp() const;

  public:
  [[deprecated]]  void clear_timestamp() ;
  [[deprecated]] [[nodiscard]] const ::substrait::Type_Timestamp& timestamp() const;
  [[deprecated]] [[nodiscard]] ::substrait::Type_Timestamp* PROTOBUF_NULLABLE release_timestamp();
  [[deprecated]] ::substrait::Type_Timestamp* PROTOBUF_NONNULL mutable_timestamp();
  [[deprecated]] void set_allocated_timestamp(::substrait::Type_Timestamp* PROTOBUF_NULLABLE value);
  [[deprecated]] void unsafe_arena_set_allocated_timestamp(::substrait::Type_Timestamp* PROTOBUF_NULLABLE value);
  [[deprecated]] ::substrait::Type_Timestamp* PROTOBUF_NULLABLE unsafe_arena_release_timestamp();

  private:
  const ::substrait::Type_Timestamp& _internal_timestamp() const;
  ::substrait::Type_Timestamp* PROTOBUF_NONNULL _internal_mutable_timestamp();

  public:
  // .substrait.Type.Date date = 16;
  [[nodiscard]] bool has_date()
      const;
  private:
  bool _internal_has_date() const;

  public:
  void clear_date() ;
  [[nodiscard]] const ::substrait::Type_Date& date() const;
  [[nodiscard]] ::substrait::Type_Date* PROTOBUF_NULLABLE release_date();
  ::substrait::Type_Date* PROTOBUF_NONNULL mutable_date();
  void set_allocated_date(::substrait::Type_Date* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_date(::substrait::Type_Date* PROTOBUF_NULLABLE value);
  ::substrait::Type_Date* PROTOBUF_NULLABLE unsafe_arena_release_date();

  private:
  const ::substrait::Type_Date& _internal_date() const;
  ::substrait::Type_Date* PROTOBUF_NONNULL _internal_mutable_date();

  public:
  // .substrait.Type.Time time = 17;
  [[nodiscard]] bool has_time()
      const;
  private:
  bool _internal_has_time() const;

  public:
  void clear_time() ;
  [[nodiscard]] const ::substrait::Type_Time& time() const;
  [[nodiscard]] ::substrait::Type_Time* PROTOBUF_NULLABLE release_time();
  ::substrait::Type_Time* PROTOBUF_NONNULL mutable_time();
  void set_allocated_time(::substrait::Type_Time* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_time(::substrait::Type_Time* PROTOBUF_NULLABLE value);
  ::substrait::Type_Time* PROTOBUF_NULLABLE unsafe_arena_release_time();

  private:
  const ::substrait::Type_Time& _internal_time() const;
  ::substrait::Type_Time* PROTOBUF_NONNULL _internal_mutable_time();

  public:
  // .substrait.Type.IntervalYear interval_year = 19;
  [[nodiscard]] bool has_interval_year()
      const;
  private:
  bool _internal_has_interval_year() const;

  public:
  void clear_interval_year() ;
  [[nodiscard]] const ::substrait::Type_IntervalYear& interval_year() const;
  [[nodiscard]] ::substrait::Type_IntervalYear* PROTOBUF_NULLABLE release_interval_year();
  ::substrait::Type_IntervalYear* PROTOBUF_NONNULL mutable_interval_year();
  void set_allocated_interval_year(::substrait::Type_IntervalYear* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_interval_year(::substrait::Type_IntervalYear* PROTOBUF_NULLABLE value);
  ::substrait::Type_IntervalYear* PROTOBUF_NULLABLE unsafe_arena_release_interval_year();

  private:
  const ::substrait::Type_IntervalYear& _internal_interval_year() const;
  ::substrait::Type_IntervalYear* PROTOBUF_NONNULL _internal_mutable_interval_year();

  public:
  // .substrait.Type.IntervalDay interval_day = 20;
  [[nodiscard]] bool has_interval_day()
      const;
  private:
  bool _internal_has_interval_day() const;

  public:
  void clear_interval_day() ;
  [[nodiscard]] const ::substrait::Type_IntervalDay& interval_day() const;
  [[nodiscard]] ::substrait::Type_IntervalDay* PROTOBUF_NULLABLE release_interval_day();
  ::substrait::Type_IntervalDay* PROTOBUF_NONNULL mutable_interval_day();
  void set_allocated_interval_day(::substrait::Type_IntervalDay* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_interval_day(::substrait::Type_IntervalDay* PROTOBUF_NULLABLE value);
  ::substrait::Type_IntervalDay* PROTOBUF_NULLABLE unsafe_arena_release_interval_day();

  private:
  const ::substrait::Type_IntervalDay& _internal_interval_day() const;
  ::substrait::Type_IntervalDay* PROTOBUF_NONNULL _internal_mutable_interval_day();

  public:
  // .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true];
  [[nodiscard]] [[deprecated]]  bool has_timestamp_tz()
      const;
  private:
  bool _internal_has_timestamp_tz() const;

  public:
  [[deprecated]]  void clear_timestamp_tz() ;
  [[deprecated]] [[nodiscard]] const ::substrait::Type_TimestampTZ& timestamp_tz() const;
  [[deprecated]] [[nodiscard]] ::substrait::Type_TimestampTZ* PROTOBUF_NULLABLE release_timestamp_tz();
  [[deprecated]] ::substrait::Type_TimestampTZ* PROTOBUF_NONNULL mutable_timestamp_tz();
  [[deprecated]] void set_allocated_timestamp_tz(::substrait::Type_TimestampTZ* PROTOBUF_NULLABLE value);
  [[deprecated]] void unsafe_arena_set_allocated_timestamp_tz(::substrait::Type_TimestampTZ* PROTOBUF_NULLABLE value);
  [[deprecated]] ::substrait::Type_TimestampTZ* PROTOBUF_NULLABLE unsafe_arena_release_timestamp_tz();

  private:
  const ::substrait::Type_TimestampTZ& _internal_timestamp_tz() const;
  ::substrait::Type_TimestampTZ* PROTOBUF_NONNULL _internal_mutable_timestamp_tz();

  public:
  // .substrait.Type.UUID uuid = 32;
  [[nodiscard]] bool has_uuid()
      const;
  private:
  bool _internal_has_uuid() const;

  public:
  void clear_uuid() ;
  [[nodiscard]] const ::substrait::Type_UUID& uuid() const;
  [[nodiscard]] ::substrait::Type_UUID* PROTOBUF_NULLABLE release_uuid();
  ::substrait::Type_UUID* PROTOBUF_NONNULL mutable_uuid();
  void set_allocated_uuid(::substrait::Type_UUID* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_uuid(::substrait::Type_UUID* PROTOBUF_NULLABLE value);
  ::substrait::Type_UUID* PROTOBUF_NULLABLE unsafe_arena_release_uuid();

  private:
  const ::substrait::Type_UUID& _internal_uuid() const;
  ::substrait::Type_UUID* PROTOBUF_NONNULL _internal_mutable_uuid();

  public:
  // .substrait.Type.FixedChar fixed_char = 21;
  [[nodiscard]] bool has_fixed_char()
      const;
  private:
  bool _internal_has_fixed_char() const;

  public:
  void clear_fixed_char() ;
  [[nodiscard]] const ::substrait::Type_FixedChar& fixed_char() const;
  [[nodiscard]] ::substrait::Type_FixedChar* PROTOBUF_NULLABLE release_fixed_char();
  ::substrait::Type_FixedChar* PROTOBUF_NONNULL mutable_fixed_char();
  void set_allocated_fixed_char(::substrait::Type_FixedChar* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_fixed_char(::substrait::Type_FixedChar* PROTOBUF_NULLABLE value);
  ::substrait::Type_FixedChar* PROTOBUF_NULLABLE unsafe_arena_release_fixed_char();

  private:
  const ::substrait::Type_FixedChar& _internal_fixed_char() const;
  ::substrait::Type_FixedChar* PROTOBUF_NONNULL _internal_mutable_fixed_char();

  public:
  // .substrait.Type.VarChar varchar = 22;
  [[nodiscard]] bool has_varchar()
      const;
  private:
  bool _internal_has_varchar() const;

  public:
  void clear_varchar() ;
  [[nodiscard]] const ::substrait::Type_VarChar& varchar() const;
  [[nodiscard]] ::substrait::Type_VarChar* PROTOBUF_NULLABLE release_varchar();
  ::substrait::Type_VarChar* PROTOBUF_NONNULL mutable_varchar();
  void set_allocated_varchar(::substrait::Type_VarChar* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_varchar(::substrait::Type_VarChar* PROTOBUF_NULLABLE value);
  ::substrait::Type_VarChar* PROTOBUF_NULLABLE unsafe_arena_release_varchar();

  private:
  const ::substrait::Type_VarChar& _internal_varchar() const;
  ::substrait::Type_VarChar* PROTOBUF_NONNULL _internal_mutable_varchar();

  public:
  // .substrait.Type.FixedBinary fixed_binary = 23;
  [[nodiscard]] bool has_fixed_binary()
      const;
  private:
  bool _internal_has_fixed_binary() const;

  public:
  void clear_fixed_binary() ;
  [[nodiscard]] const ::substrait::Type_FixedBinary& fixed_binary() const;
  [[nodiscard]] ::substrait::Type_FixedBinary* PROTOBUF_NULLABLE release_fixed_binary();
  ::substrait::Type_FixedBinary* PROTOBUF_NONNULL mutable_fixed_binary();
  void set_allocated_fixed_binary(::substrait::Type_FixedBinary* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_fixed_binary(::substrait::Type_FixedBinary* PROTOBUF_NULLABLE value);
  ::substrait::Type_FixedBinary* PROTOBUF_NULLABLE unsafe_arena_release_fixed_binary();

  private:
  const ::substrait::Type_FixedBinary& _internal_fixed_binary() const;
  ::substrait::Type_FixedBinary* PROTOBUF_NONNULL _internal_mutable_fixed_binary();

  public:
  // .substrait.Type.Decimal decimal = 24;
  [[nodiscard]] bool has_decimal()
      const;
  private:
  bool _internal_has_decimal() const;

  public:
  void clear_decimal() ;
  [[nodiscard]] const ::substrait::Type_Decimal& decimal() const;
  [[nodiscard]] ::substrait::Type_Decimal* PROTOBUF_NULLABLE release_decimal();
  ::substrait::Type_Decimal* PROTOBUF_NONNULL mutable_decimal();
  void set_allocated_decimal(::substrait::Type_Decimal* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_decimal(::substrait::Type_Decimal* PROTOBUF_NULLABLE value);
  ::substrait::Type_Decimal* PROTOBUF_NULLABLE unsafe_arena_release_decimal();

  private:
  const ::substrait::Type_Decimal& _internal_decimal() const;
  ::substrait::Type_Decimal* PROTOBUF_NONNULL _internal_mutable_decimal();

  public:
  // .substrait.Type.PrecisionTimestamp precision_timestamp = 33;
  [[nodiscard]] bool has_precision_timestamp()
      const;
  private:
  bool _internal_has_precision_timestamp() const;

  public:
  void clear_precision_timestamp() ;
  [[nodiscard]] const ::substrait::Type_PrecisionTimestamp& precision_timestamp() const;
  [[nodiscard]] ::substrait::Type_PrecisionTimestamp* PROTOBUF_NULLABLE release_precision_timestamp();
  ::substrait::Type_PrecisionTimestamp* PROTOBUF_NONNULL mutable_precision_timestamp();
  void set_allocated_precision_timestamp(::substrait::Type_PrecisionTimestamp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_precision_timestamp(::substrait::Type_PrecisionTimestamp* PROTOBUF_NULLABLE value);
  ::substrait::Type_PrecisionTimestamp* PROTOBUF_NULLABLE unsafe_arena_release_precision_timestamp();

  private:
  const ::substrait::Type_PrecisionTimestamp& _internal_precision_timestamp() const;
  ::substrait::Type_PrecisionTimestamp* PROTOBUF_NONNULL _internal_mutable_precision_timestamp();

  public:
  // .substrait.Type.PrecisionTimestampTZ precision_timestamp_tz = 34;
  [[nodiscard]] bool has_precision_timestamp_tz()
      const;
  private:
  bool _internal_has_precision_timestamp_tz() const;

  public:
  void clear_precision_timestamp_tz() ;
  [[nodiscard]] const ::substrait::Type_PrecisionTimestampTZ& precision_timestamp_tz() const;
  [[nodiscard]] ::substrait::Type_PrecisionTimestampTZ* PROTOBUF_NULLABLE release_precision_timestamp_tz();
  ::substrait::Type_PrecisionTimestampTZ* PROTOBUF_NONNULL mutable_precision_timestamp_tz();
  void set_allocated_precision_timestamp_tz(::substrait::Type_PrecisionTimestampTZ* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_precision_timestamp_tz(::substrait::Type_PrecisionTimestampTZ* PROTOBUF_NULLABLE value);
  ::substrait::Type_PrecisionTimestampTZ* PROTOBUF_NULLABLE unsafe_arena_release_precision_timestamp_tz();

  private:
  const ::substrait::Type_PrecisionTimestampTZ& _internal_precision_timestamp_tz() const;
  ::substrait::Type_PrecisionTimestampTZ* PROTOBUF_NONNULL _internal_mutable_precision_timestamp_tz();

  public:
  // .substrait.Type.Struct struct = 25;
  [[nodiscard]] bool has_struct_()
      const;
  private:
  bool _internal_has_struct_() const;

  public:
  void clear_struct_() ;
  [[nodiscard]] const ::substrait::Type_Struct& struct_() const;
  [[nodiscard]] ::substrait::Type_Struct* PROTOBUF_NULLABLE release_struct_();
  ::substrait::Type_Struct* PROTOBUF_NONNULL mutable_struct_();
  void set_allocated_struct_(::substrait::Type_Struct* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_struct_(::substrait::Type_Struct* PROTOBUF_NULLABLE value);
  ::substrait::Type_Struct* PROTOBUF_NULLABLE unsafe_arena_release_struct_();

  private:
  const ::substrait::Type_Struct& _internal_struct_() const;
  ::substrait::Type_Struct* PROTOBUF_NONNULL _internal_mutable_struct_();

  public:
  // .substrait.Type.List list = 27;
  [[nodiscard]] bool has_list()
      const;
  private:
  bool _internal_has_list() const;

  public:
  void clear_list() ;
  [[nodiscard]] const ::substrait::Type_List& list() const;
  [[nodiscard]] ::substrait::Type_List* PROTOBUF_NULLABLE release_list();
  ::substrait::Type_List* PROTOBUF_NONNULL mutable_list();
  void set_allocated_list(::substrait::Type_List* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_list(::substrait::Type_List* PROTOBUF_NULLABLE value);
  ::substrait::Type_List* PROTOBUF_NULLABLE unsafe_arena_release_list();

  private:
  const ::substrait::Type_List& _internal_list() const;
  ::substrait::Type_List* PROTOBUF_NONNULL _internal_mutable_list();

  public:
  // .substrait.Type.Map map = 28;
  [[nodiscard]] bool has_map()
      const;
  private:
  bool _internal_has_map() const;

  public:
  void clear_map() ;
  [[nodiscard]] const ::substrait::Type_Map& map() const;
  [[nodiscard]] ::substrait::Type_Map* PROTOBUF_NULLABLE release_map();
  ::substrait::Type_Map* PROTOBUF_NONNULL mutable_map();
  void set_allocated_map(::substrait::Type_Map* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_map(::substrait::Type_Map* PROTOBUF_NULLABLE value);
  ::substrait::Type_Map* PROTOBUF_NULLABLE unsafe_arena_release_map();

  private:
  const ::substrait::Type_Map& _internal_map() const;
  ::substrait::Type_Map* PROTOBUF_NONNULL _internal_mutable_map();

  public:
  // .substrait.Type.UserDefined user_defined = 30;
  [[nodiscard]] bool has_user_defined()
      const;
  private:
  bool _internal_has_user_defined() const;

  public:
  void clear_user_defined() ;
  [[nodiscard]] const ::substrait::Type_UserDefined& user_defined() const;
  [[nodiscard]] ::substrait::Type_UserDefined* PROTOBUF_NULLABLE release_user_defined();
  ::substrait::Type_UserDefined* PROTOBUF_NONNULL mutable_user_defined();
  void set_allocated_user_defined(::substrait::Type_UserDefined* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_user_defined(::substrait::Type_UserDefined* PROTOBUF_NULLABLE value);
  ::substrait::Type_UserDefined* PROTOBUF_NULLABLE unsafe_arena_release_user_defined();

  private:
  const ::substrait::Type_UserDefined& _internal_user_defined() const;
  ::substrait::Type_UserDefined* PROTOBUF_NONNULL _internal_mutable_user_defined();

  public:
  // uint32 user_defined_type_reference = 31 [deprecated = true];
  [[nodiscard]] [[deprecated]]  bool has_user_defined_type_reference()
      const;
  [[deprecated]]  void clear_user_defined_type_reference() ;
  [[nodiscard]] [[deprecated]] ::uint32_t user_defined_type_reference() const;
  [[deprecated]] void set_user_defined_type_reference(::uint32_t value);

  private:
  ::uint32_t _internal_user_defined_type_reference() const;
  void _internal_set_user_defined_type_reference(::uint32_t value);

  public:
  void clear_kind();
  KindCase kind_case() const;
  // @@protoc_insertion_point(class_scope:substrait.Type)
 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_precision_timestamp();
  void set_has_precision_timestamp_tz();
  void set_has_struct_();
  void set_has_list();
  void set_has_map();
  void set_has_user_defined();
  void set_has_user_defined_type_reference();
  [[nodiscard]] inline bool has_kind() const;
  inline void clear_has_kind();
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 27,
                          26, 0,
                          7>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type& from_msg);
    union KindUnion {
      constexpr KindUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE bool__;
      ::google::protobuf::Message* PROTOBUF_NULLABLE i8_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE i16_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE i32_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE i64_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE fp32_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE fp64_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE string_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE binary_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE timestamp_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE date_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE time_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE interval_year_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE interval_day_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE timestamp_tz_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE uuid_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE fixed_char_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE varchar_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE fixed_binary_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE decimal_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE precision_timestamp_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE precision_timestamp_tz_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE struct__;
      ::google::protobuf::Message* PROTOBUF_NULLABLE list_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE map_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE user_defined_;
      ::uint32_t user_defined_type_reference_;
    } kind_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_List final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.List) */ {
 public:
  inline Type_List() : Type_List(nullptr) {}
  ~Type_List() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_List* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_List));
  }
#endif

  template <typename = void>
  explicit constexpr Type_List(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_List(const Type_List& from) : Type_List(nullptr, from) {}
  inline Type_List(Type_List&& from) noexcept : Type_List(nullptr, ::std::move(from)) {}
  inline Type_List& operator=(const Type_List& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_List& operator=(Type_List&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_List& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_List>(&Type_List_globals_);
  }
  static constexpr int kIndexInFileMessages = 23;
  friend void swap(Type_List& a, Type_List& b) { a.Swap(&b); }
  inline void Swap(Type_List* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_List* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_List* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_List>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_List& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_List& from) { Type_List::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_List* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.List"; }

  explicit Type_List(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_List(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_List& from);
  Type_List(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_List&& from) noexcept
      : Type_List(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeFieldNumber = 1,
    kTypeVariationReferenceFieldNumber = 2,
    kNullabilityFieldNumber = 3,
  };
  // .substrait.Type type = 1;
  [[nodiscard]] bool has_type()
      const;
  void clear_type() ;
  [[nodiscard]] const ::substrait::Type& type() const;
  [[nodiscard]] ::substrait::Type* PROTOBUF_NULLABLE release_type();
  ::substrait::Type* PROTOBUF_NONNULL mutable_type();
  void set_allocated_type(::substrait::Type* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_type(::substrait::Type* PROTOBUF_NULLABLE value);
  ::substrait::Type* PROTOBUF_NULLABLE unsafe_arena_release_type();

  private:
  const ::substrait::Type& _internal_type() const;
  ::substrait::Type* PROTOBUF_NONNULL _internal_mutable_type();

  public:
  // uint32 type_variation_reference = 2;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 3;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.List)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_List& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::substrait::Type* PROTOBUF_NULLABLE type_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_Map final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.Map) */ {
 public:
  inline Type_Map() : Type_Map(nullptr) {}
  ~Type_Map() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_Map* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_Map));
  }
#endif

  template <typename = void>
  explicit constexpr Type_Map(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_Map(const Type_Map& from) : Type_Map(nullptr, from) {}
  inline Type_Map(Type_Map&& from) noexcept : Type_Map(nullptr, ::std::move(from)) {}
  inline Type_Map& operator=(const Type_Map& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_Map& operator=(Type_Map&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_Map& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_Map>(&Type_Map_globals_);
  }
  static constexpr int kIndexInFileMessages = 24;
  friend void swap(Type_Map& a, Type_Map& b) { a.Swap(&b); }
  inline void Swap(Type_Map* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_Map* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_Map* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_Map>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_Map& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_Map& from) { Type_Map::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_Map* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.Map"; }

  explicit Type_Map(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_Map(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_Map& from);
  Type_Map(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_Map&& from) noexcept
      : Type_Map(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kKeyFieldNumber = 1,
    kValueFieldNumber = 2,
    kTypeVariationReferenceFieldNumber = 3,
    kNullabilityFieldNumber = 4,
  };
  // .substrait.Type key = 1;
  [[nodiscard]] bool has_key()
      const;
  void clear_key() ;
  [[nodiscard]] const ::substrait::Type& key() const;
  [[nodiscard]] ::substrait::Type* PROTOBUF_NULLABLE release_key();
  ::substrait::Type* PROTOBUF_NONNULL mutable_key();
  void set_allocated_key(::substrait::Type* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_key(::substrait::Type* PROTOBUF_NULLABLE value);
  ::substrait::Type* PROTOBUF_NULLABLE unsafe_arena_release_key();

  private:
  const ::substrait::Type& _internal_key() const;
  ::substrait::Type* PROTOBUF_NONNULL _internal_mutable_key();

  public:
  // .substrait.Type value = 2;
  [[nodiscard]] bool has_value()
      const;
  void clear_value() ;
  [[nodiscard]] const ::substrait::Type& value() const;
  [[nodiscard]] ::substrait::Type* PROTOBUF_NULLABLE release_value();
  ::substrait::Type* PROTOBUF_NONNULL mutable_value();
  void set_allocated_value(::substrait::Type* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_value(::substrait::Type* PROTOBUF_NULLABLE value);
  ::substrait::Type* PROTOBUF_NULLABLE unsafe_arena_release_value();

  private:
  const ::substrait::Type& _internal_value() const;
  ::substrait::Type* PROTOBUF_NONNULL _internal_mutable_value();

  public:
  // uint32 type_variation_reference = 3;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 4;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.Map)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_Map& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::substrait::Type* PROTOBUF_NULLABLE key_;
    ::substrait::Type* PROTOBUF_NULLABLE value_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_Parameter final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.Parameter) */ {
 public:
  inline Type_Parameter() : Type_Parameter(nullptr) {}
  ~Type_Parameter() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_Parameter* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_Parameter));
  }
#endif

  template <typename = void>
  explicit constexpr Type_Parameter(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_Parameter(const Type_Parameter& from) : Type_Parameter(nullptr, from) {}
  inline Type_Parameter(Type_Parameter&& from) noexcept : Type_Parameter(nullptr, ::std::move(from)) {}
  inline Type_Parameter& operator=(const Type_Parameter& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_Parameter& operator=(Type_Parameter&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_Parameter& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_Parameter>(&Type_Parameter_globals_);
  }
  enum ParameterCase {
    kNull = 1,
    kDataType = 2,
    kBoolean = 3,
    kInteger = 4,
    kEnum = 5,
    kString = 6,
    PARAMETER_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 26;
  friend void swap(Type_Parameter& a, Type_Parameter& b) { a.Swap(&b); }
  inline void Swap(Type_Parameter* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_Parameter* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_Parameter* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_Parameter>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_Parameter& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_Parameter& from) { Type_Parameter::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_Parameter* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.Parameter"; }

  explicit Type_Parameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_Parameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_Parameter& from);
  Type_Parameter(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_Parameter&& from) noexcept
      : Type_Parameter(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kNullFieldNumber = 1,
    kDataTypeFieldNumber = 2,
    kBooleanFieldNumber = 3,
    kIntegerFieldNumber = 4,
    kEnumFieldNumber = 5,
    kStringFieldNumber = 6,
  };
  // .google.protobuf.Empty null = 1;
  [[nodiscard]] bool has_null()
      const;
  private:
  bool _internal_has_null() const;

  public:
  void clear_null() ;
  [[nodiscard]] const ::google::protobuf::Empty& null() const;
  [[nodiscard]] ::google::protobuf::Empty* PROTOBUF_NULLABLE release_null();
  ::google::protobuf::Empty* PROTOBUF_NONNULL mutable_null();
  void set_allocated_null(::google::protobuf::Empty* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_null(::google::protobuf::Empty* PROTOBUF_NULLABLE value);
  ::google::protobuf::Empty* PROTOBUF_NULLABLE unsafe_arena_release_null();

  private:
  const ::google::protobuf::Empty& _internal_null() const;
  ::google::protobuf::Empty* PROTOBUF_NONNULL _internal_mutable_null();

  public:
  // .substrait.Type data_type = 2;
  [[nodiscard]] bool has_data_type()
      const;
  private:
  bool _internal_has_data_type() const;

  public:
  void clear_data_type() ;
  [[nodiscard]] const ::substrait::Type& data_type() const;
  [[nodiscard]] ::substrait::Type* PROTOBUF_NULLABLE release_data_type();
  ::substrait::Type* PROTOBUF_NONNULL mutable_data_type();
  void set_allocated_data_type(::substrait::Type* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_data_type(::substrait::Type* PROTOBUF_NULLABLE value);
  ::substrait::Type* PROTOBUF_NULLABLE unsafe_arena_release_data_type();

  private:
  const ::substrait::Type& _internal_data_type() const;
  ::substrait::Type* PROTOBUF_NONNULL _internal_mutable_data_type();

  public:
  // bool boolean = 3;
  [[nodiscard]] bool has_boolean()
      const;
  void clear_boolean() ;
  [[nodiscard]] bool boolean() const;
  void set_boolean(bool value);

  private:
  bool _internal_boolean() const;
  void _internal_set_boolean(bool value);

  public:
  // int64 integer = 4;
  [[nodiscard]] bool has_integer()
      const;
  void clear_integer() ;
  [[nodiscard]] ::int64_t integer() const;
  void set_integer(::int64_t value);

  private:
  ::int64_t _internal_integer() const;
  void _internal_set_integer(::int64_t value);

  public:
  // string enum = 5;
  [[nodiscard]] bool has_enum_()
      const;
  void clear_enum_() ;
  [[nodiscard]] const ::std::string& enum_() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_enum_(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_enum_();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_enum_();
  void set_allocated_enum_(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_enum_() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_enum_(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_enum_();

  public:
  // string string = 6;
  [[nodiscard]] bool has_string()
      const;
  void clear_string() ;
  [[nodiscard]] const ::std::string& string() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_string(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_string();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_string();
  void set_allocated_string(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_string() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_string(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_string();

  public:
  void clear_parameter();
  ParameterCase parameter_case() const;
  // @@protoc_insertion_point(class_scope:substrait.Type.Parameter)
 private:
  class _Internal;
  void set_has_null();
  void set_has_data_type();
  void set_has_boolean();
  void set_has_integer();
  void set_has_enum_();
  void set_has_string();
  [[nodiscard]] inline bool has_parameter() const;
  inline void clear_has_parameter();
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 6,
                          2, 43,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_Parameter& from_msg);
    union ParameterUnion {
      constexpr ParameterUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::Empty* PROTOBUF_NULLABLE null_;
      ::substrait::Type* PROTOBUF_NULLABLE data_type_;
      bool boolean_;
      ::int64_t integer_;
      ::google::protobuf::internal::ArenaStringPtr enum__;
      ::google::protobuf::internal::ArenaStringPtr string_;
    } parameter_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_Struct final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.Struct) */ {
 public:
  inline Type_Struct() : Type_Struct(nullptr) {}
  ~Type_Struct() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_Struct* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_Struct));
  }
#endif

  template <typename = void>
  explicit constexpr Type_Struct(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_Struct(const Type_Struct& from) : Type_Struct(nullptr, from) {}
  inline Type_Struct(Type_Struct&& from) noexcept : Type_Struct(nullptr, ::std::move(from)) {}
  inline Type_Struct& operator=(const Type_Struct& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_Struct& operator=(Type_Struct&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_Struct& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_Struct>(&Type_Struct_globals_);
  }
  static constexpr int kIndexInFileMessages = 22;
  friend void swap(Type_Struct& a, Type_Struct& b) { a.Swap(&b); }
  inline void Swap(Type_Struct* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_Struct* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_Struct* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_Struct>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_Struct& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_Struct& from) { Type_Struct::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_Struct* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.Struct"; }

  explicit Type_Struct(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_Struct(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_Struct& from);
  Type_Struct(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_Struct&& from) noexcept
      : Type_Struct(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypesFieldNumber = 1,
    kTypeVariationReferenceFieldNumber = 2,
    kNullabilityFieldNumber = 3,
  };
  // repeated .substrait.Type types = 1;
  [[nodiscard]] int types_size()
      const;
  private:
  int _internal_types_size() const;

  public:
  void clear_types() ;
  [[nodiscard]] const ::substrait::Type& types(int index) const;
  [[nodiscard]] ::substrait::Type* PROTOBUF_NONNULL mutable_types(int index);
  ::substrait::Type* PROTOBUF_NONNULL add_types();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::substrait::Type>&
  types() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::substrait::Type>* PROTOBUF_NONNULL
  mutable_types();

  private:
  const ::google::protobuf::RepeatedPtrField<::substrait::Type>& _internal_types() const;
  ::google::protobuf::RepeatedPtrField<::substrait::Type>* PROTOBUF_NONNULL _internal_mutable_types();

  public:
  // uint32 type_variation_reference = 2;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 3;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.Struct)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_Struct& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::substrait::Type > types_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Type_UserDefined final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.Type.UserDefined) */ {
 public:
  inline Type_UserDefined() : Type_UserDefined(nullptr) {}
  ~Type_UserDefined() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Type_UserDefined* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Type_UserDefined));
  }
#endif

  template <typename = void>
  explicit constexpr Type_UserDefined(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline Type_UserDefined(const Type_UserDefined& from) : Type_UserDefined(nullptr, from) {}
  inline Type_UserDefined(Type_UserDefined&& from) noexcept : Type_UserDefined(nullptr, ::std::move(from)) {}
  inline Type_UserDefined& operator=(const Type_UserDefined& from) {
    CopyFrom(from);
    return *this;
  }
  inline Type_UserDefined& operator=(Type_UserDefined&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Type_UserDefined& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<Type_UserDefined>(&Type_UserDefined_globals_);
  }
  static constexpr int kIndexInFileMessages = 25;
  friend void swap(Type_UserDefined& a, Type_UserDefined& b) { a.Swap(&b); }
  inline void Swap(Type_UserDefined* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Type_UserDefined* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] Type_UserDefined* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Type_UserDefined>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Type_UserDefined& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Type_UserDefined& from) { Type_UserDefined::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Type_UserDefined* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.Type.UserDefined"; }

  explicit Type_UserDefined(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Type_UserDefined(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Type_UserDefined& from);
  Type_UserDefined(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Type_UserDefined&& from) noexcept
      : Type_UserDefined(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTypeParametersFieldNumber = 4,
    kTypeReferenceFieldNumber = 1,
    kTypeVariationReferenceFieldNumber = 2,
    kNullabilityFieldNumber = 3,
  };
  // repeated .substrait.Type.Parameter type_parameters = 4;
  [[nodiscard]] int type_parameters_size()
      const;
  private:
  int _internal_type_parameters_size() const;

  public:
  void clear_type_parameters() ;
  [[nodiscard]] const ::substrait::Type_Parameter& type_parameters(int index) const;
  [[nodiscard]] ::substrait::Type_Parameter* PROTOBUF_NONNULL mutable_type_parameters(int index);
  ::substrait::Type_Parameter* PROTOBUF_NONNULL add_type_parameters();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::substrait::Type_Parameter>&
  type_parameters() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::substrait::Type_Parameter>* PROTOBUF_NONNULL
  mutable_type_parameters();

  private:
  const ::google::protobuf::RepeatedPtrField<::substrait::Type_Parameter>& _internal_type_parameters() const;
  ::google::protobuf::RepeatedPtrField<::substrait::Type_Parameter>* PROTOBUF_NONNULL _internal_mutable_type_parameters();

  public:
  // uint32 type_reference = 1;
  void clear_type_reference() ;
  [[nodiscard]] ::uint32_t type_reference() const;
  void set_type_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_reference() const;
  void _internal_set_type_reference(::uint32_t value);

  public:
  // uint32 type_variation_reference = 2;
  void clear_type_variation_reference() ;
  [[nodiscard]] ::uint32_t type_variation_reference() const;
  void set_type_variation_reference(::uint32_t value);

  private:
  ::uint32_t _internal_type_variation_reference() const;
  void _internal_set_type_variation_reference(::uint32_t value);

  public:
  // .substrait.Type.Nullability nullability = 3;
  void clear_nullability() ;
  [[nodiscard]] ::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.Type.UserDefined)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Type_UserDefined& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::substrait::Type_Parameter > type_parameters_;
    ::uint32_t type_reference_;
    ::uint32_t type_variation_reference_;
    int nullability_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED NamedStruct final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:substrait.NamedStruct) */ {
 public:
  inline NamedStruct() : NamedStruct(nullptr) {}
  ~NamedStruct() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(NamedStruct* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(NamedStruct));
  }
#endif

  template <typename = void>
  explicit constexpr NamedStruct(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline NamedStruct(const NamedStruct& from) : NamedStruct(nullptr, from) {}
  inline NamedStruct(NamedStruct&& from) noexcept : NamedStruct(nullptr, ::std::move(from)) {}
  inline NamedStruct& operator=(const NamedStruct& from) {
    CopyFrom(from);
    return *this;
  }
  inline NamedStruct& operator=(NamedStruct&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const NamedStruct& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<NamedStruct>(&NamedStruct_globals_);
  }
  static constexpr int kIndexInFileMessages = 28;
  friend void swap(NamedStruct& a, NamedStruct& b) { a.Swap(&b); }
  inline void Swap(NamedStruct* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(NamedStruct* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  [[nodiscard]] NamedStruct* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<NamedStruct>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const NamedStruct& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const NamedStruct& from) { NamedStruct::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(NamedStruct* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "substrait.NamedStruct"; }

  explicit NamedStruct(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  NamedStruct(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const NamedStruct& from);
  NamedStruct(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, NamedStruct&& from) noexcept
      : NamedStruct(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kNamesFieldNumber = 1,
    kStructFieldNumber = 2,
  };
  // repeated string names = 1;
  [[nodiscard]] int names_size()
      const;
  private:
  int _internal_names_size() const;

  public:
  void clear_names() ;
  [[nodiscard]] const ::std::string& names(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_names(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_names(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_names();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_names(Arg_&& value, Args_... args);
  [[nodiscard]] const
      ::google::protobuf::RepeatedPtrField<::std::string>&
      names() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::std::string>*
      PROTOBUF_NONNULL
      mutable_names();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_names() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_names();

  public:
  // .substrait.Type.Struct struct = 2;
  [[nodiscard]] bool has_struct_()
      const;
  void clear_struct_() ;
  [[nodiscard]] const ::substrait::Type_Struct& struct_() const;
  [[nodiscard]] ::substrait::Type_Struct* PROTOBUF_NULLABLE release_struct_();
  ::substrait::Type_Struct* PROTOBUF_NONNULL mutable_struct_();
  void set_allocated_struct_(::substrait::Type_Struct* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_struct_(::substrait::Type_Struct* PROTOBUF_NULLABLE value);
  ::substrait::Type_Struct* PROTOBUF_NULLABLE unsafe_arena_release_struct_();

  private:
  const ::substrait::Type_Struct& _internal_struct_() const;
  ::substrait::Type_Struct* PROTOBUF_NONNULL _internal_mutable_struct_();

  public:
  // @@protoc_insertion_point(class_scope:substrait.NamedStruct)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 35,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const NamedStruct& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> names_;
    ::substrait::Type_Struct* PROTOBUF_NULLABLE struct__;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_substrait_2ftype_2eproto;
};

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




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


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

// Type_Boolean

// uint32 type_variation_reference = 1;
inline void Type_Boolean::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_Boolean::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Boolean.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_Boolean::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.Boolean.type_variation_reference)
}
inline ::uint32_t Type_Boolean::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_Boolean::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_Boolean::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_Boolean::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Boolean.nullability)
  return _internal_nullability();
}
inline void Type_Boolean::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.Boolean.nullability)
}
inline ::substrait::Type_Nullability Type_Boolean::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_Boolean::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_I8

// uint32 type_variation_reference = 1;
inline void Type_I8::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_I8::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.I8.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_I8::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.I8.type_variation_reference)
}
inline ::uint32_t Type_I8::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_I8::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_I8::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_I8::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.I8.nullability)
  return _internal_nullability();
}
inline void Type_I8::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.I8.nullability)
}
inline ::substrait::Type_Nullability Type_I8::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_I8::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_I16

// uint32 type_variation_reference = 1;
inline void Type_I16::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_I16::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.I16.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_I16::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.I16.type_variation_reference)
}
inline ::uint32_t Type_I16::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_I16::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_I16::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_I16::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.I16.nullability)
  return _internal_nullability();
}
inline void Type_I16::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.I16.nullability)
}
inline ::substrait::Type_Nullability Type_I16::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_I16::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_I32

// uint32 type_variation_reference = 1;
inline void Type_I32::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_I32::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.I32.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_I32::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.I32.type_variation_reference)
}
inline ::uint32_t Type_I32::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_I32::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_I32::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_I32::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.I32.nullability)
  return _internal_nullability();
}
inline void Type_I32::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.I32.nullability)
}
inline ::substrait::Type_Nullability Type_I32::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_I32::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_I64

// uint32 type_variation_reference = 1;
inline void Type_I64::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_I64::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.I64.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_I64::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.I64.type_variation_reference)
}
inline ::uint32_t Type_I64::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_I64::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_I64::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_I64::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.I64.nullability)
  return _internal_nullability();
}
inline void Type_I64::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.I64.nullability)
}
inline ::substrait::Type_Nullability Type_I64::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_I64::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_FP32

// uint32 type_variation_reference = 1;
inline void Type_FP32::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_FP32::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.FP32.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_FP32::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.FP32.type_variation_reference)
}
inline ::uint32_t Type_FP32::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_FP32::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_FP32::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_FP32::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.FP32.nullability)
  return _internal_nullability();
}
inline void Type_FP32::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.FP32.nullability)
}
inline ::substrait::Type_Nullability Type_FP32::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_FP32::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_FP64

// uint32 type_variation_reference = 1;
inline void Type_FP64::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_FP64::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.FP64.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_FP64::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.FP64.type_variation_reference)
}
inline ::uint32_t Type_FP64::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_FP64::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_FP64::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_FP64::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.FP64.nullability)
  return _internal_nullability();
}
inline void Type_FP64::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.FP64.nullability)
}
inline ::substrait::Type_Nullability Type_FP64::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_FP64::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_String

// uint32 type_variation_reference = 1;
inline void Type_String::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_String::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.String.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_String::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.String.type_variation_reference)
}
inline ::uint32_t Type_String::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_String::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_String::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_String::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.String.nullability)
  return _internal_nullability();
}
inline void Type_String::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.String.nullability)
}
inline ::substrait::Type_Nullability Type_String::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_String::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_Binary

// uint32 type_variation_reference = 1;
inline void Type_Binary::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_Binary::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Binary.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_Binary::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.Binary.type_variation_reference)
}
inline ::uint32_t Type_Binary::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_Binary::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_Binary::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_Binary::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Binary.nullability)
  return _internal_nullability();
}
inline void Type_Binary::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.Binary.nullability)
}
inline ::substrait::Type_Nullability Type_Binary::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_Binary::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_Timestamp

// uint32 type_variation_reference = 1;
inline void Type_Timestamp::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_Timestamp::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Timestamp.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_Timestamp::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.Timestamp.type_variation_reference)
}
inline ::uint32_t Type_Timestamp::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_Timestamp::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_Timestamp::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_Timestamp::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Timestamp.nullability)
  return _internal_nullability();
}
inline void Type_Timestamp::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.Timestamp.nullability)
}
inline ::substrait::Type_Nullability Type_Timestamp::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_Timestamp::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_Date

// uint32 type_variation_reference = 1;
inline void Type_Date::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_Date::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Date.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_Date::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.Date.type_variation_reference)
}
inline ::uint32_t Type_Date::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_Date::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_Date::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_Date::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Date.nullability)
  return _internal_nullability();
}
inline void Type_Date::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.Date.nullability)
}
inline ::substrait::Type_Nullability Type_Date::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_Date::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_Time

// uint32 type_variation_reference = 1;
inline void Type_Time::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_Time::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Time.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_Time::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.Time.type_variation_reference)
}
inline ::uint32_t Type_Time::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_Time::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_Time::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_Time::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Time.nullability)
  return _internal_nullability();
}
inline void Type_Time::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.Time.nullability)
}
inline ::substrait::Type_Nullability Type_Time::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_Time::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_TimestampTZ

// uint32 type_variation_reference = 1;
inline void Type_TimestampTZ::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_TimestampTZ::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.TimestampTZ.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_TimestampTZ::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.TimestampTZ.type_variation_reference)
}
inline ::uint32_t Type_TimestampTZ::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_TimestampTZ::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_TimestampTZ::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_TimestampTZ::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.TimestampTZ.nullability)
  return _internal_nullability();
}
inline void Type_TimestampTZ::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.TimestampTZ.nullability)
}
inline ::substrait::Type_Nullability Type_TimestampTZ::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_TimestampTZ::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_IntervalYear

// uint32 type_variation_reference = 1;
inline void Type_IntervalYear::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_IntervalYear::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.IntervalYear.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_IntervalYear::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.IntervalYear.type_variation_reference)
}
inline ::uint32_t Type_IntervalYear::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_IntervalYear::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_IntervalYear::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_IntervalYear::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.IntervalYear.nullability)
  return _internal_nullability();
}
inline void Type_IntervalYear::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.IntervalYear.nullability)
}
inline ::substrait::Type_Nullability Type_IntervalYear::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_IntervalYear::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_IntervalDay

// uint32 type_variation_reference = 1;
inline void Type_IntervalDay::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_IntervalDay::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.IntervalDay.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_IntervalDay::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.IntervalDay.type_variation_reference)
}
inline ::uint32_t Type_IntervalDay::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_IntervalDay::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_IntervalDay::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_IntervalDay::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.IntervalDay.nullability)
  return _internal_nullability();
}
inline void Type_IntervalDay::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.IntervalDay.nullability)
}
inline ::substrait::Type_Nullability Type_IntervalDay::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_IntervalDay::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_UUID

// uint32 type_variation_reference = 1;
inline void Type_UUID::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t Type_UUID::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.UUID.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_UUID::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.UUID.type_variation_reference)
}
inline ::uint32_t Type_UUID::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_UUID::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 2;
inline void Type_UUID::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::substrait::Type_Nullability Type_UUID::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.UUID.nullability)
  return _internal_nullability();
}
inline void Type_UUID::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.UUID.nullability)
}
inline ::substrait::Type_Nullability Type_UUID::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_UUID::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_FixedChar

// int32 length = 1;
inline void Type_FixedChar::clear_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.length_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::int32_t Type_FixedChar::length() const {
  // @@protoc_insertion_point(field_get:substrait.Type.FixedChar.length)
  return _internal_length();
}
inline void Type_FixedChar::set_length(::int32_t value) {
  _internal_set_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.FixedChar.length)
}
inline ::int32_t Type_FixedChar::_internal_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.length_;
}
inline void Type_FixedChar::_internal_set_length(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.length_ = value;
}

// uint32 type_variation_reference = 2;
inline void Type_FixedChar::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t Type_FixedChar::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.FixedChar.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_FixedChar::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.FixedChar.type_variation_reference)
}
inline ::uint32_t Type_FixedChar::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_FixedChar::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 3;
inline void Type_FixedChar::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::substrait::Type_Nullability Type_FixedChar::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.FixedChar.nullability)
  return _internal_nullability();
}
inline void Type_FixedChar::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:substrait.Type.FixedChar.nullability)
}
inline ::substrait::Type_Nullability Type_FixedChar::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_FixedChar::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_VarChar

// int32 length = 1;
inline void Type_VarChar::clear_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.length_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::int32_t Type_VarChar::length() const {
  // @@protoc_insertion_point(field_get:substrait.Type.VarChar.length)
  return _internal_length();
}
inline void Type_VarChar::set_length(::int32_t value) {
  _internal_set_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.VarChar.length)
}
inline ::int32_t Type_VarChar::_internal_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.length_;
}
inline void Type_VarChar::_internal_set_length(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.length_ = value;
}

// uint32 type_variation_reference = 2;
inline void Type_VarChar::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t Type_VarChar::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.VarChar.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_VarChar::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.VarChar.type_variation_reference)
}
inline ::uint32_t Type_VarChar::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_VarChar::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 3;
inline void Type_VarChar::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::substrait::Type_Nullability Type_VarChar::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.VarChar.nullability)
  return _internal_nullability();
}
inline void Type_VarChar::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:substrait.Type.VarChar.nullability)
}
inline ::substrait::Type_Nullability Type_VarChar::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_VarChar::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_FixedBinary

// int32 length = 1;
inline void Type_FixedBinary::clear_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.length_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::int32_t Type_FixedBinary::length() const {
  // @@protoc_insertion_point(field_get:substrait.Type.FixedBinary.length)
  return _internal_length();
}
inline void Type_FixedBinary::set_length(::int32_t value) {
  _internal_set_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.FixedBinary.length)
}
inline ::int32_t Type_FixedBinary::_internal_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.length_;
}
inline void Type_FixedBinary::_internal_set_length(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.length_ = value;
}

// uint32 type_variation_reference = 2;
inline void Type_FixedBinary::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t Type_FixedBinary::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.FixedBinary.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_FixedBinary::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.FixedBinary.type_variation_reference)
}
inline ::uint32_t Type_FixedBinary::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_FixedBinary::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 3;
inline void Type_FixedBinary::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::substrait::Type_Nullability Type_FixedBinary::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.FixedBinary.nullability)
  return _internal_nullability();
}
inline void Type_FixedBinary::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:substrait.Type.FixedBinary.nullability)
}
inline ::substrait::Type_Nullability Type_FixedBinary::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_FixedBinary::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_Decimal

// int32 scale = 1;
inline void Type_Decimal::clear_scale() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.scale_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::int32_t Type_Decimal::scale() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Decimal.scale)
  return _internal_scale();
}
inline void Type_Decimal::set_scale(::int32_t value) {
  _internal_set_scale(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.Decimal.scale)
}
inline ::int32_t Type_Decimal::_internal_scale() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.scale_;
}
inline void Type_Decimal::_internal_set_scale(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.scale_ = value;
}

// int32 precision = 2;
inline void Type_Decimal::clear_precision() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.precision_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::int32_t Type_Decimal::precision() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Decimal.precision)
  return _internal_precision();
}
inline void Type_Decimal::set_precision(::int32_t value) {
  _internal_set_precision(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.Decimal.precision)
}
inline ::int32_t Type_Decimal::_internal_precision() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.precision_;
}
inline void Type_Decimal::_internal_set_precision(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.precision_ = value;
}

// uint32 type_variation_reference = 3;
inline void Type_Decimal::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t Type_Decimal::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Decimal.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_Decimal::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:substrait.Type.Decimal.type_variation_reference)
}
inline ::uint32_t Type_Decimal::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_Decimal::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 4;
inline void Type_Decimal::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::substrait::Type_Nullability Type_Decimal::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Decimal.nullability)
  return _internal_nullability();
}
inline void Type_Decimal::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:substrait.Type.Decimal.nullability)
}
inline ::substrait::Type_Nullability Type_Decimal::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_Decimal::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_PrecisionTimestamp

// int32 precision = 1;
inline void Type_PrecisionTimestamp::clear_precision() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.precision_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::int32_t Type_PrecisionTimestamp::precision() const {
  // @@protoc_insertion_point(field_get:substrait.Type.PrecisionTimestamp.precision)
  return _internal_precision();
}
inline void Type_PrecisionTimestamp::set_precision(::int32_t value) {
  _internal_set_precision(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.PrecisionTimestamp.precision)
}
inline ::int32_t Type_PrecisionTimestamp::_internal_precision() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.precision_;
}
inline void Type_PrecisionTimestamp::_internal_set_precision(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.precision_ = value;
}

// uint32 type_variation_reference = 2;
inline void Type_PrecisionTimestamp::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t Type_PrecisionTimestamp::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.PrecisionTimestamp.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_PrecisionTimestamp::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.PrecisionTimestamp.type_variation_reference)
}
inline ::uint32_t Type_PrecisionTimestamp::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_PrecisionTimestamp::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 3;
inline void Type_PrecisionTimestamp::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::substrait::Type_Nullability Type_PrecisionTimestamp::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.PrecisionTimestamp.nullability)
  return _internal_nullability();
}
inline void Type_PrecisionTimestamp::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:substrait.Type.PrecisionTimestamp.nullability)
}
inline ::substrait::Type_Nullability Type_PrecisionTimestamp::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_PrecisionTimestamp::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_PrecisionTimestampTZ

// int32 precision = 1;
inline void Type_PrecisionTimestampTZ::clear_precision() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.precision_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::int32_t Type_PrecisionTimestampTZ::precision() const {
  // @@protoc_insertion_point(field_get:substrait.Type.PrecisionTimestampTZ.precision)
  return _internal_precision();
}
inline void Type_PrecisionTimestampTZ::set_precision(::int32_t value) {
  _internal_set_precision(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:substrait.Type.PrecisionTimestampTZ.precision)
}
inline ::int32_t Type_PrecisionTimestampTZ::_internal_precision() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.precision_;
}
inline void Type_PrecisionTimestampTZ::_internal_set_precision(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.precision_ = value;
}

// uint32 type_variation_reference = 2;
inline void Type_PrecisionTimestampTZ::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t Type_PrecisionTimestampTZ::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.PrecisionTimestampTZ.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_PrecisionTimestampTZ::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.PrecisionTimestampTZ.type_variation_reference)
}
inline ::uint32_t Type_PrecisionTimestampTZ::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_PrecisionTimestampTZ::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 3;
inline void Type_PrecisionTimestampTZ::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::substrait::Type_Nullability Type_PrecisionTimestampTZ::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.PrecisionTimestampTZ.nullability)
  return _internal_nullability();
}
inline void Type_PrecisionTimestampTZ::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:substrait.Type.PrecisionTimestampTZ.nullability)
}
inline ::substrait::Type_Nullability Type_PrecisionTimestampTZ::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_PrecisionTimestampTZ::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_Struct

// repeated .substrait.Type types = 1;
inline int Type_Struct::_internal_types_size() const {
  return _internal_types().size();
}
inline int Type_Struct::types_size() const {
  return _internal_types_size();
}
inline void Type_Struct::clear_types() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.types_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::substrait::Type& Type_Struct::types(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.Struct.types)
  return _internal_types().Get(index);
}
inline ::substrait::Type* PROTOBUF_NONNULL Type_Struct::mutable_types(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:substrait.Type.Struct.types)
  return _internal_mutable_types()->Mutable(index);
}
inline ::substrait::Type* PROTOBUF_NONNULL Type_Struct::add_types()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::substrait::Type* _add =
      _internal_mutable_types()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:substrait.Type.Struct.types)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::substrait::Type>& Type_Struct::types() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:substrait.Type.Struct.types)
  return _internal_types();
}
inline ::google::protobuf::RepeatedPtrField<::substrait::Type>* PROTOBUF_NONNULL
Type_Struct::mutable_types() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:substrait.Type.Struct.types)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_types();
}
inline const ::google::protobuf::RepeatedPtrField<::substrait::Type>&
Type_Struct::_internal_types() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.types_;
}
inline ::google::protobuf::RepeatedPtrField<::substrait::Type>* PROTOBUF_NONNULL
Type_Struct::_internal_mutable_types() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.types_;
}

// uint32 type_variation_reference = 2;
inline void Type_Struct::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t Type_Struct::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Struct.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_Struct::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.Struct.type_variation_reference)
}
inline ::uint32_t Type_Struct::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_Struct::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 3;
inline void Type_Struct::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::substrait::Type_Nullability Type_Struct::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Struct.nullability)
  return _internal_nullability();
}
inline void Type_Struct::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:substrait.Type.Struct.nullability)
}
inline ::substrait::Type_Nullability Type_Struct::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_Struct::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_List

// .substrait.Type type = 1;
inline bool Type_List::has_type() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.type_ != nullptr);
  return value;
}
inline void Type_List::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.type_ != nullptr) _impl_.type_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::substrait::Type& Type_List::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::substrait::Type* p = _impl_.type_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type>(&::substrait::Type_globals_);
}
inline const ::substrait::Type& Type_List::type() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.List.type)
  return _internal_type();
}
inline void Type_List::unsafe_arena_set_allocated_type(
    ::substrait::Type* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.type_);
  }
  _impl_.type_ = reinterpret_cast<::substrait::Type*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.List.type)
}
inline ::substrait::Type* PROTOBUF_NULLABLE Type_List::release_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::substrait::Type* released = _impl_.type_;
  _impl_.type_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::substrait::Type* PROTOBUF_NULLABLE Type_List::unsafe_arena_release_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:substrait.Type.List.type)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::substrait::Type* temp = _impl_.type_;
  _impl_.type_ = nullptr;
  return temp;
}
inline ::substrait::Type* PROTOBUF_NONNULL Type_List::_internal_mutable_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.type_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::substrait::Type>(GetArena());
    _impl_.type_ = reinterpret_cast<::substrait::Type*>(p);
  }
  return _impl_.type_;
}
inline ::substrait::Type* PROTOBUF_NONNULL Type_List::mutable_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::substrait::Type* _msg = _internal_mutable_type();
  // @@protoc_insertion_point(field_mutable:substrait.Type.List.type)
  return _msg;
}
inline void Type_List::set_allocated_type(::substrait::Type* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.type_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.type_ = reinterpret_cast<::substrait::Type*>(value);
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.List.type)
}

// uint32 type_variation_reference = 2;
inline void Type_List::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t Type_List::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.List.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_List::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.List.type_variation_reference)
}
inline ::uint32_t Type_List::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_List::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 3;
inline void Type_List::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::substrait::Type_Nullability Type_List::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.List.nullability)
  return _internal_nullability();
}
inline void Type_List::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:substrait.Type.List.nullability)
}
inline ::substrait::Type_Nullability Type_List::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_List::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_Map

// .substrait.Type key = 1;
inline bool Type_Map::has_key() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.key_ != nullptr);
  return value;
}
inline void Type_Map::clear_key() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.key_ != nullptr) _impl_.key_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::substrait::Type& Type_Map::_internal_key() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::substrait::Type* p = _impl_.key_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type>(&::substrait::Type_globals_);
}
inline const ::substrait::Type& Type_Map::key() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.Map.key)
  return _internal_key();
}
inline void Type_Map::unsafe_arena_set_allocated_key(
    ::substrait::Type* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.key_);
  }
  _impl_.key_ = reinterpret_cast<::substrait::Type*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.Map.key)
}
inline ::substrait::Type* PROTOBUF_NULLABLE Type_Map::release_key() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::substrait::Type* released = _impl_.key_;
  _impl_.key_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::substrait::Type* PROTOBUF_NULLABLE Type_Map::unsafe_arena_release_key() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:substrait.Type.Map.key)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::substrait::Type* temp = _impl_.key_;
  _impl_.key_ = nullptr;
  return temp;
}
inline ::substrait::Type* PROTOBUF_NONNULL Type_Map::_internal_mutable_key() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.key_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::substrait::Type>(GetArena());
    _impl_.key_ = reinterpret_cast<::substrait::Type*>(p);
  }
  return _impl_.key_;
}
inline ::substrait::Type* PROTOBUF_NONNULL Type_Map::mutable_key()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::substrait::Type* _msg = _internal_mutable_key();
  // @@protoc_insertion_point(field_mutable:substrait.Type.Map.key)
  return _msg;
}
inline void Type_Map::set_allocated_key(::substrait::Type* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.key_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.key_ = reinterpret_cast<::substrait::Type*>(value);
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.Map.key)
}

// .substrait.Type value = 2;
inline bool Type_Map::has_value() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.value_ != nullptr);
  return value;
}
inline void Type_Map::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.value_ != nullptr) _impl_.value_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::substrait::Type& Type_Map::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::substrait::Type* p = _impl_.value_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type>(&::substrait::Type_globals_);
}
inline const ::substrait::Type& Type_Map::value() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.Map.value)
  return _internal_value();
}
inline void Type_Map::unsafe_arena_set_allocated_value(
    ::substrait::Type* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.value_);
  }
  _impl_.value_ = reinterpret_cast<::substrait::Type*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.Map.value)
}
inline ::substrait::Type* PROTOBUF_NULLABLE Type_Map::release_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::substrait::Type* released = _impl_.value_;
  _impl_.value_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::substrait::Type* PROTOBUF_NULLABLE Type_Map::unsafe_arena_release_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:substrait.Type.Map.value)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::substrait::Type* temp = _impl_.value_;
  _impl_.value_ = nullptr;
  return temp;
}
inline ::substrait::Type* PROTOBUF_NONNULL Type_Map::_internal_mutable_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.value_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::substrait::Type>(GetArena());
    _impl_.value_ = reinterpret_cast<::substrait::Type*>(p);
  }
  return _impl_.value_;
}
inline ::substrait::Type* PROTOBUF_NONNULL Type_Map::mutable_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::substrait::Type* _msg = _internal_mutable_value();
  // @@protoc_insertion_point(field_mutable:substrait.Type.Map.value)
  return _msg;
}
inline void Type_Map::set_allocated_value(::substrait::Type* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.value_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.value_ = reinterpret_cast<::substrait::Type*>(value);
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.Map.value)
}

// uint32 type_variation_reference = 3;
inline void Type_Map::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t Type_Map::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Map.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_Map::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:substrait.Type.Map.type_variation_reference)
}
inline ::uint32_t Type_Map::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_Map::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 4;
inline void Type_Map::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::substrait::Type_Nullability Type_Map::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Map.nullability)
  return _internal_nullability();
}
inline void Type_Map::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:substrait.Type.Map.nullability)
}
inline ::substrait::Type_Nullability Type_Map::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_Map::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

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

// Type_UserDefined

// uint32 type_reference = 1;
inline void Type_UserDefined::clear_type_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t Type_UserDefined::type_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.UserDefined.type_reference)
  return _internal_type_reference();
}
inline void Type_UserDefined::set_type_reference(::uint32_t value) {
  _internal_set_type_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:substrait.Type.UserDefined.type_reference)
}
inline ::uint32_t Type_UserDefined::_internal_type_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_reference_;
}
inline void Type_UserDefined::_internal_set_type_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_reference_ = value;
}

// uint32 type_variation_reference = 2;
inline void Type_UserDefined::clear_type_variation_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t Type_UserDefined::type_variation_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.UserDefined.type_variation_reference)
  return _internal_type_variation_reference();
}
inline void Type_UserDefined::set_type_variation_reference(::uint32_t value) {
  _internal_set_type_variation_reference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:substrait.Type.UserDefined.type_variation_reference)
}
inline ::uint32_t Type_UserDefined::_internal_type_variation_reference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_variation_reference_;
}
inline void Type_UserDefined::_internal_set_type_variation_reference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_variation_reference_ = value;
}

// .substrait.Type.Nullability nullability = 3;
inline void Type_UserDefined::clear_nullability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::substrait::Type_Nullability Type_UserDefined::nullability() const {
  // @@protoc_insertion_point(field_get:substrait.Type.UserDefined.nullability)
  return _internal_nullability();
}
inline void Type_UserDefined::set_nullability(::substrait::Type_Nullability value) {
  _internal_set_nullability(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:substrait.Type.UserDefined.nullability)
}
inline ::substrait::Type_Nullability Type_UserDefined::_internal_nullability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::substrait::Type_Nullability>(_impl_.nullability_);
}
inline void Type_UserDefined::_internal_set_nullability(::substrait::Type_Nullability value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nullability_ = value;
}

// repeated .substrait.Type.Parameter type_parameters = 4;
inline int Type_UserDefined::_internal_type_parameters_size() const {
  return _internal_type_parameters().size();
}
inline int Type_UserDefined::type_parameters_size() const {
  return _internal_type_parameters_size();
}
inline void Type_UserDefined::clear_type_parameters() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_parameters_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::substrait::Type_Parameter& Type_UserDefined::type_parameters(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.UserDefined.type_parameters)
  return _internal_type_parameters().Get(index);
}
inline ::substrait::Type_Parameter* PROTOBUF_NONNULL Type_UserDefined::mutable_type_parameters(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:substrait.Type.UserDefined.type_parameters)
  return _internal_mutable_type_parameters()->Mutable(index);
}
inline ::substrait::Type_Parameter* PROTOBUF_NONNULL Type_UserDefined::add_type_parameters()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::substrait::Type_Parameter* _add =
      _internal_mutable_type_parameters()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:substrait.Type.UserDefined.type_parameters)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::substrait::Type_Parameter>& Type_UserDefined::type_parameters() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:substrait.Type.UserDefined.type_parameters)
  return _internal_type_parameters();
}
inline ::google::protobuf::RepeatedPtrField<::substrait::Type_Parameter>* PROTOBUF_NONNULL
Type_UserDefined::mutable_type_parameters() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:substrait.Type.UserDefined.type_parameters)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_type_parameters();
}
inline const ::google::protobuf::RepeatedPtrField<::substrait::Type_Parameter>&
Type_UserDefined::_internal_type_parameters() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_parameters_;
}
inline ::google::protobuf::RepeatedPtrField<::substrait::Type_Parameter>* PROTOBUF_NONNULL
Type_UserDefined::_internal_mutable_type_parameters() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.type_parameters_;
}

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

// Type_Parameter

// .google.protobuf.Empty null = 1;
inline bool Type_Parameter::has_null() const {
  return parameter_case() == kNull;
}
inline bool Type_Parameter::_internal_has_null() const {
  return parameter_case() == kNull;
}
inline void Type_Parameter::set_has_null() {
  _impl_._oneof_case_[0] = kNull;
}
inline ::google::protobuf::Empty* PROTOBUF_NULLABLE Type_Parameter::release_null() {
  // @@protoc_insertion_point(field_release:substrait.Type.Parameter.null)
  if (parameter_case() == kNull) {
    clear_has_parameter();
    auto* temp = _impl_.parameter_.null_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.parameter_.null_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::protobuf::Empty& Type_Parameter::_internal_null() const {
  return parameter_case() == kNull ? static_cast<const ::google::protobuf::Empty&>(*_impl_.parameter_.null_)
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Empty>(&::google::protobuf::Empty_globals_);
}
inline const ::google::protobuf::Empty& Type_Parameter::null() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.Parameter.null)
  return _internal_null();
}
inline ::google::protobuf::Empty* PROTOBUF_NULLABLE Type_Parameter::unsafe_arena_release_null() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.Parameter.null)
  if (parameter_case() == kNull) {
    clear_has_parameter();
    auto* temp = _impl_.parameter_.null_;
    _impl_.parameter_.null_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type_Parameter::unsafe_arena_set_allocated_null(
    ::google::protobuf::Empty* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_parameter();
  if (value) {
    set_has_null();
    _impl_.parameter_.null_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.Parameter.null)
}
inline ::google::protobuf::Empty* PROTOBUF_NONNULL Type_Parameter::_internal_mutable_null() {
  if (parameter_case() != kNull) {
    clear_parameter();
    set_has_null();
    _impl_.parameter_.null_ = 
        ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Empty>(GetArena());
  }
  return _impl_.parameter_.null_;
}
inline ::google::protobuf::Empty* PROTOBUF_NONNULL Type_Parameter::mutable_null()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Empty* _msg = _internal_mutable_null();
  // @@protoc_insertion_point(field_mutable:substrait.Type.Parameter.null)
  return _msg;
}

// .substrait.Type data_type = 2;
inline bool Type_Parameter::has_data_type() const {
  return parameter_case() == kDataType;
}
inline bool Type_Parameter::_internal_has_data_type() const {
  return parameter_case() == kDataType;
}
inline void Type_Parameter::set_has_data_type() {
  _impl_._oneof_case_[0] = kDataType;
}
inline void Type_Parameter::clear_data_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (parameter_case() == kDataType) {
    if (GetArena() == nullptr) {
      delete _impl_.parameter_.data_type_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.parameter_.data_type_);
    }
    clear_has_parameter();
  }
}
inline ::substrait::Type* PROTOBUF_NULLABLE Type_Parameter::release_data_type() {
  // @@protoc_insertion_point(field_release:substrait.Type.Parameter.data_type)
  if (parameter_case() == kDataType) {
    clear_has_parameter();
    auto* temp = _impl_.parameter_.data_type_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.parameter_.data_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type& Type_Parameter::_internal_data_type() const {
  return parameter_case() == kDataType ? static_cast<const ::substrait::Type&>(*_impl_.parameter_.data_type_)
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type>(&::substrait::Type_globals_);
}
inline const ::substrait::Type& Type_Parameter::data_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.Parameter.data_type)
  return _internal_data_type();
}
inline ::substrait::Type* PROTOBUF_NULLABLE Type_Parameter::unsafe_arena_release_data_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.Parameter.data_type)
  if (parameter_case() == kDataType) {
    clear_has_parameter();
    auto* temp = _impl_.parameter_.data_type_;
    _impl_.parameter_.data_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type_Parameter::unsafe_arena_set_allocated_data_type(
    ::substrait::Type* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_parameter();
  if (value) {
    set_has_data_type();
    _impl_.parameter_.data_type_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.Parameter.data_type)
}
inline ::substrait::Type* PROTOBUF_NONNULL Type_Parameter::_internal_mutable_data_type() {
  if (parameter_case() != kDataType) {
    clear_parameter();
    set_has_data_type();
    _impl_.parameter_.data_type_ = 
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type>(GetArena());
  }
  return _impl_.parameter_.data_type_;
}
inline ::substrait::Type* PROTOBUF_NONNULL Type_Parameter::mutable_data_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type* _msg = _internal_mutable_data_type();
  // @@protoc_insertion_point(field_mutable:substrait.Type.Parameter.data_type)
  return _msg;
}

// bool boolean = 3;
inline bool Type_Parameter::has_boolean() const {
  return parameter_case() == kBoolean;
}
inline void Type_Parameter::set_has_boolean() {
  _impl_._oneof_case_[0] = kBoolean;
}
inline void Type_Parameter::clear_boolean() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (parameter_case() == kBoolean) {
    _impl_.parameter_.boolean_ = false;
    clear_has_parameter();
  }
}
inline bool Type_Parameter::boolean() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Parameter.boolean)
  return _internal_boolean();
}
inline void Type_Parameter::set_boolean(bool value) {
  if (parameter_case() != kBoolean) {
    clear_parameter();
    set_has_boolean();
  }
  _impl_.parameter_.boolean_ = value;
  // @@protoc_insertion_point(field_set:substrait.Type.Parameter.boolean)
}
inline bool Type_Parameter::_internal_boolean() const {
  if (parameter_case() == kBoolean) {
    return _impl_.parameter_.boolean_;
  }
  return false;
}

// int64 integer = 4;
inline bool Type_Parameter::has_integer() const {
  return parameter_case() == kInteger;
}
inline void Type_Parameter::set_has_integer() {
  _impl_._oneof_case_[0] = kInteger;
}
inline void Type_Parameter::clear_integer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (parameter_case() == kInteger) {
    _impl_.parameter_.integer_ = ::int64_t{0};
    clear_has_parameter();
  }
}
inline ::int64_t Type_Parameter::integer() const {
  // @@protoc_insertion_point(field_get:substrait.Type.Parameter.integer)
  return _internal_integer();
}
inline void Type_Parameter::set_integer(::int64_t value) {
  if (parameter_case() != kInteger) {
    clear_parameter();
    set_has_integer();
  }
  _impl_.parameter_.integer_ = value;
  // @@protoc_insertion_point(field_set:substrait.Type.Parameter.integer)
}
inline ::int64_t Type_Parameter::_internal_integer() const {
  if (parameter_case() == kInteger) {
    return _impl_.parameter_.integer_;
  }
  return ::int64_t{0};
}

// string enum = 5;
inline bool Type_Parameter::has_enum_() const {
  return parameter_case() == kEnum;
}
inline void Type_Parameter::set_has_enum_() {
  _impl_._oneof_case_[0] = kEnum;
}
inline void Type_Parameter::clear_enum_() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (parameter_case() == kEnum) {
    _impl_.parameter_.enum__.Destroy();
    clear_has_parameter();
  }
}
inline const ::std::string& Type_Parameter::enum_() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.Parameter.enum)
  return _internal_enum_();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Type_Parameter::set_enum_(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (parameter_case() != kEnum) {
    clear_parameter();

    set_has_enum_();
    _impl_.parameter_.enum__.InitDefault();
  }
  _impl_.parameter_.enum__.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:substrait.Type.Parameter.enum)
}
inline ::std::string* PROTOBUF_NONNULL Type_Parameter::mutable_enum_()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  if (parameter_case() != kEnum) {
    clear_parameter();

    set_has_enum_();
    _impl_.parameter_.enum__.InitDefault();
  }
  ::std::string* _s = _internal_mutable_enum_();
  // @@protoc_insertion_point(field_mutable:substrait.Type.Parameter.enum)
  return _s;
}
inline const ::std::string& Type_Parameter::_internal_enum_() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  if (parameter_case() != kEnum) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.parameter_.enum__.Get();
}
inline void Type_Parameter::_internal_set_enum_(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_.enum__.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Type_Parameter::_internal_mutable_enum_() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.parameter_.enum__.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Type_Parameter::release_enum_() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:substrait.Type.Parameter.enum)
  if (parameter_case() != kEnum) {
    return nullptr;
  }
  clear_has_parameter();
  return _impl_.parameter_.enum__.Release();
}
inline void Type_Parameter::set_allocated_enum_(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (has_parameter()) {
    clear_parameter();
  }
  if (value != nullptr) {
    set_has_enum_();
    _impl_.parameter_.enum__.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.Parameter.enum)
}

// string string = 6;
inline bool Type_Parameter::has_string() const {
  return parameter_case() == kString;
}
inline void Type_Parameter::set_has_string() {
  _impl_._oneof_case_[0] = kString;
}
inline void Type_Parameter::clear_string() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (parameter_case() == kString) {
    _impl_.parameter_.string_.Destroy();
    clear_has_parameter();
  }
}
inline const ::std::string& Type_Parameter::string() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.Parameter.string)
  return _internal_string();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Type_Parameter::set_string(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (parameter_case() != kString) {
    clear_parameter();

    set_has_string();
    _impl_.parameter_.string_.InitDefault();
  }
  _impl_.parameter_.string_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:substrait.Type.Parameter.string)
}
inline ::std::string* PROTOBUF_NONNULL Type_Parameter::mutable_string()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  if (parameter_case() != kString) {
    clear_parameter();

    set_has_string();
    _impl_.parameter_.string_.InitDefault();
  }
  ::std::string* _s = _internal_mutable_string();
  // @@protoc_insertion_point(field_mutable:substrait.Type.Parameter.string)
  return _s;
}
inline const ::std::string& Type_Parameter::_internal_string() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  if (parameter_case() != kString) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.parameter_.string_.Get();
}
inline void Type_Parameter::_internal_set_string(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.parameter_.string_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Type_Parameter::_internal_mutable_string() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.parameter_.string_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Type_Parameter::release_string() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:substrait.Type.Parameter.string)
  if (parameter_case() != kString) {
    return nullptr;
  }
  clear_has_parameter();
  return _impl_.parameter_.string_.Release();
}
inline void Type_Parameter::set_allocated_string(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (has_parameter()) {
    clear_parameter();
  }
  if (value != nullptr) {
    set_has_string();
    _impl_.parameter_.string_.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:substrait.Type.Parameter.string)
}

inline bool Type_Parameter::has_parameter() const {
  return parameter_case() != PARAMETER_NOT_SET;
}
inline void Type_Parameter::clear_has_parameter() {
  _impl_._oneof_case_[0] = PARAMETER_NOT_SET;
}
inline Type_Parameter::ParameterCase Type_Parameter::parameter_case() const {
  return Type_Parameter::ParameterCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// Type

// .substrait.Type.Boolean bool = 1;
inline bool Type::has_bool_() const {
  return kind_case() == kBool;
}
inline bool Type::_internal_has_bool_() const {
  return kind_case() == kBool;
}
inline void Type::set_has_bool_() {
  _impl_._oneof_case_[0] = kBool;
}
inline void Type::clear_bool_() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kBool) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.bool__;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.bool__);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_Boolean* PROTOBUF_NULLABLE Type::release_bool_() {
  // @@protoc_insertion_point(field_release:substrait.Type.bool)
  if (kind_case() == kBool) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Boolean*>(_impl_.kind_.bool__);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.bool__ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_Boolean& Type::_internal_bool_() const {
  return kind_case() == kBool ? static_cast<const ::substrait::Type_Boolean&>(*reinterpret_cast<::substrait::Type_Boolean*>(_impl_.kind_.bool__))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_Boolean>(&::substrait::Type_Boolean_globals_);
}
inline const ::substrait::Type_Boolean& Type::bool_() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.bool)
  return _internal_bool_();
}
inline ::substrait::Type_Boolean* PROTOBUF_NULLABLE Type::unsafe_arena_release_bool_() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.bool)
  if (kind_case() == kBool) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Boolean*>(_impl_.kind_.bool__);
    _impl_.kind_.bool__ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_bool_(
    ::substrait::Type_Boolean* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_bool_();
    _impl_.kind_.bool__ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.bool)
}
inline ::substrait::Type_Boolean* PROTOBUF_NONNULL Type::_internal_mutable_bool_() {
  if (kind_case() != kBool) {
    clear_kind();
    set_has_bool_();
    _impl_.kind_.bool__ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_Boolean>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_Boolean*>(_impl_.kind_.bool__);
}
inline ::substrait::Type_Boolean* PROTOBUF_NONNULL Type::mutable_bool_()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_Boolean* _msg = _internal_mutable_bool_();
  // @@protoc_insertion_point(field_mutable:substrait.Type.bool)
  return _msg;
}

// .substrait.Type.I8 i8 = 2;
inline bool Type::has_i8() const {
  return kind_case() == kI8;
}
inline bool Type::_internal_has_i8() const {
  return kind_case() == kI8;
}
inline void Type::set_has_i8() {
  _impl_._oneof_case_[0] = kI8;
}
inline void Type::clear_i8() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kI8) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.i8_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.i8_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_I8* PROTOBUF_NULLABLE Type::release_i8() {
  // @@protoc_insertion_point(field_release:substrait.Type.i8)
  if (kind_case() == kI8) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_I8*>(_impl_.kind_.i8_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.i8_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_I8& Type::_internal_i8() const {
  return kind_case() == kI8 ? static_cast<const ::substrait::Type_I8&>(*reinterpret_cast<::substrait::Type_I8*>(_impl_.kind_.i8_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_I8>(&::substrait::Type_I8_globals_);
}
inline const ::substrait::Type_I8& Type::i8() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.i8)
  return _internal_i8();
}
inline ::substrait::Type_I8* PROTOBUF_NULLABLE Type::unsafe_arena_release_i8() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.i8)
  if (kind_case() == kI8) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_I8*>(_impl_.kind_.i8_);
    _impl_.kind_.i8_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_i8(
    ::substrait::Type_I8* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_i8();
    _impl_.kind_.i8_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.i8)
}
inline ::substrait::Type_I8* PROTOBUF_NONNULL Type::_internal_mutable_i8() {
  if (kind_case() != kI8) {
    clear_kind();
    set_has_i8();
    _impl_.kind_.i8_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_I8>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_I8*>(_impl_.kind_.i8_);
}
inline ::substrait::Type_I8* PROTOBUF_NONNULL Type::mutable_i8()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_I8* _msg = _internal_mutable_i8();
  // @@protoc_insertion_point(field_mutable:substrait.Type.i8)
  return _msg;
}

// .substrait.Type.I16 i16 = 3;
inline bool Type::has_i16() const {
  return kind_case() == kI16;
}
inline bool Type::_internal_has_i16() const {
  return kind_case() == kI16;
}
inline void Type::set_has_i16() {
  _impl_._oneof_case_[0] = kI16;
}
inline void Type::clear_i16() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kI16) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.i16_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.i16_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_I16* PROTOBUF_NULLABLE Type::release_i16() {
  // @@protoc_insertion_point(field_release:substrait.Type.i16)
  if (kind_case() == kI16) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_I16*>(_impl_.kind_.i16_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.i16_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_I16& Type::_internal_i16() const {
  return kind_case() == kI16 ? static_cast<const ::substrait::Type_I16&>(*reinterpret_cast<::substrait::Type_I16*>(_impl_.kind_.i16_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_I16>(&::substrait::Type_I16_globals_);
}
inline const ::substrait::Type_I16& Type::i16() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.i16)
  return _internal_i16();
}
inline ::substrait::Type_I16* PROTOBUF_NULLABLE Type::unsafe_arena_release_i16() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.i16)
  if (kind_case() == kI16) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_I16*>(_impl_.kind_.i16_);
    _impl_.kind_.i16_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_i16(
    ::substrait::Type_I16* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_i16();
    _impl_.kind_.i16_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.i16)
}
inline ::substrait::Type_I16* PROTOBUF_NONNULL Type::_internal_mutable_i16() {
  if (kind_case() != kI16) {
    clear_kind();
    set_has_i16();
    _impl_.kind_.i16_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_I16>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_I16*>(_impl_.kind_.i16_);
}
inline ::substrait::Type_I16* PROTOBUF_NONNULL Type::mutable_i16()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_I16* _msg = _internal_mutable_i16();
  // @@protoc_insertion_point(field_mutable:substrait.Type.i16)
  return _msg;
}

// .substrait.Type.I32 i32 = 5;
inline bool Type::has_i32() const {
  return kind_case() == kI32;
}
inline bool Type::_internal_has_i32() const {
  return kind_case() == kI32;
}
inline void Type::set_has_i32() {
  _impl_._oneof_case_[0] = kI32;
}
inline void Type::clear_i32() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kI32) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.i32_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.i32_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_I32* PROTOBUF_NULLABLE Type::release_i32() {
  // @@protoc_insertion_point(field_release:substrait.Type.i32)
  if (kind_case() == kI32) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_I32*>(_impl_.kind_.i32_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.i32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_I32& Type::_internal_i32() const {
  return kind_case() == kI32 ? static_cast<const ::substrait::Type_I32&>(*reinterpret_cast<::substrait::Type_I32*>(_impl_.kind_.i32_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_I32>(&::substrait::Type_I32_globals_);
}
inline const ::substrait::Type_I32& Type::i32() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.i32)
  return _internal_i32();
}
inline ::substrait::Type_I32* PROTOBUF_NULLABLE Type::unsafe_arena_release_i32() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.i32)
  if (kind_case() == kI32) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_I32*>(_impl_.kind_.i32_);
    _impl_.kind_.i32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_i32(
    ::substrait::Type_I32* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_i32();
    _impl_.kind_.i32_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.i32)
}
inline ::substrait::Type_I32* PROTOBUF_NONNULL Type::_internal_mutable_i32() {
  if (kind_case() != kI32) {
    clear_kind();
    set_has_i32();
    _impl_.kind_.i32_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_I32>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_I32*>(_impl_.kind_.i32_);
}
inline ::substrait::Type_I32* PROTOBUF_NONNULL Type::mutable_i32()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_I32* _msg = _internal_mutable_i32();
  // @@protoc_insertion_point(field_mutable:substrait.Type.i32)
  return _msg;
}

// .substrait.Type.I64 i64 = 7;
inline bool Type::has_i64() const {
  return kind_case() == kI64;
}
inline bool Type::_internal_has_i64() const {
  return kind_case() == kI64;
}
inline void Type::set_has_i64() {
  _impl_._oneof_case_[0] = kI64;
}
inline void Type::clear_i64() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kI64) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.i64_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.i64_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_I64* PROTOBUF_NULLABLE Type::release_i64() {
  // @@protoc_insertion_point(field_release:substrait.Type.i64)
  if (kind_case() == kI64) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_I64*>(_impl_.kind_.i64_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.i64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_I64& Type::_internal_i64() const {
  return kind_case() == kI64 ? static_cast<const ::substrait::Type_I64&>(*reinterpret_cast<::substrait::Type_I64*>(_impl_.kind_.i64_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_I64>(&::substrait::Type_I64_globals_);
}
inline const ::substrait::Type_I64& Type::i64() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.i64)
  return _internal_i64();
}
inline ::substrait::Type_I64* PROTOBUF_NULLABLE Type::unsafe_arena_release_i64() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.i64)
  if (kind_case() == kI64) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_I64*>(_impl_.kind_.i64_);
    _impl_.kind_.i64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_i64(
    ::substrait::Type_I64* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_i64();
    _impl_.kind_.i64_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.i64)
}
inline ::substrait::Type_I64* PROTOBUF_NONNULL Type::_internal_mutable_i64() {
  if (kind_case() != kI64) {
    clear_kind();
    set_has_i64();
    _impl_.kind_.i64_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_I64>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_I64*>(_impl_.kind_.i64_);
}
inline ::substrait::Type_I64* PROTOBUF_NONNULL Type::mutable_i64()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_I64* _msg = _internal_mutable_i64();
  // @@protoc_insertion_point(field_mutable:substrait.Type.i64)
  return _msg;
}

// .substrait.Type.FP32 fp32 = 10;
inline bool Type::has_fp32() const {
  return kind_case() == kFp32;
}
inline bool Type::_internal_has_fp32() const {
  return kind_case() == kFp32;
}
inline void Type::set_has_fp32() {
  _impl_._oneof_case_[0] = kFp32;
}
inline void Type::clear_fp32() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kFp32) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.fp32_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.fp32_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_FP32* PROTOBUF_NULLABLE Type::release_fp32() {
  // @@protoc_insertion_point(field_release:substrait.Type.fp32)
  if (kind_case() == kFp32) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_FP32*>(_impl_.kind_.fp32_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.fp32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_FP32& Type::_internal_fp32() const {
  return kind_case() == kFp32 ? static_cast<const ::substrait::Type_FP32&>(*reinterpret_cast<::substrait::Type_FP32*>(_impl_.kind_.fp32_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_FP32>(&::substrait::Type_FP32_globals_);
}
inline const ::substrait::Type_FP32& Type::fp32() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.fp32)
  return _internal_fp32();
}
inline ::substrait::Type_FP32* PROTOBUF_NULLABLE Type::unsafe_arena_release_fp32() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.fp32)
  if (kind_case() == kFp32) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_FP32*>(_impl_.kind_.fp32_);
    _impl_.kind_.fp32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_fp32(
    ::substrait::Type_FP32* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_fp32();
    _impl_.kind_.fp32_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.fp32)
}
inline ::substrait::Type_FP32* PROTOBUF_NONNULL Type::_internal_mutable_fp32() {
  if (kind_case() != kFp32) {
    clear_kind();
    set_has_fp32();
    _impl_.kind_.fp32_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_FP32>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_FP32*>(_impl_.kind_.fp32_);
}
inline ::substrait::Type_FP32* PROTOBUF_NONNULL Type::mutable_fp32()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_FP32* _msg = _internal_mutable_fp32();
  // @@protoc_insertion_point(field_mutable:substrait.Type.fp32)
  return _msg;
}

// .substrait.Type.FP64 fp64 = 11;
inline bool Type::has_fp64() const {
  return kind_case() == kFp64;
}
inline bool Type::_internal_has_fp64() const {
  return kind_case() == kFp64;
}
inline void Type::set_has_fp64() {
  _impl_._oneof_case_[0] = kFp64;
}
inline void Type::clear_fp64() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kFp64) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.fp64_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.fp64_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_FP64* PROTOBUF_NULLABLE Type::release_fp64() {
  // @@protoc_insertion_point(field_release:substrait.Type.fp64)
  if (kind_case() == kFp64) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_FP64*>(_impl_.kind_.fp64_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.fp64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_FP64& Type::_internal_fp64() const {
  return kind_case() == kFp64 ? static_cast<const ::substrait::Type_FP64&>(*reinterpret_cast<::substrait::Type_FP64*>(_impl_.kind_.fp64_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_FP64>(&::substrait::Type_FP64_globals_);
}
inline const ::substrait::Type_FP64& Type::fp64() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.fp64)
  return _internal_fp64();
}
inline ::substrait::Type_FP64* PROTOBUF_NULLABLE Type::unsafe_arena_release_fp64() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.fp64)
  if (kind_case() == kFp64) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_FP64*>(_impl_.kind_.fp64_);
    _impl_.kind_.fp64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_fp64(
    ::substrait::Type_FP64* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_fp64();
    _impl_.kind_.fp64_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.fp64)
}
inline ::substrait::Type_FP64* PROTOBUF_NONNULL Type::_internal_mutable_fp64() {
  if (kind_case() != kFp64) {
    clear_kind();
    set_has_fp64();
    _impl_.kind_.fp64_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_FP64>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_FP64*>(_impl_.kind_.fp64_);
}
inline ::substrait::Type_FP64* PROTOBUF_NONNULL Type::mutable_fp64()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_FP64* _msg = _internal_mutable_fp64();
  // @@protoc_insertion_point(field_mutable:substrait.Type.fp64)
  return _msg;
}

// .substrait.Type.String string = 12;
inline bool Type::has_string() const {
  return kind_case() == kString;
}
inline bool Type::_internal_has_string() const {
  return kind_case() == kString;
}
inline void Type::set_has_string() {
  _impl_._oneof_case_[0] = kString;
}
inline void Type::clear_string() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kString) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.string_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.string_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_String* PROTOBUF_NULLABLE Type::release_string() {
  // @@protoc_insertion_point(field_release:substrait.Type.string)
  if (kind_case() == kString) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_String*>(_impl_.kind_.string_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.string_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_String& Type::_internal_string() const {
  return kind_case() == kString ? static_cast<const ::substrait::Type_String&>(*reinterpret_cast<::substrait::Type_String*>(_impl_.kind_.string_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_String>(&::substrait::Type_String_globals_);
}
inline const ::substrait::Type_String& Type::string() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.string)
  return _internal_string();
}
inline ::substrait::Type_String* PROTOBUF_NULLABLE Type::unsafe_arena_release_string() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.string)
  if (kind_case() == kString) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_String*>(_impl_.kind_.string_);
    _impl_.kind_.string_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_string(
    ::substrait::Type_String* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_string();
    _impl_.kind_.string_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.string)
}
inline ::substrait::Type_String* PROTOBUF_NONNULL Type::_internal_mutable_string() {
  if (kind_case() != kString) {
    clear_kind();
    set_has_string();
    _impl_.kind_.string_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_String>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_String*>(_impl_.kind_.string_);
}
inline ::substrait::Type_String* PROTOBUF_NONNULL Type::mutable_string()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_String* _msg = _internal_mutable_string();
  // @@protoc_insertion_point(field_mutable:substrait.Type.string)
  return _msg;
}

// .substrait.Type.Binary binary = 13;
inline bool Type::has_binary() const {
  return kind_case() == kBinary;
}
inline bool Type::_internal_has_binary() const {
  return kind_case() == kBinary;
}
inline void Type::set_has_binary() {
  _impl_._oneof_case_[0] = kBinary;
}
inline void Type::clear_binary() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kBinary) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.binary_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.binary_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_Binary* PROTOBUF_NULLABLE Type::release_binary() {
  // @@protoc_insertion_point(field_release:substrait.Type.binary)
  if (kind_case() == kBinary) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Binary*>(_impl_.kind_.binary_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.binary_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_Binary& Type::_internal_binary() const {
  return kind_case() == kBinary ? static_cast<const ::substrait::Type_Binary&>(*reinterpret_cast<::substrait::Type_Binary*>(_impl_.kind_.binary_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_Binary>(&::substrait::Type_Binary_globals_);
}
inline const ::substrait::Type_Binary& Type::binary() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.binary)
  return _internal_binary();
}
inline ::substrait::Type_Binary* PROTOBUF_NULLABLE Type::unsafe_arena_release_binary() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.binary)
  if (kind_case() == kBinary) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Binary*>(_impl_.kind_.binary_);
    _impl_.kind_.binary_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_binary(
    ::substrait::Type_Binary* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_binary();
    _impl_.kind_.binary_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.binary)
}
inline ::substrait::Type_Binary* PROTOBUF_NONNULL Type::_internal_mutable_binary() {
  if (kind_case() != kBinary) {
    clear_kind();
    set_has_binary();
    _impl_.kind_.binary_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_Binary>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_Binary*>(_impl_.kind_.binary_);
}
inline ::substrait::Type_Binary* PROTOBUF_NONNULL Type::mutable_binary()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_Binary* _msg = _internal_mutable_binary();
  // @@protoc_insertion_point(field_mutable:substrait.Type.binary)
  return _msg;
}

// .substrait.Type.Timestamp timestamp = 14 [deprecated = true];
inline bool Type::has_timestamp() const {
  return kind_case() == kTimestamp;
}
inline bool Type::_internal_has_timestamp() const {
  return kind_case() == kTimestamp;
}
inline void Type::set_has_timestamp() {
  _impl_._oneof_case_[0] = kTimestamp;
}
inline void Type::clear_timestamp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kTimestamp) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.timestamp_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.timestamp_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_Timestamp* PROTOBUF_NULLABLE Type::release_timestamp() {
  // @@protoc_insertion_point(field_release:substrait.Type.timestamp)
  if (kind_case() == kTimestamp) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Timestamp*>(_impl_.kind_.timestamp_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.timestamp_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_Timestamp& Type::_internal_timestamp() const {
  return kind_case() == kTimestamp ? static_cast<const ::substrait::Type_Timestamp&>(*reinterpret_cast<::substrait::Type_Timestamp*>(_impl_.kind_.timestamp_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_Timestamp>(&::substrait::Type_Timestamp_globals_);
}
inline const ::substrait::Type_Timestamp& Type::timestamp() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.timestamp)
  return _internal_timestamp();
}
inline ::substrait::Type_Timestamp* PROTOBUF_NULLABLE Type::unsafe_arena_release_timestamp() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.timestamp)
  if (kind_case() == kTimestamp) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Timestamp*>(_impl_.kind_.timestamp_);
    _impl_.kind_.timestamp_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_timestamp(
    ::substrait::Type_Timestamp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_timestamp();
    _impl_.kind_.timestamp_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.timestamp)
}
inline ::substrait::Type_Timestamp* PROTOBUF_NONNULL Type::_internal_mutable_timestamp() {
  if (kind_case() != kTimestamp) {
    clear_kind();
    set_has_timestamp();
    _impl_.kind_.timestamp_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_Timestamp>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_Timestamp*>(_impl_.kind_.timestamp_);
}
inline ::substrait::Type_Timestamp* PROTOBUF_NONNULL Type::mutable_timestamp()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_Timestamp* _msg = _internal_mutable_timestamp();
  // @@protoc_insertion_point(field_mutable:substrait.Type.timestamp)
  return _msg;
}

// .substrait.Type.Date date = 16;
inline bool Type::has_date() const {
  return kind_case() == kDate;
}
inline bool Type::_internal_has_date() const {
  return kind_case() == kDate;
}
inline void Type::set_has_date() {
  _impl_._oneof_case_[0] = kDate;
}
inline void Type::clear_date() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kDate) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.date_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.date_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_Date* PROTOBUF_NULLABLE Type::release_date() {
  // @@protoc_insertion_point(field_release:substrait.Type.date)
  if (kind_case() == kDate) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Date*>(_impl_.kind_.date_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.date_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_Date& Type::_internal_date() const {
  return kind_case() == kDate ? static_cast<const ::substrait::Type_Date&>(*reinterpret_cast<::substrait::Type_Date*>(_impl_.kind_.date_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_Date>(&::substrait::Type_Date_globals_);
}
inline const ::substrait::Type_Date& Type::date() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.date)
  return _internal_date();
}
inline ::substrait::Type_Date* PROTOBUF_NULLABLE Type::unsafe_arena_release_date() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.date)
  if (kind_case() == kDate) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Date*>(_impl_.kind_.date_);
    _impl_.kind_.date_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_date(
    ::substrait::Type_Date* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_date();
    _impl_.kind_.date_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.date)
}
inline ::substrait::Type_Date* PROTOBUF_NONNULL Type::_internal_mutable_date() {
  if (kind_case() != kDate) {
    clear_kind();
    set_has_date();
    _impl_.kind_.date_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_Date>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_Date*>(_impl_.kind_.date_);
}
inline ::substrait::Type_Date* PROTOBUF_NONNULL Type::mutable_date()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_Date* _msg = _internal_mutable_date();
  // @@protoc_insertion_point(field_mutable:substrait.Type.date)
  return _msg;
}

// .substrait.Type.Time time = 17;
inline bool Type::has_time() const {
  return kind_case() == kTime;
}
inline bool Type::_internal_has_time() const {
  return kind_case() == kTime;
}
inline void Type::set_has_time() {
  _impl_._oneof_case_[0] = kTime;
}
inline void Type::clear_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kTime) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.time_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.time_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_Time* PROTOBUF_NULLABLE Type::release_time() {
  // @@protoc_insertion_point(field_release:substrait.Type.time)
  if (kind_case() == kTime) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Time*>(_impl_.kind_.time_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_Time& Type::_internal_time() const {
  return kind_case() == kTime ? static_cast<const ::substrait::Type_Time&>(*reinterpret_cast<::substrait::Type_Time*>(_impl_.kind_.time_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_Time>(&::substrait::Type_Time_globals_);
}
inline const ::substrait::Type_Time& Type::time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.time)
  return _internal_time();
}
inline ::substrait::Type_Time* PROTOBUF_NULLABLE Type::unsafe_arena_release_time() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.time)
  if (kind_case() == kTime) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Time*>(_impl_.kind_.time_);
    _impl_.kind_.time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_time(
    ::substrait::Type_Time* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_time();
    _impl_.kind_.time_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.time)
}
inline ::substrait::Type_Time* PROTOBUF_NONNULL Type::_internal_mutable_time() {
  if (kind_case() != kTime) {
    clear_kind();
    set_has_time();
    _impl_.kind_.time_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_Time>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_Time*>(_impl_.kind_.time_);
}
inline ::substrait::Type_Time* PROTOBUF_NONNULL Type::mutable_time()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_Time* _msg = _internal_mutable_time();
  // @@protoc_insertion_point(field_mutable:substrait.Type.time)
  return _msg;
}

// .substrait.Type.IntervalYear interval_year = 19;
inline bool Type::has_interval_year() const {
  return kind_case() == kIntervalYear;
}
inline bool Type::_internal_has_interval_year() const {
  return kind_case() == kIntervalYear;
}
inline void Type::set_has_interval_year() {
  _impl_._oneof_case_[0] = kIntervalYear;
}
inline void Type::clear_interval_year() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kIntervalYear) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.interval_year_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.interval_year_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_IntervalYear* PROTOBUF_NULLABLE Type::release_interval_year() {
  // @@protoc_insertion_point(field_release:substrait.Type.interval_year)
  if (kind_case() == kIntervalYear) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_IntervalYear*>(_impl_.kind_.interval_year_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.interval_year_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_IntervalYear& Type::_internal_interval_year() const {
  return kind_case() == kIntervalYear ? static_cast<const ::substrait::Type_IntervalYear&>(*reinterpret_cast<::substrait::Type_IntervalYear*>(_impl_.kind_.interval_year_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_IntervalYear>(&::substrait::Type_IntervalYear_globals_);
}
inline const ::substrait::Type_IntervalYear& Type::interval_year() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.interval_year)
  return _internal_interval_year();
}
inline ::substrait::Type_IntervalYear* PROTOBUF_NULLABLE Type::unsafe_arena_release_interval_year() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.interval_year)
  if (kind_case() == kIntervalYear) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_IntervalYear*>(_impl_.kind_.interval_year_);
    _impl_.kind_.interval_year_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_interval_year(
    ::substrait::Type_IntervalYear* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_interval_year();
    _impl_.kind_.interval_year_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.interval_year)
}
inline ::substrait::Type_IntervalYear* PROTOBUF_NONNULL Type::_internal_mutable_interval_year() {
  if (kind_case() != kIntervalYear) {
    clear_kind();
    set_has_interval_year();
    _impl_.kind_.interval_year_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_IntervalYear>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_IntervalYear*>(_impl_.kind_.interval_year_);
}
inline ::substrait::Type_IntervalYear* PROTOBUF_NONNULL Type::mutable_interval_year()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_IntervalYear* _msg = _internal_mutable_interval_year();
  // @@protoc_insertion_point(field_mutable:substrait.Type.interval_year)
  return _msg;
}

// .substrait.Type.IntervalDay interval_day = 20;
inline bool Type::has_interval_day() const {
  return kind_case() == kIntervalDay;
}
inline bool Type::_internal_has_interval_day() const {
  return kind_case() == kIntervalDay;
}
inline void Type::set_has_interval_day() {
  _impl_._oneof_case_[0] = kIntervalDay;
}
inline void Type::clear_interval_day() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kIntervalDay) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.interval_day_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.interval_day_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_IntervalDay* PROTOBUF_NULLABLE Type::release_interval_day() {
  // @@protoc_insertion_point(field_release:substrait.Type.interval_day)
  if (kind_case() == kIntervalDay) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_IntervalDay*>(_impl_.kind_.interval_day_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.interval_day_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_IntervalDay& Type::_internal_interval_day() const {
  return kind_case() == kIntervalDay ? static_cast<const ::substrait::Type_IntervalDay&>(*reinterpret_cast<::substrait::Type_IntervalDay*>(_impl_.kind_.interval_day_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_IntervalDay>(&::substrait::Type_IntervalDay_globals_);
}
inline const ::substrait::Type_IntervalDay& Type::interval_day() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.interval_day)
  return _internal_interval_day();
}
inline ::substrait::Type_IntervalDay* PROTOBUF_NULLABLE Type::unsafe_arena_release_interval_day() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.interval_day)
  if (kind_case() == kIntervalDay) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_IntervalDay*>(_impl_.kind_.interval_day_);
    _impl_.kind_.interval_day_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_interval_day(
    ::substrait::Type_IntervalDay* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_interval_day();
    _impl_.kind_.interval_day_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.interval_day)
}
inline ::substrait::Type_IntervalDay* PROTOBUF_NONNULL Type::_internal_mutable_interval_day() {
  if (kind_case() != kIntervalDay) {
    clear_kind();
    set_has_interval_day();
    _impl_.kind_.interval_day_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_IntervalDay>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_IntervalDay*>(_impl_.kind_.interval_day_);
}
inline ::substrait::Type_IntervalDay* PROTOBUF_NONNULL Type::mutable_interval_day()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_IntervalDay* _msg = _internal_mutable_interval_day();
  // @@protoc_insertion_point(field_mutable:substrait.Type.interval_day)
  return _msg;
}

// .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true];
inline bool Type::has_timestamp_tz() const {
  return kind_case() == kTimestampTz;
}
inline bool Type::_internal_has_timestamp_tz() const {
  return kind_case() == kTimestampTz;
}
inline void Type::set_has_timestamp_tz() {
  _impl_._oneof_case_[0] = kTimestampTz;
}
inline void Type::clear_timestamp_tz() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kTimestampTz) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.timestamp_tz_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.timestamp_tz_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_TimestampTZ* PROTOBUF_NULLABLE Type::release_timestamp_tz() {
  // @@protoc_insertion_point(field_release:substrait.Type.timestamp_tz)
  if (kind_case() == kTimestampTz) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_TimestampTZ*>(_impl_.kind_.timestamp_tz_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.timestamp_tz_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_TimestampTZ& Type::_internal_timestamp_tz() const {
  return kind_case() == kTimestampTz ? static_cast<const ::substrait::Type_TimestampTZ&>(*reinterpret_cast<::substrait::Type_TimestampTZ*>(_impl_.kind_.timestamp_tz_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_TimestampTZ>(&::substrait::Type_TimestampTZ_globals_);
}
inline const ::substrait::Type_TimestampTZ& Type::timestamp_tz() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.timestamp_tz)
  return _internal_timestamp_tz();
}
inline ::substrait::Type_TimestampTZ* PROTOBUF_NULLABLE Type::unsafe_arena_release_timestamp_tz() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.timestamp_tz)
  if (kind_case() == kTimestampTz) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_TimestampTZ*>(_impl_.kind_.timestamp_tz_);
    _impl_.kind_.timestamp_tz_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_timestamp_tz(
    ::substrait::Type_TimestampTZ* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_timestamp_tz();
    _impl_.kind_.timestamp_tz_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.timestamp_tz)
}
inline ::substrait::Type_TimestampTZ* PROTOBUF_NONNULL Type::_internal_mutable_timestamp_tz() {
  if (kind_case() != kTimestampTz) {
    clear_kind();
    set_has_timestamp_tz();
    _impl_.kind_.timestamp_tz_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_TimestampTZ>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_TimestampTZ*>(_impl_.kind_.timestamp_tz_);
}
inline ::substrait::Type_TimestampTZ* PROTOBUF_NONNULL Type::mutable_timestamp_tz()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_TimestampTZ* _msg = _internal_mutable_timestamp_tz();
  // @@protoc_insertion_point(field_mutable:substrait.Type.timestamp_tz)
  return _msg;
}

// .substrait.Type.UUID uuid = 32;
inline bool Type::has_uuid() const {
  return kind_case() == kUuid;
}
inline bool Type::_internal_has_uuid() const {
  return kind_case() == kUuid;
}
inline void Type::set_has_uuid() {
  _impl_._oneof_case_[0] = kUuid;
}
inline void Type::clear_uuid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kUuid) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.uuid_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.uuid_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_UUID* PROTOBUF_NULLABLE Type::release_uuid() {
  // @@protoc_insertion_point(field_release:substrait.Type.uuid)
  if (kind_case() == kUuid) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_UUID*>(_impl_.kind_.uuid_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.uuid_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_UUID& Type::_internal_uuid() const {
  return kind_case() == kUuid ? static_cast<const ::substrait::Type_UUID&>(*reinterpret_cast<::substrait::Type_UUID*>(_impl_.kind_.uuid_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_UUID>(&::substrait::Type_UUID_globals_);
}
inline const ::substrait::Type_UUID& Type::uuid() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.uuid)
  return _internal_uuid();
}
inline ::substrait::Type_UUID* PROTOBUF_NULLABLE Type::unsafe_arena_release_uuid() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.uuid)
  if (kind_case() == kUuid) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_UUID*>(_impl_.kind_.uuid_);
    _impl_.kind_.uuid_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_uuid(
    ::substrait::Type_UUID* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_uuid();
    _impl_.kind_.uuid_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.uuid)
}
inline ::substrait::Type_UUID* PROTOBUF_NONNULL Type::_internal_mutable_uuid() {
  if (kind_case() != kUuid) {
    clear_kind();
    set_has_uuid();
    _impl_.kind_.uuid_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_UUID>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_UUID*>(_impl_.kind_.uuid_);
}
inline ::substrait::Type_UUID* PROTOBUF_NONNULL Type::mutable_uuid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_UUID* _msg = _internal_mutable_uuid();
  // @@protoc_insertion_point(field_mutable:substrait.Type.uuid)
  return _msg;
}

// .substrait.Type.FixedChar fixed_char = 21;
inline bool Type::has_fixed_char() const {
  return kind_case() == kFixedChar;
}
inline bool Type::_internal_has_fixed_char() const {
  return kind_case() == kFixedChar;
}
inline void Type::set_has_fixed_char() {
  _impl_._oneof_case_[0] = kFixedChar;
}
inline void Type::clear_fixed_char() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kFixedChar) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.fixed_char_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.fixed_char_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_FixedChar* PROTOBUF_NULLABLE Type::release_fixed_char() {
  // @@protoc_insertion_point(field_release:substrait.Type.fixed_char)
  if (kind_case() == kFixedChar) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_FixedChar*>(_impl_.kind_.fixed_char_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.fixed_char_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_FixedChar& Type::_internal_fixed_char() const {
  return kind_case() == kFixedChar ? static_cast<const ::substrait::Type_FixedChar&>(*reinterpret_cast<::substrait::Type_FixedChar*>(_impl_.kind_.fixed_char_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_FixedChar>(&::substrait::Type_FixedChar_globals_);
}
inline const ::substrait::Type_FixedChar& Type::fixed_char() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.fixed_char)
  return _internal_fixed_char();
}
inline ::substrait::Type_FixedChar* PROTOBUF_NULLABLE Type::unsafe_arena_release_fixed_char() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.fixed_char)
  if (kind_case() == kFixedChar) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_FixedChar*>(_impl_.kind_.fixed_char_);
    _impl_.kind_.fixed_char_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_fixed_char(
    ::substrait::Type_FixedChar* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_fixed_char();
    _impl_.kind_.fixed_char_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.fixed_char)
}
inline ::substrait::Type_FixedChar* PROTOBUF_NONNULL Type::_internal_mutable_fixed_char() {
  if (kind_case() != kFixedChar) {
    clear_kind();
    set_has_fixed_char();
    _impl_.kind_.fixed_char_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_FixedChar>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_FixedChar*>(_impl_.kind_.fixed_char_);
}
inline ::substrait::Type_FixedChar* PROTOBUF_NONNULL Type::mutable_fixed_char()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_FixedChar* _msg = _internal_mutable_fixed_char();
  // @@protoc_insertion_point(field_mutable:substrait.Type.fixed_char)
  return _msg;
}

// .substrait.Type.VarChar varchar = 22;
inline bool Type::has_varchar() const {
  return kind_case() == kVarchar;
}
inline bool Type::_internal_has_varchar() const {
  return kind_case() == kVarchar;
}
inline void Type::set_has_varchar() {
  _impl_._oneof_case_[0] = kVarchar;
}
inline void Type::clear_varchar() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kVarchar) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.varchar_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.varchar_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_VarChar* PROTOBUF_NULLABLE Type::release_varchar() {
  // @@protoc_insertion_point(field_release:substrait.Type.varchar)
  if (kind_case() == kVarchar) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_VarChar*>(_impl_.kind_.varchar_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.varchar_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_VarChar& Type::_internal_varchar() const {
  return kind_case() == kVarchar ? static_cast<const ::substrait::Type_VarChar&>(*reinterpret_cast<::substrait::Type_VarChar*>(_impl_.kind_.varchar_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_VarChar>(&::substrait::Type_VarChar_globals_);
}
inline const ::substrait::Type_VarChar& Type::varchar() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.varchar)
  return _internal_varchar();
}
inline ::substrait::Type_VarChar* PROTOBUF_NULLABLE Type::unsafe_arena_release_varchar() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.varchar)
  if (kind_case() == kVarchar) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_VarChar*>(_impl_.kind_.varchar_);
    _impl_.kind_.varchar_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_varchar(
    ::substrait::Type_VarChar* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_varchar();
    _impl_.kind_.varchar_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.varchar)
}
inline ::substrait::Type_VarChar* PROTOBUF_NONNULL Type::_internal_mutable_varchar() {
  if (kind_case() != kVarchar) {
    clear_kind();
    set_has_varchar();
    _impl_.kind_.varchar_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_VarChar>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_VarChar*>(_impl_.kind_.varchar_);
}
inline ::substrait::Type_VarChar* PROTOBUF_NONNULL Type::mutable_varchar()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_VarChar* _msg = _internal_mutable_varchar();
  // @@protoc_insertion_point(field_mutable:substrait.Type.varchar)
  return _msg;
}

// .substrait.Type.FixedBinary fixed_binary = 23;
inline bool Type::has_fixed_binary() const {
  return kind_case() == kFixedBinary;
}
inline bool Type::_internal_has_fixed_binary() const {
  return kind_case() == kFixedBinary;
}
inline void Type::set_has_fixed_binary() {
  _impl_._oneof_case_[0] = kFixedBinary;
}
inline void Type::clear_fixed_binary() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kFixedBinary) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.fixed_binary_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.fixed_binary_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_FixedBinary* PROTOBUF_NULLABLE Type::release_fixed_binary() {
  // @@protoc_insertion_point(field_release:substrait.Type.fixed_binary)
  if (kind_case() == kFixedBinary) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_FixedBinary*>(_impl_.kind_.fixed_binary_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.fixed_binary_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_FixedBinary& Type::_internal_fixed_binary() const {
  return kind_case() == kFixedBinary ? static_cast<const ::substrait::Type_FixedBinary&>(*reinterpret_cast<::substrait::Type_FixedBinary*>(_impl_.kind_.fixed_binary_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_FixedBinary>(&::substrait::Type_FixedBinary_globals_);
}
inline const ::substrait::Type_FixedBinary& Type::fixed_binary() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.fixed_binary)
  return _internal_fixed_binary();
}
inline ::substrait::Type_FixedBinary* PROTOBUF_NULLABLE Type::unsafe_arena_release_fixed_binary() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.fixed_binary)
  if (kind_case() == kFixedBinary) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_FixedBinary*>(_impl_.kind_.fixed_binary_);
    _impl_.kind_.fixed_binary_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_fixed_binary(
    ::substrait::Type_FixedBinary* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_fixed_binary();
    _impl_.kind_.fixed_binary_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.fixed_binary)
}
inline ::substrait::Type_FixedBinary* PROTOBUF_NONNULL Type::_internal_mutable_fixed_binary() {
  if (kind_case() != kFixedBinary) {
    clear_kind();
    set_has_fixed_binary();
    _impl_.kind_.fixed_binary_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_FixedBinary>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_FixedBinary*>(_impl_.kind_.fixed_binary_);
}
inline ::substrait::Type_FixedBinary* PROTOBUF_NONNULL Type::mutable_fixed_binary()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_FixedBinary* _msg = _internal_mutable_fixed_binary();
  // @@protoc_insertion_point(field_mutable:substrait.Type.fixed_binary)
  return _msg;
}

// .substrait.Type.Decimal decimal = 24;
inline bool Type::has_decimal() const {
  return kind_case() == kDecimal;
}
inline bool Type::_internal_has_decimal() const {
  return kind_case() == kDecimal;
}
inline void Type::set_has_decimal() {
  _impl_._oneof_case_[0] = kDecimal;
}
inline void Type::clear_decimal() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kDecimal) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.decimal_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.decimal_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_Decimal* PROTOBUF_NULLABLE Type::release_decimal() {
  // @@protoc_insertion_point(field_release:substrait.Type.decimal)
  if (kind_case() == kDecimal) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Decimal*>(_impl_.kind_.decimal_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.decimal_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_Decimal& Type::_internal_decimal() const {
  return kind_case() == kDecimal ? static_cast<const ::substrait::Type_Decimal&>(*reinterpret_cast<::substrait::Type_Decimal*>(_impl_.kind_.decimal_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_Decimal>(&::substrait::Type_Decimal_globals_);
}
inline const ::substrait::Type_Decimal& Type::decimal() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.decimal)
  return _internal_decimal();
}
inline ::substrait::Type_Decimal* PROTOBUF_NULLABLE Type::unsafe_arena_release_decimal() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.decimal)
  if (kind_case() == kDecimal) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Decimal*>(_impl_.kind_.decimal_);
    _impl_.kind_.decimal_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_decimal(
    ::substrait::Type_Decimal* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_decimal();
    _impl_.kind_.decimal_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.decimal)
}
inline ::substrait::Type_Decimal* PROTOBUF_NONNULL Type::_internal_mutable_decimal() {
  if (kind_case() != kDecimal) {
    clear_kind();
    set_has_decimal();
    _impl_.kind_.decimal_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_Decimal>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_Decimal*>(_impl_.kind_.decimal_);
}
inline ::substrait::Type_Decimal* PROTOBUF_NONNULL Type::mutable_decimal()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_Decimal* _msg = _internal_mutable_decimal();
  // @@protoc_insertion_point(field_mutable:substrait.Type.decimal)
  return _msg;
}

// .substrait.Type.PrecisionTimestamp precision_timestamp = 33;
inline bool Type::has_precision_timestamp() const {
  return kind_case() == kPrecisionTimestamp;
}
inline bool Type::_internal_has_precision_timestamp() const {
  return kind_case() == kPrecisionTimestamp;
}
inline void Type::set_has_precision_timestamp() {
  _impl_._oneof_case_[0] = kPrecisionTimestamp;
}
inline void Type::clear_precision_timestamp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kPrecisionTimestamp) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.precision_timestamp_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.precision_timestamp_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_PrecisionTimestamp* PROTOBUF_NULLABLE Type::release_precision_timestamp() {
  // @@protoc_insertion_point(field_release:substrait.Type.precision_timestamp)
  if (kind_case() == kPrecisionTimestamp) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_PrecisionTimestamp*>(_impl_.kind_.precision_timestamp_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.precision_timestamp_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_PrecisionTimestamp& Type::_internal_precision_timestamp() const {
  return kind_case() == kPrecisionTimestamp ? static_cast<const ::substrait::Type_PrecisionTimestamp&>(*reinterpret_cast<::substrait::Type_PrecisionTimestamp*>(_impl_.kind_.precision_timestamp_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_PrecisionTimestamp>(&::substrait::Type_PrecisionTimestamp_globals_);
}
inline const ::substrait::Type_PrecisionTimestamp& Type::precision_timestamp() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.precision_timestamp)
  return _internal_precision_timestamp();
}
inline ::substrait::Type_PrecisionTimestamp* PROTOBUF_NULLABLE Type::unsafe_arena_release_precision_timestamp() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.precision_timestamp)
  if (kind_case() == kPrecisionTimestamp) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_PrecisionTimestamp*>(_impl_.kind_.precision_timestamp_);
    _impl_.kind_.precision_timestamp_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_precision_timestamp(
    ::substrait::Type_PrecisionTimestamp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_precision_timestamp();
    _impl_.kind_.precision_timestamp_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.precision_timestamp)
}
inline ::substrait::Type_PrecisionTimestamp* PROTOBUF_NONNULL Type::_internal_mutable_precision_timestamp() {
  if (kind_case() != kPrecisionTimestamp) {
    clear_kind();
    set_has_precision_timestamp();
    _impl_.kind_.precision_timestamp_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_PrecisionTimestamp>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_PrecisionTimestamp*>(_impl_.kind_.precision_timestamp_);
}
inline ::substrait::Type_PrecisionTimestamp* PROTOBUF_NONNULL Type::mutable_precision_timestamp()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_PrecisionTimestamp* _msg = _internal_mutable_precision_timestamp();
  // @@protoc_insertion_point(field_mutable:substrait.Type.precision_timestamp)
  return _msg;
}

// .substrait.Type.PrecisionTimestampTZ precision_timestamp_tz = 34;
inline bool Type::has_precision_timestamp_tz() const {
  return kind_case() == kPrecisionTimestampTz;
}
inline bool Type::_internal_has_precision_timestamp_tz() const {
  return kind_case() == kPrecisionTimestampTz;
}
inline void Type::set_has_precision_timestamp_tz() {
  _impl_._oneof_case_[0] = kPrecisionTimestampTz;
}
inline void Type::clear_precision_timestamp_tz() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kPrecisionTimestampTz) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.precision_timestamp_tz_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.precision_timestamp_tz_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_PrecisionTimestampTZ* PROTOBUF_NULLABLE Type::release_precision_timestamp_tz() {
  // @@protoc_insertion_point(field_release:substrait.Type.precision_timestamp_tz)
  if (kind_case() == kPrecisionTimestampTz) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_PrecisionTimestampTZ*>(_impl_.kind_.precision_timestamp_tz_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.precision_timestamp_tz_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_PrecisionTimestampTZ& Type::_internal_precision_timestamp_tz() const {
  return kind_case() == kPrecisionTimestampTz ? static_cast<const ::substrait::Type_PrecisionTimestampTZ&>(*reinterpret_cast<::substrait::Type_PrecisionTimestampTZ*>(_impl_.kind_.precision_timestamp_tz_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_PrecisionTimestampTZ>(&::substrait::Type_PrecisionTimestampTZ_globals_);
}
inline const ::substrait::Type_PrecisionTimestampTZ& Type::precision_timestamp_tz() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.precision_timestamp_tz)
  return _internal_precision_timestamp_tz();
}
inline ::substrait::Type_PrecisionTimestampTZ* PROTOBUF_NULLABLE Type::unsafe_arena_release_precision_timestamp_tz() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.precision_timestamp_tz)
  if (kind_case() == kPrecisionTimestampTz) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_PrecisionTimestampTZ*>(_impl_.kind_.precision_timestamp_tz_);
    _impl_.kind_.precision_timestamp_tz_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_precision_timestamp_tz(
    ::substrait::Type_PrecisionTimestampTZ* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_precision_timestamp_tz();
    _impl_.kind_.precision_timestamp_tz_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.precision_timestamp_tz)
}
inline ::substrait::Type_PrecisionTimestampTZ* PROTOBUF_NONNULL Type::_internal_mutable_precision_timestamp_tz() {
  if (kind_case() != kPrecisionTimestampTz) {
    clear_kind();
    set_has_precision_timestamp_tz();
    _impl_.kind_.precision_timestamp_tz_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_PrecisionTimestampTZ>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_PrecisionTimestampTZ*>(_impl_.kind_.precision_timestamp_tz_);
}
inline ::substrait::Type_PrecisionTimestampTZ* PROTOBUF_NONNULL Type::mutable_precision_timestamp_tz()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_PrecisionTimestampTZ* _msg = _internal_mutable_precision_timestamp_tz();
  // @@protoc_insertion_point(field_mutable:substrait.Type.precision_timestamp_tz)
  return _msg;
}

// .substrait.Type.Struct struct = 25;
inline bool Type::has_struct_() const {
  return kind_case() == kStruct;
}
inline bool Type::_internal_has_struct_() const {
  return kind_case() == kStruct;
}
inline void Type::set_has_struct_() {
  _impl_._oneof_case_[0] = kStruct;
}
inline void Type::clear_struct_() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kStruct) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.struct__;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.struct__);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_Struct* PROTOBUF_NULLABLE Type::release_struct_() {
  // @@protoc_insertion_point(field_release:substrait.Type.struct)
  if (kind_case() == kStruct) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Struct*>(_impl_.kind_.struct__);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.struct__ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_Struct& Type::_internal_struct_() const {
  return kind_case() == kStruct ? static_cast<const ::substrait::Type_Struct&>(*reinterpret_cast<::substrait::Type_Struct*>(_impl_.kind_.struct__))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_Struct>(&::substrait::Type_Struct_globals_);
}
inline const ::substrait::Type_Struct& Type::struct_() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.struct)
  return _internal_struct_();
}
inline ::substrait::Type_Struct* PROTOBUF_NULLABLE Type::unsafe_arena_release_struct_() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.struct)
  if (kind_case() == kStruct) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Struct*>(_impl_.kind_.struct__);
    _impl_.kind_.struct__ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_struct_(
    ::substrait::Type_Struct* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_struct_();
    _impl_.kind_.struct__ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.struct)
}
inline ::substrait::Type_Struct* PROTOBUF_NONNULL Type::_internal_mutable_struct_() {
  if (kind_case() != kStruct) {
    clear_kind();
    set_has_struct_();
    _impl_.kind_.struct__ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_Struct>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_Struct*>(_impl_.kind_.struct__);
}
inline ::substrait::Type_Struct* PROTOBUF_NONNULL Type::mutable_struct_()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_Struct* _msg = _internal_mutable_struct_();
  // @@protoc_insertion_point(field_mutable:substrait.Type.struct)
  return _msg;
}

// .substrait.Type.List list = 27;
inline bool Type::has_list() const {
  return kind_case() == kList;
}
inline bool Type::_internal_has_list() const {
  return kind_case() == kList;
}
inline void Type::set_has_list() {
  _impl_._oneof_case_[0] = kList;
}
inline void Type::clear_list() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kList) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.list_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.list_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_List* PROTOBUF_NULLABLE Type::release_list() {
  // @@protoc_insertion_point(field_release:substrait.Type.list)
  if (kind_case() == kList) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_List*>(_impl_.kind_.list_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_List& Type::_internal_list() const {
  return kind_case() == kList ? static_cast<const ::substrait::Type_List&>(*reinterpret_cast<::substrait::Type_List*>(_impl_.kind_.list_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_List>(&::substrait::Type_List_globals_);
}
inline const ::substrait::Type_List& Type::list() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.list)
  return _internal_list();
}
inline ::substrait::Type_List* PROTOBUF_NULLABLE Type::unsafe_arena_release_list() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.list)
  if (kind_case() == kList) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_List*>(_impl_.kind_.list_);
    _impl_.kind_.list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_list(
    ::substrait::Type_List* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_list();
    _impl_.kind_.list_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.list)
}
inline ::substrait::Type_List* PROTOBUF_NONNULL Type::_internal_mutable_list() {
  if (kind_case() != kList) {
    clear_kind();
    set_has_list();
    _impl_.kind_.list_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_List>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_List*>(_impl_.kind_.list_);
}
inline ::substrait::Type_List* PROTOBUF_NONNULL Type::mutable_list()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_List* _msg = _internal_mutable_list();
  // @@protoc_insertion_point(field_mutable:substrait.Type.list)
  return _msg;
}

// .substrait.Type.Map map = 28;
inline bool Type::has_map() const {
  return kind_case() == kMap;
}
inline bool Type::_internal_has_map() const {
  return kind_case() == kMap;
}
inline void Type::set_has_map() {
  _impl_._oneof_case_[0] = kMap;
}
inline void Type::clear_map() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kMap) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.map_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.map_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_Map* PROTOBUF_NULLABLE Type::release_map() {
  // @@protoc_insertion_point(field_release:substrait.Type.map)
  if (kind_case() == kMap) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Map*>(_impl_.kind_.map_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.map_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_Map& Type::_internal_map() const {
  return kind_case() == kMap ? static_cast<const ::substrait::Type_Map&>(*reinterpret_cast<::substrait::Type_Map*>(_impl_.kind_.map_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_Map>(&::substrait::Type_Map_globals_);
}
inline const ::substrait::Type_Map& Type::map() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.map)
  return _internal_map();
}
inline ::substrait::Type_Map* PROTOBUF_NULLABLE Type::unsafe_arena_release_map() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.map)
  if (kind_case() == kMap) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_Map*>(_impl_.kind_.map_);
    _impl_.kind_.map_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_map(
    ::substrait::Type_Map* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_map();
    _impl_.kind_.map_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.map)
}
inline ::substrait::Type_Map* PROTOBUF_NONNULL Type::_internal_mutable_map() {
  if (kind_case() != kMap) {
    clear_kind();
    set_has_map();
    _impl_.kind_.map_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_Map>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_Map*>(_impl_.kind_.map_);
}
inline ::substrait::Type_Map* PROTOBUF_NONNULL Type::mutable_map()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_Map* _msg = _internal_mutable_map();
  // @@protoc_insertion_point(field_mutable:substrait.Type.map)
  return _msg;
}

// .substrait.Type.UserDefined user_defined = 30;
inline bool Type::has_user_defined() const {
  return kind_case() == kUserDefined;
}
inline bool Type::_internal_has_user_defined() const {
  return kind_case() == kUserDefined;
}
inline void Type::set_has_user_defined() {
  _impl_._oneof_case_[0] = kUserDefined;
}
inline void Type::clear_user_defined() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kUserDefined) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.user_defined_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.user_defined_);
    }
    clear_has_kind();
  }
}
inline ::substrait::Type_UserDefined* PROTOBUF_NULLABLE Type::release_user_defined() {
  // @@protoc_insertion_point(field_release:substrait.Type.user_defined)
  if (kind_case() == kUserDefined) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_UserDefined*>(_impl_.kind_.user_defined_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.user_defined_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::substrait::Type_UserDefined& Type::_internal_user_defined() const {
  return kind_case() == kUserDefined ? static_cast<const ::substrait::Type_UserDefined&>(*reinterpret_cast<::substrait::Type_UserDefined*>(_impl_.kind_.user_defined_))
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_UserDefined>(&::substrait::Type_UserDefined_globals_);
}
inline const ::substrait::Type_UserDefined& Type::user_defined() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.Type.user_defined)
  return _internal_user_defined();
}
inline ::substrait::Type_UserDefined* PROTOBUF_NULLABLE Type::unsafe_arena_release_user_defined() {
  // @@protoc_insertion_point(field_unsafe_arena_release:substrait.Type.user_defined)
  if (kind_case() == kUserDefined) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::substrait::Type_UserDefined*>(_impl_.kind_.user_defined_);
    _impl_.kind_.user_defined_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Type::unsafe_arena_set_allocated_user_defined(
    ::substrait::Type_UserDefined* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_kind();
  if (value) {
    set_has_user_defined();
    _impl_.kind_.user_defined_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.Type.user_defined)
}
inline ::substrait::Type_UserDefined* PROTOBUF_NONNULL Type::_internal_mutable_user_defined() {
  if (kind_case() != kUserDefined) {
    clear_kind();
    set_has_user_defined();
    _impl_.kind_.user_defined_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::substrait::Type_UserDefined>(GetArena()));
  }
  return reinterpret_cast<::substrait::Type_UserDefined*>(_impl_.kind_.user_defined_);
}
inline ::substrait::Type_UserDefined* PROTOBUF_NONNULL Type::mutable_user_defined()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::substrait::Type_UserDefined* _msg = _internal_mutable_user_defined();
  // @@protoc_insertion_point(field_mutable:substrait.Type.user_defined)
  return _msg;
}

// uint32 user_defined_type_reference = 31 [deprecated = true];
inline bool Type::has_user_defined_type_reference() const {
  return kind_case() == kUserDefinedTypeReference;
}
inline void Type::set_has_user_defined_type_reference() {
  _impl_._oneof_case_[0] = kUserDefinedTypeReference;
}
inline void Type::clear_user_defined_type_reference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kUserDefinedTypeReference) {
    _impl_.kind_.user_defined_type_reference_ = 0u;
    clear_has_kind();
  }
}
inline ::uint32_t Type::user_defined_type_reference() const {
  // @@protoc_insertion_point(field_get:substrait.Type.user_defined_type_reference)
  return _internal_user_defined_type_reference();
}
inline void Type::set_user_defined_type_reference(::uint32_t value) {
  if (kind_case() != kUserDefinedTypeReference) {
    clear_kind();
    set_has_user_defined_type_reference();
  }
  _impl_.kind_.user_defined_type_reference_ = value;
  // @@protoc_insertion_point(field_set:substrait.Type.user_defined_type_reference)
}
inline ::uint32_t Type::_internal_user_defined_type_reference() const {
  if (kind_case() == kUserDefinedTypeReference) {
    return _impl_.kind_.user_defined_type_reference_;
  }
  return 0u;
}

inline bool Type::has_kind() const {
  return kind_case() != KIND_NOT_SET;
}
inline void Type::clear_has_kind() {
  _impl_._oneof_case_[0] = KIND_NOT_SET;
}
inline Type::KindCase Type::kind_case() const {
  return Type::KindCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// NamedStruct

// repeated string names = 1;
inline int NamedStruct::_internal_names_size() const {
  return _internal_names().size();
}
inline int NamedStruct::names_size() const {
  return _internal_names_size();
}
inline void NamedStruct::clear_names() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.names_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL NamedStruct::add_names()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_names()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:substrait.NamedStruct.names)
  return _s;
}
inline const ::std::string& NamedStruct::names(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.NamedStruct.names)
  return _internal_names().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL NamedStruct::mutable_names(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:substrait.NamedStruct.names)
  return _internal_mutable_names()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void NamedStruct::set_names(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_names()->Mutable(index),
      ::std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:substrait.NamedStruct.names)
}
template <typename Arg_, typename... Args_>
inline void NamedStruct::add_names(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_names(), ::std::forward<Arg_>(value),
      args... );
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:substrait.NamedStruct.names)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& NamedStruct::names()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:substrait.NamedStruct.names)
  return _internal_names();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
NamedStruct::mutable_names() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:substrait.NamedStruct.names)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_names();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
NamedStruct::_internal_names() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.names_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
NamedStruct::_internal_mutable_names() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.names_;
}

// .substrait.Type.Struct struct = 2;
inline bool NamedStruct::has_struct_() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.struct__ != nullptr);
  return value;
}
inline void NamedStruct::clear_struct_() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.struct__ != nullptr) _impl_.struct__->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::substrait::Type_Struct& NamedStruct::_internal_struct_() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::substrait::Type_Struct* p = _impl_.struct__;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::substrait::Type_Struct>(&::substrait::Type_Struct_globals_);
}
inline const ::substrait::Type_Struct& NamedStruct::struct_() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:substrait.NamedStruct.struct)
  return _internal_struct_();
}
inline void NamedStruct::unsafe_arena_set_allocated_struct_(
    ::substrait::Type_Struct* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.struct__);
  }
  _impl_.struct__ = reinterpret_cast<::substrait::Type_Struct*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:substrait.NamedStruct.struct)
}
inline ::substrait::Type_Struct* PROTOBUF_NULLABLE NamedStruct::release_struct_() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::substrait::Type_Struct* released = _impl_.struct__;
  _impl_.struct__ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::substrait::Type_Struct* PROTOBUF_NULLABLE NamedStruct::unsafe_arena_release_struct_() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:substrait.NamedStruct.struct)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::substrait::Type_Struct* temp = _impl_.struct__;
  _impl_.struct__ = nullptr;
  return temp;
}
inline ::substrait::Type_Struct* PROTOBUF_NONNULL NamedStruct::_internal_mutable_struct_() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.struct__ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::substrait::Type_Struct>(GetArena());
    _impl_.struct__ = reinterpret_cast<::substrait::Type_Struct*>(p);
  }
  return _impl_.struct__;
}
inline ::substrait::Type_Struct* PROTOBUF_NONNULL NamedStruct::mutable_struct_()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::substrait::Type_Struct* _msg = _internal_mutable_struct_();
  // @@protoc_insertion_point(field_mutable:substrait.NamedStruct.struct)
  return _msg;
}
inline void NamedStruct::set_allocated_struct_(::substrait::Type_Struct* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.struct__);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.struct__ = reinterpret_cast<::substrait::Type_Struct*>(value);
  // @@protoc_insertion_point(field_set_allocated:substrait.NamedStruct.struct)
}

#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace substrait


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::substrait::Type_Nullability> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::substrait::Type_Nullability>() {
  return ::substrait::Type_Nullability_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"
// clang-format on

#endif  // substrait_2ftype_2eproto_2epb_2eh
