// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: xla/ffi/attribute_map.proto
// Protobuf C++ Version: 6.31.1

#ifndef xla_2fffi_2fattribute_5fmap_2eproto_2epb_2eh
#define xla_2fffi_2fattribute_5fmap_2eproto_2epb_2eh

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

#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 6031001
#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/map.h"  // IWYU pragma: export
#include "google/protobuf/map_type_handler.h"  // IWYU pragma: export
#include "google/protobuf/map_entry.h"
#include "google/protobuf/map_field.h"
#include "google/protobuf/unknown_field_set.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_xla_2fffi_2fattribute_5fmap_2eproto PROTOBUF_EXPORT

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 PROTOBUF_EXPORT TableStruct_xla_2fffi_2fattribute_5fmap_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
PROTOBUF_EXPORT extern const ::google::protobuf::internal::DescriptorTable descriptor_table_xla_2fffi_2fattribute_5fmap_2eproto;
}  // extern "C"
namespace xla {
namespace ffi {
class ArrayProto;
struct ArrayProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ArrayProtoDefaultTypeInternal _ArrayProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_class_data_;
class ArrayProto_DoubleArrayProto;
struct ArrayProto_DoubleArrayProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ArrayProto_DoubleArrayProtoDefaultTypeInternal _ArrayProto_DoubleArrayProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_DoubleArrayProto_class_data_;
class ArrayProto_FloatArrayProto;
struct ArrayProto_FloatArrayProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ArrayProto_FloatArrayProtoDefaultTypeInternal _ArrayProto_FloatArrayProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_FloatArrayProto_class_data_;
class ArrayProto_Int16ArrayProto;
struct ArrayProto_Int16ArrayProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ArrayProto_Int16ArrayProtoDefaultTypeInternal _ArrayProto_Int16ArrayProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Int16ArrayProto_class_data_;
class ArrayProto_Int32ArrayProto;
struct ArrayProto_Int32ArrayProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ArrayProto_Int32ArrayProtoDefaultTypeInternal _ArrayProto_Int32ArrayProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Int32ArrayProto_class_data_;
class ArrayProto_Int64ArrayProto;
struct ArrayProto_Int64ArrayProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ArrayProto_Int64ArrayProtoDefaultTypeInternal _ArrayProto_Int64ArrayProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Int64ArrayProto_class_data_;
class ArrayProto_Int8ArrayProto;
struct ArrayProto_Int8ArrayProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ArrayProto_Int8ArrayProtoDefaultTypeInternal _ArrayProto_Int8ArrayProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Int8ArrayProto_class_data_;
class ArrayProto_Uint16ArrayProto;
struct ArrayProto_Uint16ArrayProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ArrayProto_Uint16ArrayProtoDefaultTypeInternal _ArrayProto_Uint16ArrayProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Uint16ArrayProto_class_data_;
class ArrayProto_Uint32ArrayProto;
struct ArrayProto_Uint32ArrayProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ArrayProto_Uint32ArrayProtoDefaultTypeInternal _ArrayProto_Uint32ArrayProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Uint32ArrayProto_class_data_;
class ArrayProto_Uint64ArrayProto;
struct ArrayProto_Uint64ArrayProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ArrayProto_Uint64ArrayProtoDefaultTypeInternal _ArrayProto_Uint64ArrayProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Uint64ArrayProto_class_data_;
class ArrayProto_Uint8ArrayProto;
struct ArrayProto_Uint8ArrayProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ArrayProto_Uint8ArrayProtoDefaultTypeInternal _ArrayProto_Uint8ArrayProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Uint8ArrayProto_class_data_;
class AttributeProto;
struct AttributeProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern AttributeProtoDefaultTypeInternal _AttributeProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AttributeProto_class_data_;
class AttributesMapProto;
struct AttributesMapProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern AttributesMapProtoDefaultTypeInternal _AttributesMapProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AttributesMapProto_class_data_;
class AttributesMapProto_AttrsEntry_DoNotUse;
struct AttributesMapProto_AttrsEntry_DoNotUseDefaultTypeInternal;
PROTOBUF_EXPORT extern AttributesMapProto_AttrsEntry_DoNotUseDefaultTypeInternal _AttributesMapProto_AttrsEntry_DoNotUse_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AttributesMapProto_AttrsEntry_DoNotUse_class_data_;
class FlatAttributeProto;
struct FlatAttributeProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern FlatAttributeProtoDefaultTypeInternal _FlatAttributeProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull FlatAttributeProto_class_data_;
class FlatAttributesMapProto;
struct FlatAttributesMapProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern FlatAttributesMapProtoDefaultTypeInternal _FlatAttributesMapProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull FlatAttributesMapProto_class_data_;
class FlatAttributesMapProto_AttrsEntry_DoNotUse;
struct FlatAttributesMapProto_AttrsEntry_DoNotUseDefaultTypeInternal;
PROTOBUF_EXPORT extern FlatAttributesMapProto_AttrsEntry_DoNotUseDefaultTypeInternal _FlatAttributesMapProto_AttrsEntry_DoNotUse_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull FlatAttributesMapProto_AttrsEntry_DoNotUse_class_data_;
class ScalarProto;
struct ScalarProtoDefaultTypeInternal;
PROTOBUF_EXPORT extern ScalarProtoDefaultTypeInternal _ScalarProto_default_instance_;
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ScalarProto_class_data_;
}  // namespace ffi
}  // namespace xla
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace xla {
namespace ffi {

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


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

class PROTOBUF_EXPORT ScalarProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.ScalarProto) */ {
 public:
  inline ScalarProto() : ScalarProto(nullptr) {}
  ~ScalarProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ScalarProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ScalarProto& default_instance() {
    return *reinterpret_cast<const ScalarProto*>(
        &_ScalarProto_default_instance_);
  }
  enum ValueCase {
    kB = 1,
    kI8 = 2,
    kI16 = 3,
    kI32 = 4,
    kI64 = 5,
    kU8 = 6,
    kU16 = 7,
    kU32 = 8,
    kU64 = 9,
    kF32 = 10,
    kF64 = 11,
    VALUE_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(ScalarProto& a, ScalarProto& b) { a.Swap(&b); }
  inline void Swap(ScalarProto* 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(ScalarProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit ScalarProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ScalarProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ScalarProto& from);
  ScalarProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ScalarProto&& from) noexcept
      : ScalarProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kBFieldNumber = 1,
    kI8FieldNumber = 2,
    kI16FieldNumber = 3,
    kI32FieldNumber = 4,
    kI64FieldNumber = 5,
    kU8FieldNumber = 6,
    kU16FieldNumber = 7,
    kU32FieldNumber = 8,
    kU64FieldNumber = 9,
    kF32FieldNumber = 10,
    kF64FieldNumber = 11,
  };
  // bool b = 1;
  bool has_b() const;
  void clear_b() ;
  bool b() const;
  void set_b(bool value);

  private:
  bool _internal_b() const;
  void _internal_set_b(bool value);

  public:
  // int32 i8 = 2;
  bool has_i8() const;
  void clear_i8() ;
  ::int32_t i8() const;
  void set_i8(::int32_t value);

  private:
  ::int32_t _internal_i8() const;
  void _internal_set_i8(::int32_t value);

  public:
  // int32 i16 = 3;
  bool has_i16() const;
  void clear_i16() ;
  ::int32_t i16() const;
  void set_i16(::int32_t value);

  private:
  ::int32_t _internal_i16() const;
  void _internal_set_i16(::int32_t value);

  public:
  // int32 i32 = 4;
  bool has_i32() const;
  void clear_i32() ;
  ::int32_t i32() const;
  void set_i32(::int32_t value);

  private:
  ::int32_t _internal_i32() const;
  void _internal_set_i32(::int32_t value);

  public:
  // int64 i64 = 5;
  bool has_i64() const;
  void clear_i64() ;
  ::int64_t i64() const;
  void set_i64(::int64_t value);

  private:
  ::int64_t _internal_i64() const;
  void _internal_set_i64(::int64_t value);

  public:
  // uint32 u8 = 6;
  bool has_u8() const;
  void clear_u8() ;
  ::uint32_t u8() const;
  void set_u8(::uint32_t value);

  private:
  ::uint32_t _internal_u8() const;
  void _internal_set_u8(::uint32_t value);

  public:
  // uint32 u16 = 7;
  bool has_u16() const;
  void clear_u16() ;
  ::uint32_t u16() const;
  void set_u16(::uint32_t value);

  private:
  ::uint32_t _internal_u16() const;
  void _internal_set_u16(::uint32_t value);

  public:
  // uint32 u32 = 8;
  bool has_u32() const;
  void clear_u32() ;
  ::uint32_t u32() const;
  void set_u32(::uint32_t value);

  private:
  ::uint32_t _internal_u32() const;
  void _internal_set_u32(::uint32_t value);

  public:
  // uint64 u64 = 9;
  bool has_u64() const;
  void clear_u64() ;
  ::uint64_t u64() const;
  void set_u64(::uint64_t value);

  private:
  ::uint64_t _internal_u64() const;
  void _internal_set_u64(::uint64_t value);

  public:
  // float f32 = 10;
  bool has_f32() const;
  void clear_f32() ;
  float f32() const;
  void set_f32(float value);

  private:
  float _internal_f32() const;
  void _internal_set_f32(float value);

  public:
  // double f64 = 11;
  bool has_f64() const;
  void clear_f64() ;
  double f64() const;
  void set_f64(double value);

  private:
  double _internal_f64() const;
  void _internal_set_f64(double value);

  public:
  void clear_value();
  ValueCase value_case() const;
  // @@protoc_insertion_point(class_scope:xla.ffi.ScalarProto)
 private:
  class _Internal;
  void set_has_b();
  void set_has_i8();
  void set_has_i16();
  void set_has_i32();
  void set_has_i64();
  void set_has_u8();
  void set_has_u16();
  void set_has_u32();
  void set_has_u64();
  void set_has_f32();
  void set_has_f64();
  inline bool has_value() const;
  inline void clear_has_value();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 11,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ScalarProto& from_msg);
    union ValueUnion {
      constexpr ValueUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      bool b_;
      ::int32_t i8_;
      ::int32_t i16_;
      ::int32_t i32_;
      ::int64_t i64_;
      ::uint32_t u8_;
      ::uint32_t u16_;
      ::uint32_t u32_;
      ::uint64_t u64_;
      float f32_;
      double f64_;
    } value_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ScalarProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ArrayProto_Uint8ArrayProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.ArrayProto.Uint8ArrayProto) */ {
 public:
  inline ArrayProto_Uint8ArrayProto() : ArrayProto_Uint8ArrayProto(nullptr) {}
  ~ArrayProto_Uint8ArrayProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArrayProto_Uint8ArrayProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArrayProto_Uint8ArrayProto& default_instance() {
    return *reinterpret_cast<const ArrayProto_Uint8ArrayProto*>(
        &_ArrayProto_Uint8ArrayProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(ArrayProto_Uint8ArrayProto& a, ArrayProto_Uint8ArrayProto& b) { a.Swap(&b); }
  inline void Swap(ArrayProto_Uint8ArrayProto* 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(ArrayProto_Uint8ArrayProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit ArrayProto_Uint8ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ArrayProto_Uint8ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ArrayProto_Uint8ArrayProto& from);
  ArrayProto_Uint8ArrayProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ArrayProto_Uint8ArrayProto&& from) noexcept
      : ArrayProto_Uint8ArrayProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kValuesFieldNumber = 1,
  };
  // repeated uint32 values = 1;
  int values_size() const;
  private:
  int _internal_values_size() const;

  public:
  void clear_values() ;
  ::uint32_t values(int index) const;
  void set_values(int index, ::uint32_t value);
  void add_values(::uint32_t value);
  const ::google::protobuf::RepeatedField<::uint32_t>& values() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_values();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_values() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_values();

  public:
  // @@protoc_insertion_point(class_scope:xla.ffi.ArrayProto.Uint8ArrayProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ArrayProto_Uint8ArrayProto& from_msg);
    ::google::protobuf::RepeatedField<::uint32_t> values_;
    ::google::protobuf::internal::CachedSize _values_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Uint8ArrayProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ArrayProto_Uint64ArrayProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.ArrayProto.Uint64ArrayProto) */ {
 public:
  inline ArrayProto_Uint64ArrayProto() : ArrayProto_Uint64ArrayProto(nullptr) {}
  ~ArrayProto_Uint64ArrayProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArrayProto_Uint64ArrayProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArrayProto_Uint64ArrayProto& default_instance() {
    return *reinterpret_cast<const ArrayProto_Uint64ArrayProto*>(
        &_ArrayProto_Uint64ArrayProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(ArrayProto_Uint64ArrayProto& a, ArrayProto_Uint64ArrayProto& b) { a.Swap(&b); }
  inline void Swap(ArrayProto_Uint64ArrayProto* 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(ArrayProto_Uint64ArrayProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit ArrayProto_Uint64ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ArrayProto_Uint64ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ArrayProto_Uint64ArrayProto& from);
  ArrayProto_Uint64ArrayProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ArrayProto_Uint64ArrayProto&& from) noexcept
      : ArrayProto_Uint64ArrayProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kValuesFieldNumber = 1,
  };
  // repeated uint64 values = 1;
  int values_size() const;
  private:
  int _internal_values_size() const;

  public:
  void clear_values() ;
  ::uint64_t values(int index) const;
  void set_values(int index, ::uint64_t value);
  void add_values(::uint64_t value);
  const ::google::protobuf::RepeatedField<::uint64_t>& values() const;
  ::google::protobuf::RepeatedField<::uint64_t>* PROTOBUF_NONNULL mutable_values();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_values() const;
  ::google::protobuf::RepeatedField<::uint64_t>* PROTOBUF_NONNULL _internal_mutable_values();

  public:
  // @@protoc_insertion_point(class_scope:xla.ffi.ArrayProto.Uint64ArrayProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ArrayProto_Uint64ArrayProto& from_msg);
    ::google::protobuf::RepeatedField<::uint64_t> values_;
    ::google::protobuf::internal::CachedSize _values_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Uint64ArrayProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ArrayProto_Uint32ArrayProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.ArrayProto.Uint32ArrayProto) */ {
 public:
  inline ArrayProto_Uint32ArrayProto() : ArrayProto_Uint32ArrayProto(nullptr) {}
  ~ArrayProto_Uint32ArrayProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArrayProto_Uint32ArrayProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArrayProto_Uint32ArrayProto& default_instance() {
    return *reinterpret_cast<const ArrayProto_Uint32ArrayProto*>(
        &_ArrayProto_Uint32ArrayProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(ArrayProto_Uint32ArrayProto& a, ArrayProto_Uint32ArrayProto& b) { a.Swap(&b); }
  inline void Swap(ArrayProto_Uint32ArrayProto* 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(ArrayProto_Uint32ArrayProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit ArrayProto_Uint32ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ArrayProto_Uint32ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ArrayProto_Uint32ArrayProto& from);
  ArrayProto_Uint32ArrayProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ArrayProto_Uint32ArrayProto&& from) noexcept
      : ArrayProto_Uint32ArrayProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kValuesFieldNumber = 1,
  };
  // repeated uint32 values = 1;
  int values_size() const;
  private:
  int _internal_values_size() const;

  public:
  void clear_values() ;
  ::uint32_t values(int index) const;
  void set_values(int index, ::uint32_t value);
  void add_values(::uint32_t value);
  const ::google::protobuf::RepeatedField<::uint32_t>& values() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_values();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_values() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_values();

  public:
  // @@protoc_insertion_point(class_scope:xla.ffi.ArrayProto.Uint32ArrayProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ArrayProto_Uint32ArrayProto& from_msg);
    ::google::protobuf::RepeatedField<::uint32_t> values_;
    ::google::protobuf::internal::CachedSize _values_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Uint32ArrayProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ArrayProto_Uint16ArrayProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.ArrayProto.Uint16ArrayProto) */ {
 public:
  inline ArrayProto_Uint16ArrayProto() : ArrayProto_Uint16ArrayProto(nullptr) {}
  ~ArrayProto_Uint16ArrayProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArrayProto_Uint16ArrayProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArrayProto_Uint16ArrayProto& default_instance() {
    return *reinterpret_cast<const ArrayProto_Uint16ArrayProto*>(
        &_ArrayProto_Uint16ArrayProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(ArrayProto_Uint16ArrayProto& a, ArrayProto_Uint16ArrayProto& b) { a.Swap(&b); }
  inline void Swap(ArrayProto_Uint16ArrayProto* 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(ArrayProto_Uint16ArrayProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit ArrayProto_Uint16ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ArrayProto_Uint16ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ArrayProto_Uint16ArrayProto& from);
  ArrayProto_Uint16ArrayProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ArrayProto_Uint16ArrayProto&& from) noexcept
      : ArrayProto_Uint16ArrayProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kValuesFieldNumber = 1,
  };
  // repeated uint32 values = 1;
  int values_size() const;
  private:
  int _internal_values_size() const;

  public:
  void clear_values() ;
  ::uint32_t values(int index) const;
  void set_values(int index, ::uint32_t value);
  void add_values(::uint32_t value);
  const ::google::protobuf::RepeatedField<::uint32_t>& values() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_values();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_values() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_values();

  public:
  // @@protoc_insertion_point(class_scope:xla.ffi.ArrayProto.Uint16ArrayProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ArrayProto_Uint16ArrayProto& from_msg);
    ::google::protobuf::RepeatedField<::uint32_t> values_;
    ::google::protobuf::internal::CachedSize _values_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Uint16ArrayProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ArrayProto_Int8ArrayProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.ArrayProto.Int8ArrayProto) */ {
 public:
  inline ArrayProto_Int8ArrayProto() : ArrayProto_Int8ArrayProto(nullptr) {}
  ~ArrayProto_Int8ArrayProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArrayProto_Int8ArrayProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArrayProto_Int8ArrayProto& default_instance() {
    return *reinterpret_cast<const ArrayProto_Int8ArrayProto*>(
        &_ArrayProto_Int8ArrayProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(ArrayProto_Int8ArrayProto& a, ArrayProto_Int8ArrayProto& b) { a.Swap(&b); }
  inline void Swap(ArrayProto_Int8ArrayProto* 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(ArrayProto_Int8ArrayProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit ArrayProto_Int8ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ArrayProto_Int8ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ArrayProto_Int8ArrayProto& from);
  ArrayProto_Int8ArrayProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ArrayProto_Int8ArrayProto&& from) noexcept
      : ArrayProto_Int8ArrayProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kValuesFieldNumber = 1,
  };
  // repeated int32 values = 1;
  int values_size() const;
  private:
  int _internal_values_size() const;

  public:
  void clear_values() ;
  ::int32_t values(int index) const;
  void set_values(int index, ::int32_t value);
  void add_values(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& values() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_values();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_values() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_values();

  public:
  // @@protoc_insertion_point(class_scope:xla.ffi.ArrayProto.Int8ArrayProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ArrayProto_Int8ArrayProto& from_msg);
    ::google::protobuf::RepeatedField<::int32_t> values_;
    ::google::protobuf::internal::CachedSize _values_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Int8ArrayProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ArrayProto_Int64ArrayProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.ArrayProto.Int64ArrayProto) */ {
 public:
  inline ArrayProto_Int64ArrayProto() : ArrayProto_Int64ArrayProto(nullptr) {}
  ~ArrayProto_Int64ArrayProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArrayProto_Int64ArrayProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArrayProto_Int64ArrayProto& default_instance() {
    return *reinterpret_cast<const ArrayProto_Int64ArrayProto*>(
        &_ArrayProto_Int64ArrayProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(ArrayProto_Int64ArrayProto& a, ArrayProto_Int64ArrayProto& b) { a.Swap(&b); }
  inline void Swap(ArrayProto_Int64ArrayProto* 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(ArrayProto_Int64ArrayProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit ArrayProto_Int64ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ArrayProto_Int64ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ArrayProto_Int64ArrayProto& from);
  ArrayProto_Int64ArrayProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ArrayProto_Int64ArrayProto&& from) noexcept
      : ArrayProto_Int64ArrayProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kValuesFieldNumber = 1,
  };
  // repeated int64 values = 1;
  int values_size() const;
  private:
  int _internal_values_size() const;

  public:
  void clear_values() ;
  ::int64_t values(int index) const;
  void set_values(int index, ::int64_t value);
  void add_values(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& values() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_values();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_values() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_values();

  public:
  // @@protoc_insertion_point(class_scope:xla.ffi.ArrayProto.Int64ArrayProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ArrayProto_Int64ArrayProto& from_msg);
    ::google::protobuf::RepeatedField<::int64_t> values_;
    ::google::protobuf::internal::CachedSize _values_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Int64ArrayProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ArrayProto_Int32ArrayProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.ArrayProto.Int32ArrayProto) */ {
 public:
  inline ArrayProto_Int32ArrayProto() : ArrayProto_Int32ArrayProto(nullptr) {}
  ~ArrayProto_Int32ArrayProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArrayProto_Int32ArrayProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArrayProto_Int32ArrayProto& default_instance() {
    return *reinterpret_cast<const ArrayProto_Int32ArrayProto*>(
        &_ArrayProto_Int32ArrayProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(ArrayProto_Int32ArrayProto& a, ArrayProto_Int32ArrayProto& b) { a.Swap(&b); }
  inline void Swap(ArrayProto_Int32ArrayProto* 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(ArrayProto_Int32ArrayProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit ArrayProto_Int32ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ArrayProto_Int32ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ArrayProto_Int32ArrayProto& from);
  ArrayProto_Int32ArrayProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ArrayProto_Int32ArrayProto&& from) noexcept
      : ArrayProto_Int32ArrayProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kValuesFieldNumber = 1,
  };
  // repeated int32 values = 1;
  int values_size() const;
  private:
  int _internal_values_size() const;

  public:
  void clear_values() ;
  ::int32_t values(int index) const;
  void set_values(int index, ::int32_t value);
  void add_values(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& values() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_values();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_values() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_values();

  public:
  // @@protoc_insertion_point(class_scope:xla.ffi.ArrayProto.Int32ArrayProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ArrayProto_Int32ArrayProto& from_msg);
    ::google::protobuf::RepeatedField<::int32_t> values_;
    ::google::protobuf::internal::CachedSize _values_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Int32ArrayProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ArrayProto_Int16ArrayProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.ArrayProto.Int16ArrayProto) */ {
 public:
  inline ArrayProto_Int16ArrayProto() : ArrayProto_Int16ArrayProto(nullptr) {}
  ~ArrayProto_Int16ArrayProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArrayProto_Int16ArrayProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArrayProto_Int16ArrayProto& default_instance() {
    return *reinterpret_cast<const ArrayProto_Int16ArrayProto*>(
        &_ArrayProto_Int16ArrayProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(ArrayProto_Int16ArrayProto& a, ArrayProto_Int16ArrayProto& b) { a.Swap(&b); }
  inline void Swap(ArrayProto_Int16ArrayProto* 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(ArrayProto_Int16ArrayProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit ArrayProto_Int16ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ArrayProto_Int16ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ArrayProto_Int16ArrayProto& from);
  ArrayProto_Int16ArrayProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ArrayProto_Int16ArrayProto&& from) noexcept
      : ArrayProto_Int16ArrayProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kValuesFieldNumber = 1,
  };
  // repeated int32 values = 1;
  int values_size() const;
  private:
  int _internal_values_size() const;

  public:
  void clear_values() ;
  ::int32_t values(int index) const;
  void set_values(int index, ::int32_t value);
  void add_values(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& values() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_values();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_values() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_values();

  public:
  // @@protoc_insertion_point(class_scope:xla.ffi.ArrayProto.Int16ArrayProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ArrayProto_Int16ArrayProto& from_msg);
    ::google::protobuf::RepeatedField<::int32_t> values_;
    ::google::protobuf::internal::CachedSize _values_cached_byte_size_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_Int16ArrayProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ArrayProto_FloatArrayProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.ArrayProto.FloatArrayProto) */ {
 public:
  inline ArrayProto_FloatArrayProto() : ArrayProto_FloatArrayProto(nullptr) {}
  ~ArrayProto_FloatArrayProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArrayProto_FloatArrayProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArrayProto_FloatArrayProto& default_instance() {
    return *reinterpret_cast<const ArrayProto_FloatArrayProto*>(
        &_ArrayProto_FloatArrayProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 9;
  friend void swap(ArrayProto_FloatArrayProto& a, ArrayProto_FloatArrayProto& b) { a.Swap(&b); }
  inline void Swap(ArrayProto_FloatArrayProto* 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(ArrayProto_FloatArrayProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit ArrayProto_FloatArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ArrayProto_FloatArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ArrayProto_FloatArrayProto& from);
  ArrayProto_FloatArrayProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ArrayProto_FloatArrayProto&& from) noexcept
      : ArrayProto_FloatArrayProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kValuesFieldNumber = 1,
  };
  // repeated float values = 1;
  int values_size() const;
  private:
  int _internal_values_size() const;

  public:
  void clear_values() ;
  float values(int index) const;
  void set_values(int index, float value);
  void add_values(float value);
  const ::google::protobuf::RepeatedField<float>& values() const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL mutable_values();

  private:
  const ::google::protobuf::RepeatedField<float>& _internal_values() const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL _internal_mutable_values();

  public:
  // @@protoc_insertion_point(class_scope:xla.ffi.ArrayProto.FloatArrayProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ArrayProto_FloatArrayProto& from_msg);
    ::google::protobuf::RepeatedField<float> values_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_FloatArrayProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ArrayProto_DoubleArrayProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.ArrayProto.DoubleArrayProto) */ {
 public:
  inline ArrayProto_DoubleArrayProto() : ArrayProto_DoubleArrayProto(nullptr) {}
  ~ArrayProto_DoubleArrayProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArrayProto_DoubleArrayProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArrayProto_DoubleArrayProto& default_instance() {
    return *reinterpret_cast<const ArrayProto_DoubleArrayProto*>(
        &_ArrayProto_DoubleArrayProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 10;
  friend void swap(ArrayProto_DoubleArrayProto& a, ArrayProto_DoubleArrayProto& b) { a.Swap(&b); }
  inline void Swap(ArrayProto_DoubleArrayProto* 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(ArrayProto_DoubleArrayProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit ArrayProto_DoubleArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ArrayProto_DoubleArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ArrayProto_DoubleArrayProto& from);
  ArrayProto_DoubleArrayProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ArrayProto_DoubleArrayProto&& from) noexcept
      : ArrayProto_DoubleArrayProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kValuesFieldNumber = 1,
  };
  // repeated double values = 1;
  int values_size() const;
  private:
  int _internal_values_size() const;

  public:
  void clear_values() ;
  double values(int index) const;
  void set_values(int index, double value);
  void add_values(double value);
  const ::google::protobuf::RepeatedField<double>& values() const;
  ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL mutable_values();

  private:
  const ::google::protobuf::RepeatedField<double>& _internal_values() const;
  ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL _internal_mutable_values();

  public:
  // @@protoc_insertion_point(class_scope:xla.ffi.ArrayProto.DoubleArrayProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ArrayProto_DoubleArrayProto& from_msg);
    ::google::protobuf::RepeatedField<double> values_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_DoubleArrayProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ArrayProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.ArrayProto) */ {
 public:
  inline ArrayProto() : ArrayProto(nullptr) {}
  ~ArrayProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArrayProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArrayProto& default_instance() {
    return *reinterpret_cast<const ArrayProto*>(
        &_ArrayProto_default_instance_);
  }
  enum ValueCase {
    kI8 = 1,
    kI16 = 2,
    kI32 = 3,
    kI64 = 4,
    kU8 = 5,
    kU16 = 6,
    kU32 = 7,
    kU64 = 8,
    kF32 = 9,
    kF64 = 10,
    VALUE_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 11;
  friend void swap(ArrayProto& a, ArrayProto& b) { a.Swap(&b); }
  inline void Swap(ArrayProto* 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(ArrayProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ArrayProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ArrayProto& from);
  ArrayProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ArrayProto&& from) noexcept
      : ArrayProto(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_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Int8ArrayProto = ArrayProto_Int8ArrayProto;
  using Int16ArrayProto = ArrayProto_Int16ArrayProto;
  using Int32ArrayProto = ArrayProto_Int32ArrayProto;
  using Int64ArrayProto = ArrayProto_Int64ArrayProto;
  using Uint8ArrayProto = ArrayProto_Uint8ArrayProto;
  using Uint16ArrayProto = ArrayProto_Uint16ArrayProto;
  using Uint32ArrayProto = ArrayProto_Uint32ArrayProto;
  using Uint64ArrayProto = ArrayProto_Uint64ArrayProto;
  using FloatArrayProto = ArrayProto_FloatArrayProto;
  using DoubleArrayProto = ArrayProto_DoubleArrayProto;

  // accessors -------------------------------------------------------
  enum : int {
    kI8FieldNumber = 1,
    kI16FieldNumber = 2,
    kI32FieldNumber = 3,
    kI64FieldNumber = 4,
    kU8FieldNumber = 5,
    kU16FieldNumber = 6,
    kU32FieldNumber = 7,
    kU64FieldNumber = 8,
    kF32FieldNumber = 9,
    kF64FieldNumber = 10,
  };
  // .xla.ffi.ArrayProto.Int8ArrayProto i8 = 1;
  bool has_i8() const;
  private:
  bool _internal_has_i8() const;

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

  private:
  const ::xla::ffi::ArrayProto_Int8ArrayProto& _internal_i8() const;
  ::xla::ffi::ArrayProto_Int8ArrayProto* PROTOBUF_NONNULL _internal_mutable_i8();

  public:
  // .xla.ffi.ArrayProto.Int16ArrayProto i16 = 2;
  bool has_i16() const;
  private:
  bool _internal_has_i16() const;

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

  private:
  const ::xla::ffi::ArrayProto_Int16ArrayProto& _internal_i16() const;
  ::xla::ffi::ArrayProto_Int16ArrayProto* PROTOBUF_NONNULL _internal_mutable_i16();

  public:
  // .xla.ffi.ArrayProto.Int32ArrayProto i32 = 3;
  bool has_i32() const;
  private:
  bool _internal_has_i32() const;

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

  private:
  const ::xla::ffi::ArrayProto_Int32ArrayProto& _internal_i32() const;
  ::xla::ffi::ArrayProto_Int32ArrayProto* PROTOBUF_NONNULL _internal_mutable_i32();

  public:
  // .xla.ffi.ArrayProto.Int64ArrayProto i64 = 4;
  bool has_i64() const;
  private:
  bool _internal_has_i64() const;

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

  private:
  const ::xla::ffi::ArrayProto_Int64ArrayProto& _internal_i64() const;
  ::xla::ffi::ArrayProto_Int64ArrayProto* PROTOBUF_NONNULL _internal_mutable_i64();

  public:
  // .xla.ffi.ArrayProto.Uint8ArrayProto u8 = 5;
  bool has_u8() const;
  private:
  bool _internal_has_u8() const;

  public:
  void clear_u8() ;
  const ::xla::ffi::ArrayProto_Uint8ArrayProto& u8() const;
  [[nodiscard]] ::xla::ffi::ArrayProto_Uint8ArrayProto* PROTOBUF_NULLABLE release_u8();
  ::xla::ffi::ArrayProto_Uint8ArrayProto* PROTOBUF_NONNULL mutable_u8();
  void set_allocated_u8(::xla::ffi::ArrayProto_Uint8ArrayProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_u8(::xla::ffi::ArrayProto_Uint8ArrayProto* PROTOBUF_NULLABLE value);
  ::xla::ffi::ArrayProto_Uint8ArrayProto* PROTOBUF_NULLABLE unsafe_arena_release_u8();

  private:
  const ::xla::ffi::ArrayProto_Uint8ArrayProto& _internal_u8() const;
  ::xla::ffi::ArrayProto_Uint8ArrayProto* PROTOBUF_NONNULL _internal_mutable_u8();

  public:
  // .xla.ffi.ArrayProto.Uint16ArrayProto u16 = 6;
  bool has_u16() const;
  private:
  bool _internal_has_u16() const;

  public:
  void clear_u16() ;
  const ::xla::ffi::ArrayProto_Uint16ArrayProto& u16() const;
  [[nodiscard]] ::xla::ffi::ArrayProto_Uint16ArrayProto* PROTOBUF_NULLABLE release_u16();
  ::xla::ffi::ArrayProto_Uint16ArrayProto* PROTOBUF_NONNULL mutable_u16();
  void set_allocated_u16(::xla::ffi::ArrayProto_Uint16ArrayProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_u16(::xla::ffi::ArrayProto_Uint16ArrayProto* PROTOBUF_NULLABLE value);
  ::xla::ffi::ArrayProto_Uint16ArrayProto* PROTOBUF_NULLABLE unsafe_arena_release_u16();

  private:
  const ::xla::ffi::ArrayProto_Uint16ArrayProto& _internal_u16() const;
  ::xla::ffi::ArrayProto_Uint16ArrayProto* PROTOBUF_NONNULL _internal_mutable_u16();

  public:
  // .xla.ffi.ArrayProto.Uint32ArrayProto u32 = 7;
  bool has_u32() const;
  private:
  bool _internal_has_u32() const;

  public:
  void clear_u32() ;
  const ::xla::ffi::ArrayProto_Uint32ArrayProto& u32() const;
  [[nodiscard]] ::xla::ffi::ArrayProto_Uint32ArrayProto* PROTOBUF_NULLABLE release_u32();
  ::xla::ffi::ArrayProto_Uint32ArrayProto* PROTOBUF_NONNULL mutable_u32();
  void set_allocated_u32(::xla::ffi::ArrayProto_Uint32ArrayProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_u32(::xla::ffi::ArrayProto_Uint32ArrayProto* PROTOBUF_NULLABLE value);
  ::xla::ffi::ArrayProto_Uint32ArrayProto* PROTOBUF_NULLABLE unsafe_arena_release_u32();

  private:
  const ::xla::ffi::ArrayProto_Uint32ArrayProto& _internal_u32() const;
  ::xla::ffi::ArrayProto_Uint32ArrayProto* PROTOBUF_NONNULL _internal_mutable_u32();

  public:
  // .xla.ffi.ArrayProto.Uint64ArrayProto u64 = 8;
  bool has_u64() const;
  private:
  bool _internal_has_u64() const;

  public:
  void clear_u64() ;
  const ::xla::ffi::ArrayProto_Uint64ArrayProto& u64() const;
  [[nodiscard]] ::xla::ffi::ArrayProto_Uint64ArrayProto* PROTOBUF_NULLABLE release_u64();
  ::xla::ffi::ArrayProto_Uint64ArrayProto* PROTOBUF_NONNULL mutable_u64();
  void set_allocated_u64(::xla::ffi::ArrayProto_Uint64ArrayProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_u64(::xla::ffi::ArrayProto_Uint64ArrayProto* PROTOBUF_NULLABLE value);
  ::xla::ffi::ArrayProto_Uint64ArrayProto* PROTOBUF_NULLABLE unsafe_arena_release_u64();

  private:
  const ::xla::ffi::ArrayProto_Uint64ArrayProto& _internal_u64() const;
  ::xla::ffi::ArrayProto_Uint64ArrayProto* PROTOBUF_NONNULL _internal_mutable_u64();

  public:
  // .xla.ffi.ArrayProto.FloatArrayProto f32 = 9;
  bool has_f32() const;
  private:
  bool _internal_has_f32() const;

  public:
  void clear_f32() ;
  const ::xla::ffi::ArrayProto_FloatArrayProto& f32() const;
  [[nodiscard]] ::xla::ffi::ArrayProto_FloatArrayProto* PROTOBUF_NULLABLE release_f32();
  ::xla::ffi::ArrayProto_FloatArrayProto* PROTOBUF_NONNULL mutable_f32();
  void set_allocated_f32(::xla::ffi::ArrayProto_FloatArrayProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_f32(::xla::ffi::ArrayProto_FloatArrayProto* PROTOBUF_NULLABLE value);
  ::xla::ffi::ArrayProto_FloatArrayProto* PROTOBUF_NULLABLE unsafe_arena_release_f32();

  private:
  const ::xla::ffi::ArrayProto_FloatArrayProto& _internal_f32() const;
  ::xla::ffi::ArrayProto_FloatArrayProto* PROTOBUF_NONNULL _internal_mutable_f32();

  public:
  // .xla.ffi.ArrayProto.DoubleArrayProto f64 = 10;
  bool has_f64() const;
  private:
  bool _internal_has_f64() const;

  public:
  void clear_f64() ;
  const ::xla::ffi::ArrayProto_DoubleArrayProto& f64() const;
  [[nodiscard]] ::xla::ffi::ArrayProto_DoubleArrayProto* PROTOBUF_NULLABLE release_f64();
  ::xla::ffi::ArrayProto_DoubleArrayProto* PROTOBUF_NONNULL mutable_f64();
  void set_allocated_f64(::xla::ffi::ArrayProto_DoubleArrayProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_f64(::xla::ffi::ArrayProto_DoubleArrayProto* PROTOBUF_NULLABLE value);
  ::xla::ffi::ArrayProto_DoubleArrayProto* PROTOBUF_NULLABLE unsafe_arena_release_f64();

  private:
  const ::xla::ffi::ArrayProto_DoubleArrayProto& _internal_f64() const;
  ::xla::ffi::ArrayProto_DoubleArrayProto* PROTOBUF_NONNULL _internal_mutable_f64();

  public:
  void clear_value();
  ValueCase value_case() const;
  // @@protoc_insertion_point(class_scope:xla.ffi.ArrayProto)
 private:
  class _Internal;
  void set_has_i8();
  void set_has_i16();
  void set_has_i32();
  void set_has_i64();
  void set_has_u8();
  void set_has_u16();
  void set_has_u32();
  void set_has_u64();
  void set_has_f32();
  void set_has_f64();
  inline bool has_value() const;
  inline void clear_has_value();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 10,
                                   10, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 ArrayProto& from_msg);
    union ValueUnion {
      constexpr ValueUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::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 u8_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE u16_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE u32_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE u64_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE f32_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE f64_;
    } value_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull ArrayProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT FlatAttributeProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.FlatAttributeProto) */ {
 public:
  inline FlatAttributeProto() : FlatAttributeProto(nullptr) {}
  ~FlatAttributeProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR FlatAttributeProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const FlatAttributeProto& default_instance() {
    return *reinterpret_cast<const FlatAttributeProto*>(
        &_FlatAttributeProto_default_instance_);
  }
  enum ValueCase {
    kScalar = 1,
    kArray = 2,
    kStr = 3,
    VALUE_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 12;
  friend void swap(FlatAttributeProto& a, FlatAttributeProto& b) { a.Swap(&b); }
  inline void Swap(FlatAttributeProto* 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(FlatAttributeProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit FlatAttributeProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FlatAttributeProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FlatAttributeProto& from);
  FlatAttributeProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FlatAttributeProto&& from) noexcept
      : FlatAttributeProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kScalarFieldNumber = 1,
    kArrayFieldNumber = 2,
    kStrFieldNumber = 3,
  };
  // .xla.ffi.ScalarProto scalar = 1;
  bool has_scalar() const;
  private:
  bool _internal_has_scalar() const;

  public:
  void clear_scalar() ;
  const ::xla::ffi::ScalarProto& scalar() const;
  [[nodiscard]] ::xla::ffi::ScalarProto* PROTOBUF_NULLABLE release_scalar();
  ::xla::ffi::ScalarProto* PROTOBUF_NONNULL mutable_scalar();
  void set_allocated_scalar(::xla::ffi::ScalarProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_scalar(::xla::ffi::ScalarProto* PROTOBUF_NULLABLE value);
  ::xla::ffi::ScalarProto* PROTOBUF_NULLABLE unsafe_arena_release_scalar();

  private:
  const ::xla::ffi::ScalarProto& _internal_scalar() const;
  ::xla::ffi::ScalarProto* PROTOBUF_NONNULL _internal_mutable_scalar();

  public:
  // .xla.ffi.ArrayProto array = 2;
  bool has_array() const;
  private:
  bool _internal_has_array() const;

  public:
  void clear_array() ;
  const ::xla::ffi::ArrayProto& array() const;
  [[nodiscard]] ::xla::ffi::ArrayProto* PROTOBUF_NULLABLE release_array();
  ::xla::ffi::ArrayProto* PROTOBUF_NONNULL mutable_array();
  void set_allocated_array(::xla::ffi::ArrayProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_array(::xla::ffi::ArrayProto* PROTOBUF_NULLABLE value);
  ::xla::ffi::ArrayProto* PROTOBUF_NULLABLE unsafe_arena_release_array();

  private:
  const ::xla::ffi::ArrayProto& _internal_array() const;
  ::xla::ffi::ArrayProto* PROTOBUF_NONNULL _internal_mutable_array();

  public:
  // bytes str = 3;
  bool has_str() const;
  void clear_str() ;
  const ::std::string& str() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_str(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_str();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_str();
  void set_allocated_str(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_str() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_str(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_str();

  public:
  void clear_value();
  ValueCase value_case() const;
  // @@protoc_insertion_point(class_scope:xla.ffi.FlatAttributeProto)
 private:
  class _Internal;
  void set_has_scalar();
  void set_has_array();
  void set_has_str();
  inline bool has_value() const;
  inline void clear_has_value();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 3,
                                   2, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 FlatAttributeProto& from_msg);
    union ValueUnion {
      constexpr ValueUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::xla::ffi::ScalarProto* PROTOBUF_NULLABLE scalar_;
      ::xla::ffi::ArrayProto* PROTOBUF_NULLABLE array_;
      ::google::protobuf::internal::ArenaStringPtr str_;
    } value_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull FlatAttributeProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT AttributeProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.AttributeProto) */ {
 public:
  inline AttributeProto() : AttributeProto(nullptr) {}
  ~AttributeProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR AttributeProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AttributeProto& default_instance() {
    return *reinterpret_cast<const AttributeProto*>(
        &_AttributeProto_default_instance_);
  }
  enum ValueCase {
    kScalar = 1,
    kArray = 2,
    kStr = 3,
    kDict = 4,
    VALUE_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 15;
  friend void swap(AttributeProto& a, AttributeProto& b) { a.Swap(&b); }
  inline void Swap(AttributeProto* 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(AttributeProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit AttributeProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AttributeProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AttributeProto& from);
  AttributeProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AttributeProto&& from) noexcept
      : AttributeProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kScalarFieldNumber = 1,
    kArrayFieldNumber = 2,
    kStrFieldNumber = 3,
    kDictFieldNumber = 4,
  };
  // .xla.ffi.ScalarProto scalar = 1;
  bool has_scalar() const;
  private:
  bool _internal_has_scalar() const;

  public:
  void clear_scalar() ;
  const ::xla::ffi::ScalarProto& scalar() const;
  [[nodiscard]] ::xla::ffi::ScalarProto* PROTOBUF_NULLABLE release_scalar();
  ::xla::ffi::ScalarProto* PROTOBUF_NONNULL mutable_scalar();
  void set_allocated_scalar(::xla::ffi::ScalarProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_scalar(::xla::ffi::ScalarProto* PROTOBUF_NULLABLE value);
  ::xla::ffi::ScalarProto* PROTOBUF_NULLABLE unsafe_arena_release_scalar();

  private:
  const ::xla::ffi::ScalarProto& _internal_scalar() const;
  ::xla::ffi::ScalarProto* PROTOBUF_NONNULL _internal_mutable_scalar();

  public:
  // .xla.ffi.ArrayProto array = 2;
  bool has_array() const;
  private:
  bool _internal_has_array() const;

  public:
  void clear_array() ;
  const ::xla::ffi::ArrayProto& array() const;
  [[nodiscard]] ::xla::ffi::ArrayProto* PROTOBUF_NULLABLE release_array();
  ::xla::ffi::ArrayProto* PROTOBUF_NONNULL mutable_array();
  void set_allocated_array(::xla::ffi::ArrayProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_array(::xla::ffi::ArrayProto* PROTOBUF_NULLABLE value);
  ::xla::ffi::ArrayProto* PROTOBUF_NULLABLE unsafe_arena_release_array();

  private:
  const ::xla::ffi::ArrayProto& _internal_array() const;
  ::xla::ffi::ArrayProto* PROTOBUF_NONNULL _internal_mutable_array();

  public:
  // bytes str = 3;
  bool has_str() const;
  void clear_str() ;
  const ::std::string& str() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_str(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_str();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_str();
  void set_allocated_str(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_str() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_str(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_str();

  public:
  // .xla.ffi.AttributesMapProto dict = 4;
  bool has_dict() const;
  private:
  bool _internal_has_dict() const;

  public:
  void clear_dict() ;
  const ::xla::ffi::AttributesMapProto& dict() const;
  [[nodiscard]] ::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE release_dict();
  ::xla::ffi::AttributesMapProto* PROTOBUF_NONNULL mutable_dict();
  void set_allocated_dict(::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_dict(::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE value);
  ::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE unsafe_arena_release_dict();

  private:
  const ::xla::ffi::AttributesMapProto& _internal_dict() const;
  ::xla::ffi::AttributesMapProto* PROTOBUF_NONNULL _internal_mutable_dict();

  public:
  void clear_value();
  ValueCase value_case() const;
  // @@protoc_insertion_point(class_scope:xla.ffi.AttributeProto)
 private:
  class _Internal;
  void set_has_scalar();
  void set_has_array();
  void set_has_str();
  void set_has_dict();
  inline bool has_value() const;
  inline void clear_has_value();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 4,
                                   3, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 AttributeProto& from_msg);
    union ValueUnion {
      constexpr ValueUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE scalar_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE array_;
      ::google::protobuf::internal::ArenaStringPtr str_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE dict_;
    } value_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AttributeProto_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT AttributesMapProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.AttributesMapProto) */ {
 public:
  inline AttributesMapProto() : AttributesMapProto(nullptr) {}
  ~AttributesMapProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR AttributesMapProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AttributesMapProto& default_instance() {
    return *reinterpret_cast<const AttributesMapProto*>(
        &_AttributesMapProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 17;
  friend void swap(AttributesMapProto& a, AttributesMapProto& b) { a.Swap(&b); }
  inline void Swap(AttributesMapProto* 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(AttributesMapProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit AttributesMapProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AttributesMapProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AttributesMapProto& from);
  AttributesMapProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AttributesMapProto&& from) noexcept
      : AttributesMapProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kAttrsFieldNumber = 1,
  };
  // map<string, .xla.ffi.AttributeProto> attrs = 1;
  int attrs_size() const;
  private:
  int _internal_attrs_size() const;

  public:
  void clear_attrs() ;
  const ::google::protobuf::Map<std::string, ::xla::ffi::AttributeProto>& attrs() const;
  ::google::protobuf::Map<std::string, ::xla::ffi::AttributeProto>* PROTOBUF_NONNULL mutable_attrs();

  private:
  const ::google::protobuf::Map<std::string, ::xla::ffi::AttributeProto>& _internal_attrs() const;
  ::google::protobuf::Map<std::string, ::xla::ffi::AttributeProto>* PROTOBUF_NONNULL _internal_mutable_attrs();

  public:
  // @@protoc_insertion_point(class_scope:xla.ffi.AttributesMapProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   2, 40,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 AttributesMapProto& from_msg);
    ::google::protobuf::internal::MapField<AttributesMapProto_AttrsEntry_DoNotUse, std::string, ::xla::ffi::AttributeProto,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>
        attrs_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AttributesMapProto_class_data_;
// -------------------------------------------------------------------

class AttributesMapProto_AttrsEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<std::string, ::google::protobuf::Message,
                             ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                             ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE> {
 public:
  using SuperType =
      ::google::protobuf::internal::MapEntry<std::string, ::google::protobuf::Message,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>;
  AttributesMapProto_AttrsEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR AttributesMapProto_AttrsEntry_DoNotUse(::google::protobuf::internal::ConstantInitialized);
  explicit AttributesMapProto_AttrsEntry_DoNotUse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr const void* PROTOBUF_NONNULL internal_default_instance() {
    return &_AttributesMapProto_AttrsEntry_DoNotUse_default_instance_;
  }


  static constexpr auto InternalGenerateClassData_();

 private:
  friend class ::google::protobuf::MessageLite;
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 49,
                                   2>
      _table_;

  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_();
};
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull AttributesMapProto_AttrsEntry_DoNotUse_class_data_;
// -------------------------------------------------------------------

class FlatAttributesMapProto_AttrsEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<std::string, ::google::protobuf::Message,
                             ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                             ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE> {
 public:
  using SuperType =
      ::google::protobuf::internal::MapEntry<std::string, ::google::protobuf::Message,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>;
  FlatAttributesMapProto_AttrsEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR FlatAttributesMapProto_AttrsEntry_DoNotUse(::google::protobuf::internal::ConstantInitialized);
  explicit FlatAttributesMapProto_AttrsEntry_DoNotUse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr const void* PROTOBUF_NONNULL internal_default_instance() {
    return &_FlatAttributesMapProto_AttrsEntry_DoNotUse_default_instance_;
  }


  static constexpr auto InternalGenerateClassData_();

 private:
  friend class ::google::protobuf::MessageLite;
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 53,
                                   2>
      _table_;

  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_();
};
PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull FlatAttributesMapProto_AttrsEntry_DoNotUse_class_data_;
// -------------------------------------------------------------------

class PROTOBUF_EXPORT FlatAttributesMapProto final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:xla.ffi.FlatAttributesMapProto) */ {
 public:
  inline FlatAttributesMapProto() : FlatAttributesMapProto(nullptr) {}
  ~FlatAttributesMapProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR FlatAttributesMapProto(::google::protobuf::internal::ConstantInitialized);

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

  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);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const FlatAttributesMapProto& default_instance() {
    return *reinterpret_cast<const FlatAttributesMapProto*>(
        &_FlatAttributesMapProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 14;
  friend void swap(FlatAttributesMapProto& a, FlatAttributesMapProto& b) { a.Swap(&b); }
  inline void Swap(FlatAttributesMapProto* 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(FlatAttributesMapProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::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
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

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

 protected:
  explicit FlatAttributesMapProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FlatAttributesMapProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FlatAttributesMapProto& from);
  FlatAttributesMapProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FlatAttributesMapProto&& from) noexcept
      : FlatAttributesMapProto(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kAttrsFieldNumber = 1,
  };
  // map<string, .xla.ffi.FlatAttributeProto> attrs = 1;
  int attrs_size() const;
  private:
  int _internal_attrs_size() const;

  public:
  void clear_attrs() ;
  const ::google::protobuf::Map<std::string, ::xla::ffi::FlatAttributeProto>& attrs() const;
  ::google::protobuf::Map<std::string, ::xla::ffi::FlatAttributeProto>* PROTOBUF_NONNULL mutable_attrs();

  private:
  const ::google::protobuf::Map<std::string, ::xla::ffi::FlatAttributeProto>& _internal_attrs() const;
  ::google::protobuf::Map<std::string, ::xla::ffi::FlatAttributeProto>* PROTOBUF_NONNULL _internal_mutable_attrs();

  public:
  // @@protoc_insertion_point(class_scope:xla.ffi.FlatAttributesMapProto)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   2, 44,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::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 FlatAttributesMapProto& from_msg);
    ::google::protobuf::internal::MapField<FlatAttributesMapProto_AttrsEntry_DoNotUse, std::string, ::xla::ffi::FlatAttributeProto,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>
        attrs_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_xla_2fffi_2fattribute_5fmap_2eproto;
};

PROTOBUF_EXPORT extern const ::google::protobuf::internal::ClassDataFull FlatAttributesMapProto_class_data_;

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




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


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

// ScalarProto

// bool b = 1;
inline bool ScalarProto::has_b() const {
  return value_case() == kB;
}
inline void ScalarProto::set_has_b() {
  _impl_._oneof_case_[0] = kB;
}
inline void ScalarProto::clear_b() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kB) {
    _impl_.value_.b_ = false;
    clear_has_value();
  }
}
inline bool ScalarProto::b() const {
  // @@protoc_insertion_point(field_get:xla.ffi.ScalarProto.b)
  return _internal_b();
}
inline void ScalarProto::set_b(bool value) {
  if (value_case() != kB) {
    clear_value();
    set_has_b();
  }
  _impl_.value_.b_ = value;
  // @@protoc_insertion_point(field_set:xla.ffi.ScalarProto.b)
}
inline bool ScalarProto::_internal_b() const {
  if (value_case() == kB) {
    return _impl_.value_.b_;
  }
  return false;
}

// int32 i8 = 2;
inline bool ScalarProto::has_i8() const {
  return value_case() == kI8;
}
inline void ScalarProto::set_has_i8() {
  _impl_._oneof_case_[0] = kI8;
}
inline void ScalarProto::clear_i8() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kI8) {
    _impl_.value_.i8_ = 0;
    clear_has_value();
  }
}
inline ::int32_t ScalarProto::i8() const {
  // @@protoc_insertion_point(field_get:xla.ffi.ScalarProto.i8)
  return _internal_i8();
}
inline void ScalarProto::set_i8(::int32_t value) {
  if (value_case() != kI8) {
    clear_value();
    set_has_i8();
  }
  _impl_.value_.i8_ = value;
  // @@protoc_insertion_point(field_set:xla.ffi.ScalarProto.i8)
}
inline ::int32_t ScalarProto::_internal_i8() const {
  if (value_case() == kI8) {
    return _impl_.value_.i8_;
  }
  return 0;
}

// int32 i16 = 3;
inline bool ScalarProto::has_i16() const {
  return value_case() == kI16;
}
inline void ScalarProto::set_has_i16() {
  _impl_._oneof_case_[0] = kI16;
}
inline void ScalarProto::clear_i16() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kI16) {
    _impl_.value_.i16_ = 0;
    clear_has_value();
  }
}
inline ::int32_t ScalarProto::i16() const {
  // @@protoc_insertion_point(field_get:xla.ffi.ScalarProto.i16)
  return _internal_i16();
}
inline void ScalarProto::set_i16(::int32_t value) {
  if (value_case() != kI16) {
    clear_value();
    set_has_i16();
  }
  _impl_.value_.i16_ = value;
  // @@protoc_insertion_point(field_set:xla.ffi.ScalarProto.i16)
}
inline ::int32_t ScalarProto::_internal_i16() const {
  if (value_case() == kI16) {
    return _impl_.value_.i16_;
  }
  return 0;
}

// int32 i32 = 4;
inline bool ScalarProto::has_i32() const {
  return value_case() == kI32;
}
inline void ScalarProto::set_has_i32() {
  _impl_._oneof_case_[0] = kI32;
}
inline void ScalarProto::clear_i32() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kI32) {
    _impl_.value_.i32_ = 0;
    clear_has_value();
  }
}
inline ::int32_t ScalarProto::i32() const {
  // @@protoc_insertion_point(field_get:xla.ffi.ScalarProto.i32)
  return _internal_i32();
}
inline void ScalarProto::set_i32(::int32_t value) {
  if (value_case() != kI32) {
    clear_value();
    set_has_i32();
  }
  _impl_.value_.i32_ = value;
  // @@protoc_insertion_point(field_set:xla.ffi.ScalarProto.i32)
}
inline ::int32_t ScalarProto::_internal_i32() const {
  if (value_case() == kI32) {
    return _impl_.value_.i32_;
  }
  return 0;
}

// int64 i64 = 5;
inline bool ScalarProto::has_i64() const {
  return value_case() == kI64;
}
inline void ScalarProto::set_has_i64() {
  _impl_._oneof_case_[0] = kI64;
}
inline void ScalarProto::clear_i64() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kI64) {
    _impl_.value_.i64_ = ::int64_t{0};
    clear_has_value();
  }
}
inline ::int64_t ScalarProto::i64() const {
  // @@protoc_insertion_point(field_get:xla.ffi.ScalarProto.i64)
  return _internal_i64();
}
inline void ScalarProto::set_i64(::int64_t value) {
  if (value_case() != kI64) {
    clear_value();
    set_has_i64();
  }
  _impl_.value_.i64_ = value;
  // @@protoc_insertion_point(field_set:xla.ffi.ScalarProto.i64)
}
inline ::int64_t ScalarProto::_internal_i64() const {
  if (value_case() == kI64) {
    return _impl_.value_.i64_;
  }
  return ::int64_t{0};
}

// uint32 u8 = 6;
inline bool ScalarProto::has_u8() const {
  return value_case() == kU8;
}
inline void ScalarProto::set_has_u8() {
  _impl_._oneof_case_[0] = kU8;
}
inline void ScalarProto::clear_u8() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kU8) {
    _impl_.value_.u8_ = 0u;
    clear_has_value();
  }
}
inline ::uint32_t ScalarProto::u8() const {
  // @@protoc_insertion_point(field_get:xla.ffi.ScalarProto.u8)
  return _internal_u8();
}
inline void ScalarProto::set_u8(::uint32_t value) {
  if (value_case() != kU8) {
    clear_value();
    set_has_u8();
  }
  _impl_.value_.u8_ = value;
  // @@protoc_insertion_point(field_set:xla.ffi.ScalarProto.u8)
}
inline ::uint32_t ScalarProto::_internal_u8() const {
  if (value_case() == kU8) {
    return _impl_.value_.u8_;
  }
  return 0u;
}

// uint32 u16 = 7;
inline bool ScalarProto::has_u16() const {
  return value_case() == kU16;
}
inline void ScalarProto::set_has_u16() {
  _impl_._oneof_case_[0] = kU16;
}
inline void ScalarProto::clear_u16() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kU16) {
    _impl_.value_.u16_ = 0u;
    clear_has_value();
  }
}
inline ::uint32_t ScalarProto::u16() const {
  // @@protoc_insertion_point(field_get:xla.ffi.ScalarProto.u16)
  return _internal_u16();
}
inline void ScalarProto::set_u16(::uint32_t value) {
  if (value_case() != kU16) {
    clear_value();
    set_has_u16();
  }
  _impl_.value_.u16_ = value;
  // @@protoc_insertion_point(field_set:xla.ffi.ScalarProto.u16)
}
inline ::uint32_t ScalarProto::_internal_u16() const {
  if (value_case() == kU16) {
    return _impl_.value_.u16_;
  }
  return 0u;
}

// uint32 u32 = 8;
inline bool ScalarProto::has_u32() const {
  return value_case() == kU32;
}
inline void ScalarProto::set_has_u32() {
  _impl_._oneof_case_[0] = kU32;
}
inline void ScalarProto::clear_u32() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kU32) {
    _impl_.value_.u32_ = 0u;
    clear_has_value();
  }
}
inline ::uint32_t ScalarProto::u32() const {
  // @@protoc_insertion_point(field_get:xla.ffi.ScalarProto.u32)
  return _internal_u32();
}
inline void ScalarProto::set_u32(::uint32_t value) {
  if (value_case() != kU32) {
    clear_value();
    set_has_u32();
  }
  _impl_.value_.u32_ = value;
  // @@protoc_insertion_point(field_set:xla.ffi.ScalarProto.u32)
}
inline ::uint32_t ScalarProto::_internal_u32() const {
  if (value_case() == kU32) {
    return _impl_.value_.u32_;
  }
  return 0u;
}

// uint64 u64 = 9;
inline bool ScalarProto::has_u64() const {
  return value_case() == kU64;
}
inline void ScalarProto::set_has_u64() {
  _impl_._oneof_case_[0] = kU64;
}
inline void ScalarProto::clear_u64() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kU64) {
    _impl_.value_.u64_ = ::uint64_t{0u};
    clear_has_value();
  }
}
inline ::uint64_t ScalarProto::u64() const {
  // @@protoc_insertion_point(field_get:xla.ffi.ScalarProto.u64)
  return _internal_u64();
}
inline void ScalarProto::set_u64(::uint64_t value) {
  if (value_case() != kU64) {
    clear_value();
    set_has_u64();
  }
  _impl_.value_.u64_ = value;
  // @@protoc_insertion_point(field_set:xla.ffi.ScalarProto.u64)
}
inline ::uint64_t ScalarProto::_internal_u64() const {
  if (value_case() == kU64) {
    return _impl_.value_.u64_;
  }
  return ::uint64_t{0u};
}

// float f32 = 10;
inline bool ScalarProto::has_f32() const {
  return value_case() == kF32;
}
inline void ScalarProto::set_has_f32() {
  _impl_._oneof_case_[0] = kF32;
}
inline void ScalarProto::clear_f32() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kF32) {
    _impl_.value_.f32_ = 0;
    clear_has_value();
  }
}
inline float ScalarProto::f32() const {
  // @@protoc_insertion_point(field_get:xla.ffi.ScalarProto.f32)
  return _internal_f32();
}
inline void ScalarProto::set_f32(float value) {
  if (value_case() != kF32) {
    clear_value();
    set_has_f32();
  }
  _impl_.value_.f32_ = value;
  // @@protoc_insertion_point(field_set:xla.ffi.ScalarProto.f32)
}
inline float ScalarProto::_internal_f32() const {
  if (value_case() == kF32) {
    return _impl_.value_.f32_;
  }
  return 0;
}

// double f64 = 11;
inline bool ScalarProto::has_f64() const {
  return value_case() == kF64;
}
inline void ScalarProto::set_has_f64() {
  _impl_._oneof_case_[0] = kF64;
}
inline void ScalarProto::clear_f64() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kF64) {
    _impl_.value_.f64_ = 0;
    clear_has_value();
  }
}
inline double ScalarProto::f64() const {
  // @@protoc_insertion_point(field_get:xla.ffi.ScalarProto.f64)
  return _internal_f64();
}
inline void ScalarProto::set_f64(double value) {
  if (value_case() != kF64) {
    clear_value();
    set_has_f64();
  }
  _impl_.value_.f64_ = value;
  // @@protoc_insertion_point(field_set:xla.ffi.ScalarProto.f64)
}
inline double ScalarProto::_internal_f64() const {
  if (value_case() == kF64) {
    return _impl_.value_.f64_;
  }
  return 0;
}

inline bool ScalarProto::has_value() const {
  return value_case() != VALUE_NOT_SET;
}
inline void ScalarProto::clear_has_value() {
  _impl_._oneof_case_[0] = VALUE_NOT_SET;
}
inline ScalarProto::ValueCase ScalarProto::value_case() const {
  return ScalarProto::ValueCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// ArrayProto_Int8ArrayProto

// repeated int32 values = 1;
inline int ArrayProto_Int8ArrayProto::_internal_values_size() const {
  return _internal_values().size();
}
inline int ArrayProto_Int8ArrayProto::values_size() const {
  return _internal_values_size();
}
inline void ArrayProto_Int8ArrayProto::clear_values() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.values_.Clear();
}
inline ::int32_t ArrayProto_Int8ArrayProto::values(int index) const {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.Int8ArrayProto.values)
  return _internal_values().Get(index);
}
inline void ArrayProto_Int8ArrayProto::set_values(int index, ::int32_t value) {
  _internal_mutable_values()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ffi.ArrayProto.Int8ArrayProto.values)
}
inline void ArrayProto_Int8ArrayProto::add_values(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_values()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ffi.ArrayProto.Int8ArrayProto.values)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& ArrayProto_Int8ArrayProto::values() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ffi.ArrayProto.Int8ArrayProto.values)
  return _internal_values();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL ArrayProto_Int8ArrayProto::mutable_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ffi.ArrayProto.Int8ArrayProto.values)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_values();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
ArrayProto_Int8ArrayProto::_internal_values() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.values_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
ArrayProto_Int8ArrayProto::_internal_mutable_values() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.values_;
}

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

// ArrayProto_Int16ArrayProto

// repeated int32 values = 1;
inline int ArrayProto_Int16ArrayProto::_internal_values_size() const {
  return _internal_values().size();
}
inline int ArrayProto_Int16ArrayProto::values_size() const {
  return _internal_values_size();
}
inline void ArrayProto_Int16ArrayProto::clear_values() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.values_.Clear();
}
inline ::int32_t ArrayProto_Int16ArrayProto::values(int index) const {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.Int16ArrayProto.values)
  return _internal_values().Get(index);
}
inline void ArrayProto_Int16ArrayProto::set_values(int index, ::int32_t value) {
  _internal_mutable_values()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ffi.ArrayProto.Int16ArrayProto.values)
}
inline void ArrayProto_Int16ArrayProto::add_values(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_values()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ffi.ArrayProto.Int16ArrayProto.values)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& ArrayProto_Int16ArrayProto::values() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ffi.ArrayProto.Int16ArrayProto.values)
  return _internal_values();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL ArrayProto_Int16ArrayProto::mutable_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ffi.ArrayProto.Int16ArrayProto.values)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_values();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
ArrayProto_Int16ArrayProto::_internal_values() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.values_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
ArrayProto_Int16ArrayProto::_internal_mutable_values() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.values_;
}

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

// ArrayProto_Int32ArrayProto

// repeated int32 values = 1;
inline int ArrayProto_Int32ArrayProto::_internal_values_size() const {
  return _internal_values().size();
}
inline int ArrayProto_Int32ArrayProto::values_size() const {
  return _internal_values_size();
}
inline void ArrayProto_Int32ArrayProto::clear_values() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.values_.Clear();
}
inline ::int32_t ArrayProto_Int32ArrayProto::values(int index) const {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.Int32ArrayProto.values)
  return _internal_values().Get(index);
}
inline void ArrayProto_Int32ArrayProto::set_values(int index, ::int32_t value) {
  _internal_mutable_values()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ffi.ArrayProto.Int32ArrayProto.values)
}
inline void ArrayProto_Int32ArrayProto::add_values(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_values()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ffi.ArrayProto.Int32ArrayProto.values)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& ArrayProto_Int32ArrayProto::values() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ffi.ArrayProto.Int32ArrayProto.values)
  return _internal_values();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL ArrayProto_Int32ArrayProto::mutable_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ffi.ArrayProto.Int32ArrayProto.values)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_values();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
ArrayProto_Int32ArrayProto::_internal_values() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.values_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
ArrayProto_Int32ArrayProto::_internal_mutable_values() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.values_;
}

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

// ArrayProto_Int64ArrayProto

// repeated int64 values = 1;
inline int ArrayProto_Int64ArrayProto::_internal_values_size() const {
  return _internal_values().size();
}
inline int ArrayProto_Int64ArrayProto::values_size() const {
  return _internal_values_size();
}
inline void ArrayProto_Int64ArrayProto::clear_values() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.values_.Clear();
}
inline ::int64_t ArrayProto_Int64ArrayProto::values(int index) const {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.Int64ArrayProto.values)
  return _internal_values().Get(index);
}
inline void ArrayProto_Int64ArrayProto::set_values(int index, ::int64_t value) {
  _internal_mutable_values()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ffi.ArrayProto.Int64ArrayProto.values)
}
inline void ArrayProto_Int64ArrayProto::add_values(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_values()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ffi.ArrayProto.Int64ArrayProto.values)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& ArrayProto_Int64ArrayProto::values() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ffi.ArrayProto.Int64ArrayProto.values)
  return _internal_values();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL ArrayProto_Int64ArrayProto::mutable_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ffi.ArrayProto.Int64ArrayProto.values)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_values();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
ArrayProto_Int64ArrayProto::_internal_values() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.values_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
ArrayProto_Int64ArrayProto::_internal_mutable_values() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.values_;
}

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

// ArrayProto_Uint8ArrayProto

// repeated uint32 values = 1;
inline int ArrayProto_Uint8ArrayProto::_internal_values_size() const {
  return _internal_values().size();
}
inline int ArrayProto_Uint8ArrayProto::values_size() const {
  return _internal_values_size();
}
inline void ArrayProto_Uint8ArrayProto::clear_values() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.values_.Clear();
}
inline ::uint32_t ArrayProto_Uint8ArrayProto::values(int index) const {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.Uint8ArrayProto.values)
  return _internal_values().Get(index);
}
inline void ArrayProto_Uint8ArrayProto::set_values(int index, ::uint32_t value) {
  _internal_mutable_values()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ffi.ArrayProto.Uint8ArrayProto.values)
}
inline void ArrayProto_Uint8ArrayProto::add_values(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_values()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ffi.ArrayProto.Uint8ArrayProto.values)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& ArrayProto_Uint8ArrayProto::values() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ffi.ArrayProto.Uint8ArrayProto.values)
  return _internal_values();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL ArrayProto_Uint8ArrayProto::mutable_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ffi.ArrayProto.Uint8ArrayProto.values)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_values();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
ArrayProto_Uint8ArrayProto::_internal_values() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.values_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
ArrayProto_Uint8ArrayProto::_internal_mutable_values() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.values_;
}

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

// ArrayProto_Uint16ArrayProto

// repeated uint32 values = 1;
inline int ArrayProto_Uint16ArrayProto::_internal_values_size() const {
  return _internal_values().size();
}
inline int ArrayProto_Uint16ArrayProto::values_size() const {
  return _internal_values_size();
}
inline void ArrayProto_Uint16ArrayProto::clear_values() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.values_.Clear();
}
inline ::uint32_t ArrayProto_Uint16ArrayProto::values(int index) const {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.Uint16ArrayProto.values)
  return _internal_values().Get(index);
}
inline void ArrayProto_Uint16ArrayProto::set_values(int index, ::uint32_t value) {
  _internal_mutable_values()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ffi.ArrayProto.Uint16ArrayProto.values)
}
inline void ArrayProto_Uint16ArrayProto::add_values(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_values()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ffi.ArrayProto.Uint16ArrayProto.values)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& ArrayProto_Uint16ArrayProto::values() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ffi.ArrayProto.Uint16ArrayProto.values)
  return _internal_values();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL ArrayProto_Uint16ArrayProto::mutable_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ffi.ArrayProto.Uint16ArrayProto.values)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_values();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
ArrayProto_Uint16ArrayProto::_internal_values() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.values_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
ArrayProto_Uint16ArrayProto::_internal_mutable_values() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.values_;
}

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

// ArrayProto_Uint32ArrayProto

// repeated uint32 values = 1;
inline int ArrayProto_Uint32ArrayProto::_internal_values_size() const {
  return _internal_values().size();
}
inline int ArrayProto_Uint32ArrayProto::values_size() const {
  return _internal_values_size();
}
inline void ArrayProto_Uint32ArrayProto::clear_values() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.values_.Clear();
}
inline ::uint32_t ArrayProto_Uint32ArrayProto::values(int index) const {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.Uint32ArrayProto.values)
  return _internal_values().Get(index);
}
inline void ArrayProto_Uint32ArrayProto::set_values(int index, ::uint32_t value) {
  _internal_mutable_values()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ffi.ArrayProto.Uint32ArrayProto.values)
}
inline void ArrayProto_Uint32ArrayProto::add_values(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_values()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ffi.ArrayProto.Uint32ArrayProto.values)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& ArrayProto_Uint32ArrayProto::values() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ffi.ArrayProto.Uint32ArrayProto.values)
  return _internal_values();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL ArrayProto_Uint32ArrayProto::mutable_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ffi.ArrayProto.Uint32ArrayProto.values)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_values();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
ArrayProto_Uint32ArrayProto::_internal_values() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.values_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
ArrayProto_Uint32ArrayProto::_internal_mutable_values() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.values_;
}

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

// ArrayProto_Uint64ArrayProto

// repeated uint64 values = 1;
inline int ArrayProto_Uint64ArrayProto::_internal_values_size() const {
  return _internal_values().size();
}
inline int ArrayProto_Uint64ArrayProto::values_size() const {
  return _internal_values_size();
}
inline void ArrayProto_Uint64ArrayProto::clear_values() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.values_.Clear();
}
inline ::uint64_t ArrayProto_Uint64ArrayProto::values(int index) const {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.Uint64ArrayProto.values)
  return _internal_values().Get(index);
}
inline void ArrayProto_Uint64ArrayProto::set_values(int index, ::uint64_t value) {
  _internal_mutable_values()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ffi.ArrayProto.Uint64ArrayProto.values)
}
inline void ArrayProto_Uint64ArrayProto::add_values(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_values()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ffi.ArrayProto.Uint64ArrayProto.values)
}
inline const ::google::protobuf::RepeatedField<::uint64_t>& ArrayProto_Uint64ArrayProto::values() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ffi.ArrayProto.Uint64ArrayProto.values)
  return _internal_values();
}
inline ::google::protobuf::RepeatedField<::uint64_t>* PROTOBUF_NONNULL ArrayProto_Uint64ArrayProto::mutable_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ffi.ArrayProto.Uint64ArrayProto.values)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_values();
}
inline const ::google::protobuf::RepeatedField<::uint64_t>&
ArrayProto_Uint64ArrayProto::_internal_values() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.values_;
}
inline ::google::protobuf::RepeatedField<::uint64_t>* PROTOBUF_NONNULL
ArrayProto_Uint64ArrayProto::_internal_mutable_values() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.values_;
}

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

// ArrayProto_FloatArrayProto

// repeated float values = 1;
inline int ArrayProto_FloatArrayProto::_internal_values_size() const {
  return _internal_values().size();
}
inline int ArrayProto_FloatArrayProto::values_size() const {
  return _internal_values_size();
}
inline void ArrayProto_FloatArrayProto::clear_values() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.values_.Clear();
}
inline float ArrayProto_FloatArrayProto::values(int index) const {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.FloatArrayProto.values)
  return _internal_values().Get(index);
}
inline void ArrayProto_FloatArrayProto::set_values(int index, float value) {
  _internal_mutable_values()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ffi.ArrayProto.FloatArrayProto.values)
}
inline void ArrayProto_FloatArrayProto::add_values(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_values()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ffi.ArrayProto.FloatArrayProto.values)
}
inline const ::google::protobuf::RepeatedField<float>& ArrayProto_FloatArrayProto::values() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ffi.ArrayProto.FloatArrayProto.values)
  return _internal_values();
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL ArrayProto_FloatArrayProto::mutable_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ffi.ArrayProto.FloatArrayProto.values)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_values();
}
inline const ::google::protobuf::RepeatedField<float>&
ArrayProto_FloatArrayProto::_internal_values() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.values_;
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL
ArrayProto_FloatArrayProto::_internal_mutable_values() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.values_;
}

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

// ArrayProto_DoubleArrayProto

// repeated double values = 1;
inline int ArrayProto_DoubleArrayProto::_internal_values_size() const {
  return _internal_values().size();
}
inline int ArrayProto_DoubleArrayProto::values_size() const {
  return _internal_values_size();
}
inline void ArrayProto_DoubleArrayProto::clear_values() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.values_.Clear();
}
inline double ArrayProto_DoubleArrayProto::values(int index) const {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.DoubleArrayProto.values)
  return _internal_values().Get(index);
}
inline void ArrayProto_DoubleArrayProto::set_values(int index, double value) {
  _internal_mutable_values()->Set(index, value);
  // @@protoc_insertion_point(field_set:xla.ffi.ArrayProto.DoubleArrayProto.values)
}
inline void ArrayProto_DoubleArrayProto::add_values(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_values()->Add(value);
  // @@protoc_insertion_point(field_add:xla.ffi.ArrayProto.DoubleArrayProto.values)
}
inline const ::google::protobuf::RepeatedField<double>& ArrayProto_DoubleArrayProto::values() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:xla.ffi.ArrayProto.DoubleArrayProto.values)
  return _internal_values();
}
inline ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL ArrayProto_DoubleArrayProto::mutable_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:xla.ffi.ArrayProto.DoubleArrayProto.values)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_values();
}
inline const ::google::protobuf::RepeatedField<double>&
ArrayProto_DoubleArrayProto::_internal_values() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.values_;
}
inline ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL
ArrayProto_DoubleArrayProto::_internal_mutable_values() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.values_;
}

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

// ArrayProto

// .xla.ffi.ArrayProto.Int8ArrayProto i8 = 1;
inline bool ArrayProto::has_i8() const {
  return value_case() == kI8;
}
inline bool ArrayProto::_internal_has_i8() const {
  return value_case() == kI8;
}
inline void ArrayProto::set_has_i8() {
  _impl_._oneof_case_[0] = kI8;
}
inline void ArrayProto::clear_i8() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kI8) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.i8_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.i8_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ArrayProto_Int8ArrayProto* PROTOBUF_NULLABLE ArrayProto::release_i8() {
  // @@protoc_insertion_point(field_release:xla.ffi.ArrayProto.i8)
  if (value_case() == kI8) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Int8ArrayProto*>(_impl_.value_.i8_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.i8_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ArrayProto_Int8ArrayProto& ArrayProto::_internal_i8() const {
  return value_case() == kI8 ? *reinterpret_cast<::xla::ffi::ArrayProto_Int8ArrayProto*>(_impl_.value_.i8_) : reinterpret_cast<::xla::ffi::ArrayProto_Int8ArrayProto&>(::xla::ffi::_ArrayProto_Int8ArrayProto_default_instance_);
}
inline const ::xla::ffi::ArrayProto_Int8ArrayProto& ArrayProto::i8() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.i8)
  return _internal_i8();
}
inline ::xla::ffi::ArrayProto_Int8ArrayProto* PROTOBUF_NULLABLE ArrayProto::unsafe_arena_release_i8() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.ArrayProto.i8)
  if (value_case() == kI8) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Int8ArrayProto*>(_impl_.value_.i8_);
    _impl_.value_.i8_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ArrayProto::unsafe_arena_set_allocated_i8(
    ::xla::ffi::ArrayProto_Int8ArrayProto* 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_value();
  if (value) {
    set_has_i8();
    _impl_.value_.i8_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.ArrayProto.i8)
}
inline ::xla::ffi::ArrayProto_Int8ArrayProto* PROTOBUF_NONNULL ArrayProto::_internal_mutable_i8() {
  if (value_case() != kI8) {
    clear_value();
    set_has_i8();
    _impl_.value_.i8_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ArrayProto_Int8ArrayProto>(GetArena()));
  }
  return reinterpret_cast<::xla::ffi::ArrayProto_Int8ArrayProto*>(_impl_.value_.i8_);
}
inline ::xla::ffi::ArrayProto_Int8ArrayProto* PROTOBUF_NONNULL ArrayProto::mutable_i8()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ArrayProto_Int8ArrayProto* _msg = _internal_mutable_i8();
  // @@protoc_insertion_point(field_mutable:xla.ffi.ArrayProto.i8)
  return _msg;
}

// .xla.ffi.ArrayProto.Int16ArrayProto i16 = 2;
inline bool ArrayProto::has_i16() const {
  return value_case() == kI16;
}
inline bool ArrayProto::_internal_has_i16() const {
  return value_case() == kI16;
}
inline void ArrayProto::set_has_i16() {
  _impl_._oneof_case_[0] = kI16;
}
inline void ArrayProto::clear_i16() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kI16) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.i16_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.i16_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ArrayProto_Int16ArrayProto* PROTOBUF_NULLABLE ArrayProto::release_i16() {
  // @@protoc_insertion_point(field_release:xla.ffi.ArrayProto.i16)
  if (value_case() == kI16) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Int16ArrayProto*>(_impl_.value_.i16_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.i16_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ArrayProto_Int16ArrayProto& ArrayProto::_internal_i16() const {
  return value_case() == kI16 ? *reinterpret_cast<::xla::ffi::ArrayProto_Int16ArrayProto*>(_impl_.value_.i16_) : reinterpret_cast<::xla::ffi::ArrayProto_Int16ArrayProto&>(::xla::ffi::_ArrayProto_Int16ArrayProto_default_instance_);
}
inline const ::xla::ffi::ArrayProto_Int16ArrayProto& ArrayProto::i16() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.i16)
  return _internal_i16();
}
inline ::xla::ffi::ArrayProto_Int16ArrayProto* PROTOBUF_NULLABLE ArrayProto::unsafe_arena_release_i16() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.ArrayProto.i16)
  if (value_case() == kI16) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Int16ArrayProto*>(_impl_.value_.i16_);
    _impl_.value_.i16_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ArrayProto::unsafe_arena_set_allocated_i16(
    ::xla::ffi::ArrayProto_Int16ArrayProto* 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_value();
  if (value) {
    set_has_i16();
    _impl_.value_.i16_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.ArrayProto.i16)
}
inline ::xla::ffi::ArrayProto_Int16ArrayProto* PROTOBUF_NONNULL ArrayProto::_internal_mutable_i16() {
  if (value_case() != kI16) {
    clear_value();
    set_has_i16();
    _impl_.value_.i16_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ArrayProto_Int16ArrayProto>(GetArena()));
  }
  return reinterpret_cast<::xla::ffi::ArrayProto_Int16ArrayProto*>(_impl_.value_.i16_);
}
inline ::xla::ffi::ArrayProto_Int16ArrayProto* PROTOBUF_NONNULL ArrayProto::mutable_i16()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ArrayProto_Int16ArrayProto* _msg = _internal_mutable_i16();
  // @@protoc_insertion_point(field_mutable:xla.ffi.ArrayProto.i16)
  return _msg;
}

// .xla.ffi.ArrayProto.Int32ArrayProto i32 = 3;
inline bool ArrayProto::has_i32() const {
  return value_case() == kI32;
}
inline bool ArrayProto::_internal_has_i32() const {
  return value_case() == kI32;
}
inline void ArrayProto::set_has_i32() {
  _impl_._oneof_case_[0] = kI32;
}
inline void ArrayProto::clear_i32() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kI32) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.i32_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.i32_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ArrayProto_Int32ArrayProto* PROTOBUF_NULLABLE ArrayProto::release_i32() {
  // @@protoc_insertion_point(field_release:xla.ffi.ArrayProto.i32)
  if (value_case() == kI32) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Int32ArrayProto*>(_impl_.value_.i32_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.i32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ArrayProto_Int32ArrayProto& ArrayProto::_internal_i32() const {
  return value_case() == kI32 ? *reinterpret_cast<::xla::ffi::ArrayProto_Int32ArrayProto*>(_impl_.value_.i32_) : reinterpret_cast<::xla::ffi::ArrayProto_Int32ArrayProto&>(::xla::ffi::_ArrayProto_Int32ArrayProto_default_instance_);
}
inline const ::xla::ffi::ArrayProto_Int32ArrayProto& ArrayProto::i32() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.i32)
  return _internal_i32();
}
inline ::xla::ffi::ArrayProto_Int32ArrayProto* PROTOBUF_NULLABLE ArrayProto::unsafe_arena_release_i32() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.ArrayProto.i32)
  if (value_case() == kI32) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Int32ArrayProto*>(_impl_.value_.i32_);
    _impl_.value_.i32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ArrayProto::unsafe_arena_set_allocated_i32(
    ::xla::ffi::ArrayProto_Int32ArrayProto* 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_value();
  if (value) {
    set_has_i32();
    _impl_.value_.i32_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.ArrayProto.i32)
}
inline ::xla::ffi::ArrayProto_Int32ArrayProto* PROTOBUF_NONNULL ArrayProto::_internal_mutable_i32() {
  if (value_case() != kI32) {
    clear_value();
    set_has_i32();
    _impl_.value_.i32_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ArrayProto_Int32ArrayProto>(GetArena()));
  }
  return reinterpret_cast<::xla::ffi::ArrayProto_Int32ArrayProto*>(_impl_.value_.i32_);
}
inline ::xla::ffi::ArrayProto_Int32ArrayProto* PROTOBUF_NONNULL ArrayProto::mutable_i32()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ArrayProto_Int32ArrayProto* _msg = _internal_mutable_i32();
  // @@protoc_insertion_point(field_mutable:xla.ffi.ArrayProto.i32)
  return _msg;
}

// .xla.ffi.ArrayProto.Int64ArrayProto i64 = 4;
inline bool ArrayProto::has_i64() const {
  return value_case() == kI64;
}
inline bool ArrayProto::_internal_has_i64() const {
  return value_case() == kI64;
}
inline void ArrayProto::set_has_i64() {
  _impl_._oneof_case_[0] = kI64;
}
inline void ArrayProto::clear_i64() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kI64) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.i64_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.i64_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ArrayProto_Int64ArrayProto* PROTOBUF_NULLABLE ArrayProto::release_i64() {
  // @@protoc_insertion_point(field_release:xla.ffi.ArrayProto.i64)
  if (value_case() == kI64) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Int64ArrayProto*>(_impl_.value_.i64_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.i64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ArrayProto_Int64ArrayProto& ArrayProto::_internal_i64() const {
  return value_case() == kI64 ? *reinterpret_cast<::xla::ffi::ArrayProto_Int64ArrayProto*>(_impl_.value_.i64_) : reinterpret_cast<::xla::ffi::ArrayProto_Int64ArrayProto&>(::xla::ffi::_ArrayProto_Int64ArrayProto_default_instance_);
}
inline const ::xla::ffi::ArrayProto_Int64ArrayProto& ArrayProto::i64() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.i64)
  return _internal_i64();
}
inline ::xla::ffi::ArrayProto_Int64ArrayProto* PROTOBUF_NULLABLE ArrayProto::unsafe_arena_release_i64() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.ArrayProto.i64)
  if (value_case() == kI64) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Int64ArrayProto*>(_impl_.value_.i64_);
    _impl_.value_.i64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ArrayProto::unsafe_arena_set_allocated_i64(
    ::xla::ffi::ArrayProto_Int64ArrayProto* 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_value();
  if (value) {
    set_has_i64();
    _impl_.value_.i64_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.ArrayProto.i64)
}
inline ::xla::ffi::ArrayProto_Int64ArrayProto* PROTOBUF_NONNULL ArrayProto::_internal_mutable_i64() {
  if (value_case() != kI64) {
    clear_value();
    set_has_i64();
    _impl_.value_.i64_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ArrayProto_Int64ArrayProto>(GetArena()));
  }
  return reinterpret_cast<::xla::ffi::ArrayProto_Int64ArrayProto*>(_impl_.value_.i64_);
}
inline ::xla::ffi::ArrayProto_Int64ArrayProto* PROTOBUF_NONNULL ArrayProto::mutable_i64()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ArrayProto_Int64ArrayProto* _msg = _internal_mutable_i64();
  // @@protoc_insertion_point(field_mutable:xla.ffi.ArrayProto.i64)
  return _msg;
}

// .xla.ffi.ArrayProto.Uint8ArrayProto u8 = 5;
inline bool ArrayProto::has_u8() const {
  return value_case() == kU8;
}
inline bool ArrayProto::_internal_has_u8() const {
  return value_case() == kU8;
}
inline void ArrayProto::set_has_u8() {
  _impl_._oneof_case_[0] = kU8;
}
inline void ArrayProto::clear_u8() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kU8) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.u8_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.u8_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ArrayProto_Uint8ArrayProto* PROTOBUF_NULLABLE ArrayProto::release_u8() {
  // @@protoc_insertion_point(field_release:xla.ffi.ArrayProto.u8)
  if (value_case() == kU8) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Uint8ArrayProto*>(_impl_.value_.u8_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.u8_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ArrayProto_Uint8ArrayProto& ArrayProto::_internal_u8() const {
  return value_case() == kU8 ? *reinterpret_cast<::xla::ffi::ArrayProto_Uint8ArrayProto*>(_impl_.value_.u8_) : reinterpret_cast<::xla::ffi::ArrayProto_Uint8ArrayProto&>(::xla::ffi::_ArrayProto_Uint8ArrayProto_default_instance_);
}
inline const ::xla::ffi::ArrayProto_Uint8ArrayProto& ArrayProto::u8() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.u8)
  return _internal_u8();
}
inline ::xla::ffi::ArrayProto_Uint8ArrayProto* PROTOBUF_NULLABLE ArrayProto::unsafe_arena_release_u8() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.ArrayProto.u8)
  if (value_case() == kU8) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Uint8ArrayProto*>(_impl_.value_.u8_);
    _impl_.value_.u8_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ArrayProto::unsafe_arena_set_allocated_u8(
    ::xla::ffi::ArrayProto_Uint8ArrayProto* 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_value();
  if (value) {
    set_has_u8();
    _impl_.value_.u8_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.ArrayProto.u8)
}
inline ::xla::ffi::ArrayProto_Uint8ArrayProto* PROTOBUF_NONNULL ArrayProto::_internal_mutable_u8() {
  if (value_case() != kU8) {
    clear_value();
    set_has_u8();
    _impl_.value_.u8_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ArrayProto_Uint8ArrayProto>(GetArena()));
  }
  return reinterpret_cast<::xla::ffi::ArrayProto_Uint8ArrayProto*>(_impl_.value_.u8_);
}
inline ::xla::ffi::ArrayProto_Uint8ArrayProto* PROTOBUF_NONNULL ArrayProto::mutable_u8()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ArrayProto_Uint8ArrayProto* _msg = _internal_mutable_u8();
  // @@protoc_insertion_point(field_mutable:xla.ffi.ArrayProto.u8)
  return _msg;
}

// .xla.ffi.ArrayProto.Uint16ArrayProto u16 = 6;
inline bool ArrayProto::has_u16() const {
  return value_case() == kU16;
}
inline bool ArrayProto::_internal_has_u16() const {
  return value_case() == kU16;
}
inline void ArrayProto::set_has_u16() {
  _impl_._oneof_case_[0] = kU16;
}
inline void ArrayProto::clear_u16() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kU16) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.u16_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.u16_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ArrayProto_Uint16ArrayProto* PROTOBUF_NULLABLE ArrayProto::release_u16() {
  // @@protoc_insertion_point(field_release:xla.ffi.ArrayProto.u16)
  if (value_case() == kU16) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Uint16ArrayProto*>(_impl_.value_.u16_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.u16_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ArrayProto_Uint16ArrayProto& ArrayProto::_internal_u16() const {
  return value_case() == kU16 ? *reinterpret_cast<::xla::ffi::ArrayProto_Uint16ArrayProto*>(_impl_.value_.u16_) : reinterpret_cast<::xla::ffi::ArrayProto_Uint16ArrayProto&>(::xla::ffi::_ArrayProto_Uint16ArrayProto_default_instance_);
}
inline const ::xla::ffi::ArrayProto_Uint16ArrayProto& ArrayProto::u16() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.u16)
  return _internal_u16();
}
inline ::xla::ffi::ArrayProto_Uint16ArrayProto* PROTOBUF_NULLABLE ArrayProto::unsafe_arena_release_u16() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.ArrayProto.u16)
  if (value_case() == kU16) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Uint16ArrayProto*>(_impl_.value_.u16_);
    _impl_.value_.u16_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ArrayProto::unsafe_arena_set_allocated_u16(
    ::xla::ffi::ArrayProto_Uint16ArrayProto* 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_value();
  if (value) {
    set_has_u16();
    _impl_.value_.u16_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.ArrayProto.u16)
}
inline ::xla::ffi::ArrayProto_Uint16ArrayProto* PROTOBUF_NONNULL ArrayProto::_internal_mutable_u16() {
  if (value_case() != kU16) {
    clear_value();
    set_has_u16();
    _impl_.value_.u16_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ArrayProto_Uint16ArrayProto>(GetArena()));
  }
  return reinterpret_cast<::xla::ffi::ArrayProto_Uint16ArrayProto*>(_impl_.value_.u16_);
}
inline ::xla::ffi::ArrayProto_Uint16ArrayProto* PROTOBUF_NONNULL ArrayProto::mutable_u16()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ArrayProto_Uint16ArrayProto* _msg = _internal_mutable_u16();
  // @@protoc_insertion_point(field_mutable:xla.ffi.ArrayProto.u16)
  return _msg;
}

// .xla.ffi.ArrayProto.Uint32ArrayProto u32 = 7;
inline bool ArrayProto::has_u32() const {
  return value_case() == kU32;
}
inline bool ArrayProto::_internal_has_u32() const {
  return value_case() == kU32;
}
inline void ArrayProto::set_has_u32() {
  _impl_._oneof_case_[0] = kU32;
}
inline void ArrayProto::clear_u32() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kU32) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.u32_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.u32_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ArrayProto_Uint32ArrayProto* PROTOBUF_NULLABLE ArrayProto::release_u32() {
  // @@protoc_insertion_point(field_release:xla.ffi.ArrayProto.u32)
  if (value_case() == kU32) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Uint32ArrayProto*>(_impl_.value_.u32_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.u32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ArrayProto_Uint32ArrayProto& ArrayProto::_internal_u32() const {
  return value_case() == kU32 ? *reinterpret_cast<::xla::ffi::ArrayProto_Uint32ArrayProto*>(_impl_.value_.u32_) : reinterpret_cast<::xla::ffi::ArrayProto_Uint32ArrayProto&>(::xla::ffi::_ArrayProto_Uint32ArrayProto_default_instance_);
}
inline const ::xla::ffi::ArrayProto_Uint32ArrayProto& ArrayProto::u32() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.u32)
  return _internal_u32();
}
inline ::xla::ffi::ArrayProto_Uint32ArrayProto* PROTOBUF_NULLABLE ArrayProto::unsafe_arena_release_u32() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.ArrayProto.u32)
  if (value_case() == kU32) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Uint32ArrayProto*>(_impl_.value_.u32_);
    _impl_.value_.u32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ArrayProto::unsafe_arena_set_allocated_u32(
    ::xla::ffi::ArrayProto_Uint32ArrayProto* 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_value();
  if (value) {
    set_has_u32();
    _impl_.value_.u32_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.ArrayProto.u32)
}
inline ::xla::ffi::ArrayProto_Uint32ArrayProto* PROTOBUF_NONNULL ArrayProto::_internal_mutable_u32() {
  if (value_case() != kU32) {
    clear_value();
    set_has_u32();
    _impl_.value_.u32_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ArrayProto_Uint32ArrayProto>(GetArena()));
  }
  return reinterpret_cast<::xla::ffi::ArrayProto_Uint32ArrayProto*>(_impl_.value_.u32_);
}
inline ::xla::ffi::ArrayProto_Uint32ArrayProto* PROTOBUF_NONNULL ArrayProto::mutable_u32()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ArrayProto_Uint32ArrayProto* _msg = _internal_mutable_u32();
  // @@protoc_insertion_point(field_mutable:xla.ffi.ArrayProto.u32)
  return _msg;
}

// .xla.ffi.ArrayProto.Uint64ArrayProto u64 = 8;
inline bool ArrayProto::has_u64() const {
  return value_case() == kU64;
}
inline bool ArrayProto::_internal_has_u64() const {
  return value_case() == kU64;
}
inline void ArrayProto::set_has_u64() {
  _impl_._oneof_case_[0] = kU64;
}
inline void ArrayProto::clear_u64() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kU64) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.u64_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.u64_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ArrayProto_Uint64ArrayProto* PROTOBUF_NULLABLE ArrayProto::release_u64() {
  // @@protoc_insertion_point(field_release:xla.ffi.ArrayProto.u64)
  if (value_case() == kU64) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Uint64ArrayProto*>(_impl_.value_.u64_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.u64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ArrayProto_Uint64ArrayProto& ArrayProto::_internal_u64() const {
  return value_case() == kU64 ? *reinterpret_cast<::xla::ffi::ArrayProto_Uint64ArrayProto*>(_impl_.value_.u64_) : reinterpret_cast<::xla::ffi::ArrayProto_Uint64ArrayProto&>(::xla::ffi::_ArrayProto_Uint64ArrayProto_default_instance_);
}
inline const ::xla::ffi::ArrayProto_Uint64ArrayProto& ArrayProto::u64() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.u64)
  return _internal_u64();
}
inline ::xla::ffi::ArrayProto_Uint64ArrayProto* PROTOBUF_NULLABLE ArrayProto::unsafe_arena_release_u64() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.ArrayProto.u64)
  if (value_case() == kU64) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_Uint64ArrayProto*>(_impl_.value_.u64_);
    _impl_.value_.u64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ArrayProto::unsafe_arena_set_allocated_u64(
    ::xla::ffi::ArrayProto_Uint64ArrayProto* 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_value();
  if (value) {
    set_has_u64();
    _impl_.value_.u64_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.ArrayProto.u64)
}
inline ::xla::ffi::ArrayProto_Uint64ArrayProto* PROTOBUF_NONNULL ArrayProto::_internal_mutable_u64() {
  if (value_case() != kU64) {
    clear_value();
    set_has_u64();
    _impl_.value_.u64_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ArrayProto_Uint64ArrayProto>(GetArena()));
  }
  return reinterpret_cast<::xla::ffi::ArrayProto_Uint64ArrayProto*>(_impl_.value_.u64_);
}
inline ::xla::ffi::ArrayProto_Uint64ArrayProto* PROTOBUF_NONNULL ArrayProto::mutable_u64()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ArrayProto_Uint64ArrayProto* _msg = _internal_mutable_u64();
  // @@protoc_insertion_point(field_mutable:xla.ffi.ArrayProto.u64)
  return _msg;
}

// .xla.ffi.ArrayProto.FloatArrayProto f32 = 9;
inline bool ArrayProto::has_f32() const {
  return value_case() == kF32;
}
inline bool ArrayProto::_internal_has_f32() const {
  return value_case() == kF32;
}
inline void ArrayProto::set_has_f32() {
  _impl_._oneof_case_[0] = kF32;
}
inline void ArrayProto::clear_f32() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kF32) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.f32_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.f32_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ArrayProto_FloatArrayProto* PROTOBUF_NULLABLE ArrayProto::release_f32() {
  // @@protoc_insertion_point(field_release:xla.ffi.ArrayProto.f32)
  if (value_case() == kF32) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_FloatArrayProto*>(_impl_.value_.f32_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.f32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ArrayProto_FloatArrayProto& ArrayProto::_internal_f32() const {
  return value_case() == kF32 ? *reinterpret_cast<::xla::ffi::ArrayProto_FloatArrayProto*>(_impl_.value_.f32_) : reinterpret_cast<::xla::ffi::ArrayProto_FloatArrayProto&>(::xla::ffi::_ArrayProto_FloatArrayProto_default_instance_);
}
inline const ::xla::ffi::ArrayProto_FloatArrayProto& ArrayProto::f32() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.f32)
  return _internal_f32();
}
inline ::xla::ffi::ArrayProto_FloatArrayProto* PROTOBUF_NULLABLE ArrayProto::unsafe_arena_release_f32() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.ArrayProto.f32)
  if (value_case() == kF32) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_FloatArrayProto*>(_impl_.value_.f32_);
    _impl_.value_.f32_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ArrayProto::unsafe_arena_set_allocated_f32(
    ::xla::ffi::ArrayProto_FloatArrayProto* 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_value();
  if (value) {
    set_has_f32();
    _impl_.value_.f32_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.ArrayProto.f32)
}
inline ::xla::ffi::ArrayProto_FloatArrayProto* PROTOBUF_NONNULL ArrayProto::_internal_mutable_f32() {
  if (value_case() != kF32) {
    clear_value();
    set_has_f32();
    _impl_.value_.f32_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ArrayProto_FloatArrayProto>(GetArena()));
  }
  return reinterpret_cast<::xla::ffi::ArrayProto_FloatArrayProto*>(_impl_.value_.f32_);
}
inline ::xla::ffi::ArrayProto_FloatArrayProto* PROTOBUF_NONNULL ArrayProto::mutable_f32()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ArrayProto_FloatArrayProto* _msg = _internal_mutable_f32();
  // @@protoc_insertion_point(field_mutable:xla.ffi.ArrayProto.f32)
  return _msg;
}

// .xla.ffi.ArrayProto.DoubleArrayProto f64 = 10;
inline bool ArrayProto::has_f64() const {
  return value_case() == kF64;
}
inline bool ArrayProto::_internal_has_f64() const {
  return value_case() == kF64;
}
inline void ArrayProto::set_has_f64() {
  _impl_._oneof_case_[0] = kF64;
}
inline void ArrayProto::clear_f64() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kF64) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.f64_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.f64_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ArrayProto_DoubleArrayProto* PROTOBUF_NULLABLE ArrayProto::release_f64() {
  // @@protoc_insertion_point(field_release:xla.ffi.ArrayProto.f64)
  if (value_case() == kF64) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_DoubleArrayProto*>(_impl_.value_.f64_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.f64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ArrayProto_DoubleArrayProto& ArrayProto::_internal_f64() const {
  return value_case() == kF64 ? *reinterpret_cast<::xla::ffi::ArrayProto_DoubleArrayProto*>(_impl_.value_.f64_) : reinterpret_cast<::xla::ffi::ArrayProto_DoubleArrayProto&>(::xla::ffi::_ArrayProto_DoubleArrayProto_default_instance_);
}
inline const ::xla::ffi::ArrayProto_DoubleArrayProto& ArrayProto::f64() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.ArrayProto.f64)
  return _internal_f64();
}
inline ::xla::ffi::ArrayProto_DoubleArrayProto* PROTOBUF_NULLABLE ArrayProto::unsafe_arena_release_f64() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.ArrayProto.f64)
  if (value_case() == kF64) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto_DoubleArrayProto*>(_impl_.value_.f64_);
    _impl_.value_.f64_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ArrayProto::unsafe_arena_set_allocated_f64(
    ::xla::ffi::ArrayProto_DoubleArrayProto* 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_value();
  if (value) {
    set_has_f64();
    _impl_.value_.f64_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.ArrayProto.f64)
}
inline ::xla::ffi::ArrayProto_DoubleArrayProto* PROTOBUF_NONNULL ArrayProto::_internal_mutable_f64() {
  if (value_case() != kF64) {
    clear_value();
    set_has_f64();
    _impl_.value_.f64_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ArrayProto_DoubleArrayProto>(GetArena()));
  }
  return reinterpret_cast<::xla::ffi::ArrayProto_DoubleArrayProto*>(_impl_.value_.f64_);
}
inline ::xla::ffi::ArrayProto_DoubleArrayProto* PROTOBUF_NONNULL ArrayProto::mutable_f64()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ArrayProto_DoubleArrayProto* _msg = _internal_mutable_f64();
  // @@protoc_insertion_point(field_mutable:xla.ffi.ArrayProto.f64)
  return _msg;
}

inline bool ArrayProto::has_value() const {
  return value_case() != VALUE_NOT_SET;
}
inline void ArrayProto::clear_has_value() {
  _impl_._oneof_case_[0] = VALUE_NOT_SET;
}
inline ArrayProto::ValueCase ArrayProto::value_case() const {
  return ArrayProto::ValueCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// FlatAttributeProto

// .xla.ffi.ScalarProto scalar = 1;
inline bool FlatAttributeProto::has_scalar() const {
  return value_case() == kScalar;
}
inline bool FlatAttributeProto::_internal_has_scalar() const {
  return value_case() == kScalar;
}
inline void FlatAttributeProto::set_has_scalar() {
  _impl_._oneof_case_[0] = kScalar;
}
inline void FlatAttributeProto::clear_scalar() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kScalar) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.scalar_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.scalar_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ScalarProto* PROTOBUF_NULLABLE FlatAttributeProto::release_scalar() {
  // @@protoc_insertion_point(field_release:xla.ffi.FlatAttributeProto.scalar)
  if (value_case() == kScalar) {
    clear_has_value();
    auto* temp = _impl_.value_.scalar_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.scalar_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ScalarProto& FlatAttributeProto::_internal_scalar() const {
  return value_case() == kScalar ? *_impl_.value_.scalar_ : reinterpret_cast<::xla::ffi::ScalarProto&>(::xla::ffi::_ScalarProto_default_instance_);
}
inline const ::xla::ffi::ScalarProto& FlatAttributeProto::scalar() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.FlatAttributeProto.scalar)
  return _internal_scalar();
}
inline ::xla::ffi::ScalarProto* PROTOBUF_NULLABLE FlatAttributeProto::unsafe_arena_release_scalar() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.FlatAttributeProto.scalar)
  if (value_case() == kScalar) {
    clear_has_value();
    auto* temp = _impl_.value_.scalar_;
    _impl_.value_.scalar_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void FlatAttributeProto::unsafe_arena_set_allocated_scalar(
    ::xla::ffi::ScalarProto* 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_value();
  if (value) {
    set_has_scalar();
    _impl_.value_.scalar_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.FlatAttributeProto.scalar)
}
inline ::xla::ffi::ScalarProto* PROTOBUF_NONNULL FlatAttributeProto::_internal_mutable_scalar() {
  if (value_case() != kScalar) {
    clear_value();
    set_has_scalar();
    _impl_.value_.scalar_ = 
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ScalarProto>(GetArena());
  }
  return _impl_.value_.scalar_;
}
inline ::xla::ffi::ScalarProto* PROTOBUF_NONNULL FlatAttributeProto::mutable_scalar()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ScalarProto* _msg = _internal_mutable_scalar();
  // @@protoc_insertion_point(field_mutable:xla.ffi.FlatAttributeProto.scalar)
  return _msg;
}

// .xla.ffi.ArrayProto array = 2;
inline bool FlatAttributeProto::has_array() const {
  return value_case() == kArray;
}
inline bool FlatAttributeProto::_internal_has_array() const {
  return value_case() == kArray;
}
inline void FlatAttributeProto::set_has_array() {
  _impl_._oneof_case_[0] = kArray;
}
inline void FlatAttributeProto::clear_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kArray) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.array_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.array_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ArrayProto* PROTOBUF_NULLABLE FlatAttributeProto::release_array() {
  // @@protoc_insertion_point(field_release:xla.ffi.FlatAttributeProto.array)
  if (value_case() == kArray) {
    clear_has_value();
    auto* temp = _impl_.value_.array_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.array_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ArrayProto& FlatAttributeProto::_internal_array() const {
  return value_case() == kArray ? *_impl_.value_.array_ : reinterpret_cast<::xla::ffi::ArrayProto&>(::xla::ffi::_ArrayProto_default_instance_);
}
inline const ::xla::ffi::ArrayProto& FlatAttributeProto::array() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.FlatAttributeProto.array)
  return _internal_array();
}
inline ::xla::ffi::ArrayProto* PROTOBUF_NULLABLE FlatAttributeProto::unsafe_arena_release_array() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.FlatAttributeProto.array)
  if (value_case() == kArray) {
    clear_has_value();
    auto* temp = _impl_.value_.array_;
    _impl_.value_.array_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void FlatAttributeProto::unsafe_arena_set_allocated_array(
    ::xla::ffi::ArrayProto* 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_value();
  if (value) {
    set_has_array();
    _impl_.value_.array_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.FlatAttributeProto.array)
}
inline ::xla::ffi::ArrayProto* PROTOBUF_NONNULL FlatAttributeProto::_internal_mutable_array() {
  if (value_case() != kArray) {
    clear_value();
    set_has_array();
    _impl_.value_.array_ = 
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ArrayProto>(GetArena());
  }
  return _impl_.value_.array_;
}
inline ::xla::ffi::ArrayProto* PROTOBUF_NONNULL FlatAttributeProto::mutable_array()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ArrayProto* _msg = _internal_mutable_array();
  // @@protoc_insertion_point(field_mutable:xla.ffi.FlatAttributeProto.array)
  return _msg;
}

// bytes str = 3;
inline bool FlatAttributeProto::has_str() const {
  return value_case() == kStr;
}
inline void FlatAttributeProto::set_has_str() {
  _impl_._oneof_case_[0] = kStr;
}
inline void FlatAttributeProto::clear_str() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kStr) {
    _impl_.value_.str_.Destroy();
    clear_has_value();
  }
}
inline const ::std::string& FlatAttributeProto::str() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.FlatAttributeProto.str)
  return _internal_str();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void FlatAttributeProto::set_str(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() != kStr) {
    clear_value();

    set_has_str();
    _impl_.value_.str_.InitDefault();
  }
  _impl_.value_.str_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.ffi.FlatAttributeProto.str)
}
inline ::std::string* PROTOBUF_NONNULL FlatAttributeProto::mutable_str()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_str();
  // @@protoc_insertion_point(field_mutable:xla.ffi.FlatAttributeProto.str)
  return _s;
}
inline const ::std::string& FlatAttributeProto::_internal_str() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  if (value_case() != kStr) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.value_.str_.Get();
}
inline void FlatAttributeProto::_internal_set_str(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() != kStr) {
    clear_value();

    set_has_str();
    _impl_.value_.str_.InitDefault();
  }
  _impl_.value_.str_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL FlatAttributeProto::_internal_mutable_str() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() != kStr) {
    clear_value();

    set_has_str();
    _impl_.value_.str_.InitDefault();
  }
  return _impl_.value_.str_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE FlatAttributeProto::release_str() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.ffi.FlatAttributeProto.str)
  if (value_case() != kStr) {
    return nullptr;
  }
  clear_has_value();
  return _impl_.value_.str_.Release();
}
inline void FlatAttributeProto::set_allocated_str(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (has_value()) {
    clear_value();
  }
  if (value != nullptr) {
    set_has_str();
    _impl_.value_.str_.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.ffi.FlatAttributeProto.str)
}

inline bool FlatAttributeProto::has_value() const {
  return value_case() != VALUE_NOT_SET;
}
inline void FlatAttributeProto::clear_has_value() {
  _impl_._oneof_case_[0] = VALUE_NOT_SET;
}
inline FlatAttributeProto::ValueCase FlatAttributeProto::value_case() const {
  return FlatAttributeProto::ValueCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

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

// FlatAttributesMapProto

// map<string, .xla.ffi.FlatAttributeProto> attrs = 1;
inline int FlatAttributesMapProto::_internal_attrs_size() const {
  return _internal_attrs().size();
}
inline int FlatAttributesMapProto::attrs_size() const {
  return _internal_attrs_size();
}
inline void FlatAttributesMapProto::clear_attrs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.attrs_.Clear();
}
inline const ::google::protobuf::Map<std::string, ::xla::ffi::FlatAttributeProto>& FlatAttributesMapProto::_internal_attrs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.attrs_.GetMap();
}
inline const ::google::protobuf::Map<std::string, ::xla::ffi::FlatAttributeProto>& FlatAttributesMapProto::attrs() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:xla.ffi.FlatAttributesMapProto.attrs)
  return _internal_attrs();
}
inline ::google::protobuf::Map<std::string, ::xla::ffi::FlatAttributeProto>* PROTOBUF_NONNULL FlatAttributesMapProto::_internal_mutable_attrs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.attrs_.MutableMap();
}
inline ::google::protobuf::Map<std::string, ::xla::ffi::FlatAttributeProto>* PROTOBUF_NONNULL FlatAttributesMapProto::mutable_attrs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_map:xla.ffi.FlatAttributesMapProto.attrs)
  return _internal_mutable_attrs();
}

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

// AttributeProto

// .xla.ffi.ScalarProto scalar = 1;
inline bool AttributeProto::has_scalar() const {
  return value_case() == kScalar;
}
inline bool AttributeProto::_internal_has_scalar() const {
  return value_case() == kScalar;
}
inline void AttributeProto::set_has_scalar() {
  _impl_._oneof_case_[0] = kScalar;
}
inline void AttributeProto::clear_scalar() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kScalar) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.scalar_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.scalar_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ScalarProto* PROTOBUF_NULLABLE AttributeProto::release_scalar() {
  // @@protoc_insertion_point(field_release:xla.ffi.AttributeProto.scalar)
  if (value_case() == kScalar) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ScalarProto*>(_impl_.value_.scalar_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.scalar_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ScalarProto& AttributeProto::_internal_scalar() const {
  return value_case() == kScalar ? *reinterpret_cast<::xla::ffi::ScalarProto*>(_impl_.value_.scalar_) : reinterpret_cast<::xla::ffi::ScalarProto&>(::xla::ffi::_ScalarProto_default_instance_);
}
inline const ::xla::ffi::ScalarProto& AttributeProto::scalar() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.AttributeProto.scalar)
  return _internal_scalar();
}
inline ::xla::ffi::ScalarProto* PROTOBUF_NULLABLE AttributeProto::unsafe_arena_release_scalar() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.AttributeProto.scalar)
  if (value_case() == kScalar) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ScalarProto*>(_impl_.value_.scalar_);
    _impl_.value_.scalar_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AttributeProto::unsafe_arena_set_allocated_scalar(
    ::xla::ffi::ScalarProto* 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_value();
  if (value) {
    set_has_scalar();
    _impl_.value_.scalar_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.AttributeProto.scalar)
}
inline ::xla::ffi::ScalarProto* PROTOBUF_NONNULL AttributeProto::_internal_mutable_scalar() {
  if (value_case() != kScalar) {
    clear_value();
    set_has_scalar();
    _impl_.value_.scalar_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ScalarProto>(GetArena()));
  }
  return reinterpret_cast<::xla::ffi::ScalarProto*>(_impl_.value_.scalar_);
}
inline ::xla::ffi::ScalarProto* PROTOBUF_NONNULL AttributeProto::mutable_scalar()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ScalarProto* _msg = _internal_mutable_scalar();
  // @@protoc_insertion_point(field_mutable:xla.ffi.AttributeProto.scalar)
  return _msg;
}

// .xla.ffi.ArrayProto array = 2;
inline bool AttributeProto::has_array() const {
  return value_case() == kArray;
}
inline bool AttributeProto::_internal_has_array() const {
  return value_case() == kArray;
}
inline void AttributeProto::set_has_array() {
  _impl_._oneof_case_[0] = kArray;
}
inline void AttributeProto::clear_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kArray) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.array_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.array_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::ArrayProto* PROTOBUF_NULLABLE AttributeProto::release_array() {
  // @@protoc_insertion_point(field_release:xla.ffi.AttributeProto.array)
  if (value_case() == kArray) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto*>(_impl_.value_.array_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.array_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::ArrayProto& AttributeProto::_internal_array() const {
  return value_case() == kArray ? *reinterpret_cast<::xla::ffi::ArrayProto*>(_impl_.value_.array_) : reinterpret_cast<::xla::ffi::ArrayProto&>(::xla::ffi::_ArrayProto_default_instance_);
}
inline const ::xla::ffi::ArrayProto& AttributeProto::array() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.AttributeProto.array)
  return _internal_array();
}
inline ::xla::ffi::ArrayProto* PROTOBUF_NULLABLE AttributeProto::unsafe_arena_release_array() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.AttributeProto.array)
  if (value_case() == kArray) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::ArrayProto*>(_impl_.value_.array_);
    _impl_.value_.array_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AttributeProto::unsafe_arena_set_allocated_array(
    ::xla::ffi::ArrayProto* 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_value();
  if (value) {
    set_has_array();
    _impl_.value_.array_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.AttributeProto.array)
}
inline ::xla::ffi::ArrayProto* PROTOBUF_NONNULL AttributeProto::_internal_mutable_array() {
  if (value_case() != kArray) {
    clear_value();
    set_has_array();
    _impl_.value_.array_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::ArrayProto>(GetArena()));
  }
  return reinterpret_cast<::xla::ffi::ArrayProto*>(_impl_.value_.array_);
}
inline ::xla::ffi::ArrayProto* PROTOBUF_NONNULL AttributeProto::mutable_array()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::ArrayProto* _msg = _internal_mutable_array();
  // @@protoc_insertion_point(field_mutable:xla.ffi.AttributeProto.array)
  return _msg;
}

// bytes str = 3;
inline bool AttributeProto::has_str() const {
  return value_case() == kStr;
}
inline void AttributeProto::set_has_str() {
  _impl_._oneof_case_[0] = kStr;
}
inline void AttributeProto::clear_str() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kStr) {
    _impl_.value_.str_.Destroy();
    clear_has_value();
  }
}
inline const ::std::string& AttributeProto::str() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.AttributeProto.str)
  return _internal_str();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void AttributeProto::set_str(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() != kStr) {
    clear_value();

    set_has_str();
    _impl_.value_.str_.InitDefault();
  }
  _impl_.value_.str_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:xla.ffi.AttributeProto.str)
}
inline ::std::string* PROTOBUF_NONNULL AttributeProto::mutable_str()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::std::string* _s = _internal_mutable_str();
  // @@protoc_insertion_point(field_mutable:xla.ffi.AttributeProto.str)
  return _s;
}
inline const ::std::string& AttributeProto::_internal_str() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  if (value_case() != kStr) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.value_.str_.Get();
}
inline void AttributeProto::_internal_set_str(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() != kStr) {
    clear_value();

    set_has_str();
    _impl_.value_.str_.InitDefault();
  }
  _impl_.value_.str_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL AttributeProto::_internal_mutable_str() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() != kStr) {
    clear_value();

    set_has_str();
    _impl_.value_.str_.InitDefault();
  }
  return _impl_.value_.str_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE AttributeProto::release_str() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:xla.ffi.AttributeProto.str)
  if (value_case() != kStr) {
    return nullptr;
  }
  clear_has_value();
  return _impl_.value_.str_.Release();
}
inline void AttributeProto::set_allocated_str(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (has_value()) {
    clear_value();
  }
  if (value != nullptr) {
    set_has_str();
    _impl_.value_.str_.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:xla.ffi.AttributeProto.str)
}

// .xla.ffi.AttributesMapProto dict = 4;
inline bool AttributeProto::has_dict() const {
  return value_case() == kDict;
}
inline bool AttributeProto::_internal_has_dict() const {
  return value_case() == kDict;
}
inline void AttributeProto::set_has_dict() {
  _impl_._oneof_case_[0] = kDict;
}
inline void AttributeProto::clear_dict() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value_case() == kDict) {
    if (GetArena() == nullptr) {
      delete _impl_.value_.dict_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.dict_);
    }
    clear_has_value();
  }
}
inline ::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE AttributeProto::release_dict() {
  // @@protoc_insertion_point(field_release:xla.ffi.AttributeProto.dict)
  if (value_case() == kDict) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::AttributesMapProto*>(_impl_.value_.dict_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.value_.dict_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::xla::ffi::AttributesMapProto& AttributeProto::_internal_dict() const {
  return value_case() == kDict ? *reinterpret_cast<::xla::ffi::AttributesMapProto*>(_impl_.value_.dict_) : reinterpret_cast<::xla::ffi::AttributesMapProto&>(::xla::ffi::_AttributesMapProto_default_instance_);
}
inline const ::xla::ffi::AttributesMapProto& AttributeProto::dict() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:xla.ffi.AttributeProto.dict)
  return _internal_dict();
}
inline ::xla::ffi::AttributesMapProto* PROTOBUF_NULLABLE AttributeProto::unsafe_arena_release_dict() {
  // @@protoc_insertion_point(field_unsafe_arena_release:xla.ffi.AttributeProto.dict)
  if (value_case() == kDict) {
    clear_has_value();
    auto* temp = reinterpret_cast<::xla::ffi::AttributesMapProto*>(_impl_.value_.dict_);
    _impl_.value_.dict_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void AttributeProto::unsafe_arena_set_allocated_dict(
    ::xla::ffi::AttributesMapProto* 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_value();
  if (value) {
    set_has_dict();
    _impl_.value_.dict_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:xla.ffi.AttributeProto.dict)
}
inline ::xla::ffi::AttributesMapProto* PROTOBUF_NONNULL AttributeProto::_internal_mutable_dict() {
  if (value_case() != kDict) {
    clear_value();
    set_has_dict();
    _impl_.value_.dict_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::xla::ffi::AttributesMapProto>(GetArena()));
  }
  return reinterpret_cast<::xla::ffi::AttributesMapProto*>(_impl_.value_.dict_);
}
inline ::xla::ffi::AttributesMapProto* PROTOBUF_NONNULL AttributeProto::mutable_dict()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::xla::ffi::AttributesMapProto* _msg = _internal_mutable_dict();
  // @@protoc_insertion_point(field_mutable:xla.ffi.AttributeProto.dict)
  return _msg;
}

inline bool AttributeProto::has_value() const {
  return value_case() != VALUE_NOT_SET;
}
inline void AttributeProto::clear_has_value() {
  _impl_._oneof_case_[0] = VALUE_NOT_SET;
}
inline AttributeProto::ValueCase AttributeProto::value_case() const {
  return AttributeProto::ValueCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

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

// AttributesMapProto

// map<string, .xla.ffi.AttributeProto> attrs = 1;
inline int AttributesMapProto::_internal_attrs_size() const {
  return _internal_attrs().size();
}
inline int AttributesMapProto::attrs_size() const {
  return _internal_attrs_size();
}
inline void AttributesMapProto::clear_attrs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.attrs_.Clear();
}
inline const ::google::protobuf::Map<std::string, ::xla::ffi::AttributeProto>& AttributesMapProto::_internal_attrs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.attrs_.GetMap();
}
inline const ::google::protobuf::Map<std::string, ::xla::ffi::AttributeProto>& AttributesMapProto::attrs() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:xla.ffi.AttributesMapProto.attrs)
  return _internal_attrs();
}
inline ::google::protobuf::Map<std::string, ::xla::ffi::AttributeProto>* PROTOBUF_NONNULL AttributesMapProto::_internal_mutable_attrs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.attrs_.MutableMap();
}
inline ::google::protobuf::Map<std::string, ::xla::ffi::AttributeProto>* PROTOBUF_NONNULL AttributesMapProto::mutable_attrs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_map:xla.ffi.AttributesMapProto.attrs)
  return _internal_mutable_attrs();
}

#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace ffi
}  // namespace xla


// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // xla_2fffi_2fattribute_5fmap_2eproto_2epb_2eh
