// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: google/cloud/bigquery/storage/v1/stream.proto
// Protobuf C++ Version: 7.35.1

#ifndef google_2fcloud_2fbigquery_2fstorage_2fv1_2fstream_2eproto_2epb_2eh
#define google_2fcloud_2fbigquery_2fstorage_2fv1_2fstream_2eproto_2epb_2eh

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

// clang-format off
#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 7035001
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/message.h"
#include "google/protobuf/message_lite.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
#include "google/api/field_behavior.pb.h"
#include "google/api/resource.pb.h"
#include "google/cloud/bigquery/storage/v1/arrow.pb.h"
#include "google/cloud/bigquery/storage/v1/avro.pb.h"
#include "google/cloud/bigquery/storage/v1/table.pb.h"
#include "google/protobuf/timestamp.pb.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_google_2fcloud_2fbigquery_2fstorage_2fv1_2fstream_2eproto

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

// Internal implementation detail -- do not use these members.
struct TableStruct_google_2fcloud_2fbigquery_2fstorage_2fv1_2fstream_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
extern const ::google::protobuf::internal::DescriptorTable descriptor_table_google_2fcloud_2fbigquery_2fstorage_2fv1_2fstream_2eproto;
}  // extern "C"
namespace google {
namespace cloud {
namespace bigquery {
namespace storage {
namespace v1 {
enum DataFormat : int;
extern const uint32_t DataFormat_internal_data_[];
enum WriteStreamView : int;
extern const uint32_t WriteStreamView_internal_data_[];
enum WriteStream_Type : int;
extern const uint32_t WriteStream_Type_internal_data_[];
enum WriteStream_WriteMode : int;
extern const uint32_t WriteStream_WriteMode_internal_data_[];
class ReadSession;
struct ReadSessionGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ReadSessionGlobalsTypeInternal ReadSession_globals_;
extern const ::google::protobuf::internal::ClassDataFull ReadSession_class_data_;
#else
extern const ReadSessionGlobalsTypeInternal ReadSession_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ReadSession_TableModifiers;
struct ReadSession_TableModifiersGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ReadSession_TableModifiersGlobalsTypeInternal ReadSession_TableModifiers_globals_;
extern const ::google::protobuf::internal::ClassDataFull ReadSession_TableModifiers_class_data_;
#else
extern const ReadSession_TableModifiersGlobalsTypeInternal ReadSession_TableModifiers_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ReadSession_TableReadOptions;
struct ReadSession_TableReadOptionsGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ReadSession_TableReadOptionsGlobalsTypeInternal ReadSession_TableReadOptions_globals_;
extern const ::google::protobuf::internal::ClassDataFull ReadSession_TableReadOptions_class_data_;
#else
extern const ReadSession_TableReadOptionsGlobalsTypeInternal ReadSession_TableReadOptions_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ReadStream;
struct ReadStreamGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ReadStreamGlobalsTypeInternal ReadStream_globals_;
extern const ::google::protobuf::internal::ClassDataFull ReadStream_class_data_;
#else
extern const ReadStreamGlobalsTypeInternal ReadStream_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class WriteStream;
struct WriteStreamGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern WriteStreamGlobalsTypeInternal WriteStream_globals_;
extern const ::google::protobuf::internal::ClassDataFull WriteStream_class_data_;
#else
extern const WriteStreamGlobalsTypeInternal WriteStream_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
}  // namespace v1
}  // namespace storage
}  // namespace bigquery
}  // namespace cloud
namespace protobuf {
template <>
internal::EnumTraitsT<::google::cloud::bigquery::storage::v1::DataFormat_internal_data_>
    internal::EnumTraitsImpl::value<::google::cloud::bigquery::storage::v1::DataFormat>;
template <>
internal::EnumTraitsT<::google::cloud::bigquery::storage::v1::WriteStreamView_internal_data_>
    internal::EnumTraitsImpl::value<::google::cloud::bigquery::storage::v1::WriteStreamView>;
template <>
internal::EnumTraitsT<::google::cloud::bigquery::storage::v1::WriteStream_Type_internal_data_>
    internal::EnumTraitsImpl::value<::google::cloud::bigquery::storage::v1::WriteStream_Type>;
template <>
internal::EnumTraitsT<::google::cloud::bigquery::storage::v1::WriteStream_WriteMode_internal_data_>
    internal::EnumTraitsImpl::value<::google::cloud::bigquery::storage::v1::WriteStream_WriteMode>;
}  // namespace protobuf
}  // namespace google

namespace google {
namespace cloud {
namespace bigquery {
namespace storage {
namespace v1 {
enum WriteStream_Type : int {
  WriteStream_Type_TYPE_UNSPECIFIED = 0,
  WriteStream_Type_COMMITTED = 1,
  WriteStream_Type_PENDING = 2,
  WriteStream_Type_BUFFERED = 3,
  WriteStream_Type_WriteStream_Type_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  WriteStream_Type_WriteStream_Type_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t WriteStream_Type_internal_data_[];
inline constexpr WriteStream_Type WriteStream_Type_Type_MIN =
    static_cast<WriteStream_Type>(0);
inline constexpr WriteStream_Type WriteStream_Type_Type_MAX =
    static_cast<WriteStream_Type>(3);
[[nodiscard]] inline bool WriteStream_Type_IsValid(int value) {
  return 0 <= value && value <= 3;
}
inline constexpr int WriteStream_Type_Type_ARRAYSIZE = 3 + 1;
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
WriteStream_Type_descriptor();
[[nodiscard]] inline auto ProtobufInternalGetEnumDescriptor(WriteStream_Type) {
  return WriteStream_Type_descriptor();
}
template <typename T>
[[nodiscard]] const ::std::string& WriteStream_Type_Name(T value) {
  static_assert(::std::is_same<T, WriteStream_Type>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Type_Name().");
  return WriteStream_Type_Name(static_cast<WriteStream_Type>(value));
}
template <>
[[nodiscard]] inline const ::std::string& WriteStream_Type_Name(WriteStream_Type value) {
  return ::google::protobuf::internal::NameOfDenseEnum<WriteStream_Type_descriptor, 0, 3>(
      static_cast<int>(value));
}
[[nodiscard]] inline bool WriteStream_Type_Parse(
    ::absl::string_view name, WriteStream_Type* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<WriteStream_Type>(WriteStream_Type_descriptor(), name,
                                           value);
}
enum WriteStream_WriteMode : int {
  WriteStream_WriteMode_WRITE_MODE_UNSPECIFIED = 0,
  WriteStream_WriteMode_INSERT = 1,
  WriteStream_WriteMode_WriteStream_WriteMode_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  WriteStream_WriteMode_WriteStream_WriteMode_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t WriteStream_WriteMode_internal_data_[];
inline constexpr WriteStream_WriteMode WriteStream_WriteMode_WriteMode_MIN =
    static_cast<WriteStream_WriteMode>(0);
inline constexpr WriteStream_WriteMode WriteStream_WriteMode_WriteMode_MAX =
    static_cast<WriteStream_WriteMode>(1);
[[nodiscard]] inline bool WriteStream_WriteMode_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int WriteStream_WriteMode_WriteMode_ARRAYSIZE = 1 + 1;
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
WriteStream_WriteMode_descriptor();
[[nodiscard]] inline auto ProtobufInternalGetEnumDescriptor(WriteStream_WriteMode) {
  return WriteStream_WriteMode_descriptor();
}
template <typename T>
[[nodiscard]] const ::std::string& WriteStream_WriteMode_Name(T value) {
  static_assert(::std::is_same<T, WriteStream_WriteMode>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to WriteMode_Name().");
  return WriteStream_WriteMode_Name(static_cast<WriteStream_WriteMode>(value));
}
template <>
[[nodiscard]] inline const ::std::string& WriteStream_WriteMode_Name(WriteStream_WriteMode value) {
  return ::google::protobuf::internal::NameOfDenseEnum<WriteStream_WriteMode_descriptor, 0, 1>(
      static_cast<int>(value));
}
[[nodiscard]] inline bool WriteStream_WriteMode_Parse(
    ::absl::string_view name, WriteStream_WriteMode* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<WriteStream_WriteMode>(WriteStream_WriteMode_descriptor(), name,
                                           value);
}
enum DataFormat : int {
  DATA_FORMAT_UNSPECIFIED = 0,
  AVRO = 1,
  ARROW = 2,
  DataFormat_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  DataFormat_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t DataFormat_internal_data_[];
inline constexpr DataFormat DataFormat_MIN =
    static_cast<DataFormat>(0);
inline constexpr DataFormat DataFormat_MAX =
    static_cast<DataFormat>(2);
[[nodiscard]] inline bool DataFormat_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int DataFormat_ARRAYSIZE = 2 + 1;
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
DataFormat_descriptor();
[[nodiscard]] inline auto ProtobufInternalGetEnumDescriptor(DataFormat) {
  return DataFormat_descriptor();
}
template <typename T>
[[nodiscard]] const ::std::string& DataFormat_Name(T value) {
  static_assert(::std::is_same<T, DataFormat>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to DataFormat_Name().");
  return DataFormat_Name(static_cast<DataFormat>(value));
}
template <>
[[nodiscard]] inline const ::std::string& DataFormat_Name(DataFormat value) {
  return ::google::protobuf::internal::NameOfDenseEnum<DataFormat_descriptor, 0, 2>(
      static_cast<int>(value));
}
[[nodiscard]] inline bool DataFormat_Parse(
    ::absl::string_view name, DataFormat* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<DataFormat>(DataFormat_descriptor(), name,
                                           value);
}
enum WriteStreamView : int {
  WRITE_STREAM_VIEW_UNSPECIFIED = 0,
  BASIC = 1,
  FULL = 2,
  WriteStreamView_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  WriteStreamView_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t WriteStreamView_internal_data_[];
inline constexpr WriteStreamView WriteStreamView_MIN =
    static_cast<WriteStreamView>(0);
inline constexpr WriteStreamView WriteStreamView_MAX =
    static_cast<WriteStreamView>(2);
[[nodiscard]] inline bool WriteStreamView_IsValid(int value) {
  return 0 <= value && value <= 2;
}
inline constexpr int WriteStreamView_ARRAYSIZE = 2 + 1;
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
WriteStreamView_descriptor();
[[nodiscard]] inline auto ProtobufInternalGetEnumDescriptor(WriteStreamView) {
  return WriteStreamView_descriptor();
}
template <typename T>
[[nodiscard]] const ::std::string& WriteStreamView_Name(T value) {
  static_assert(::std::is_same<T, WriteStreamView>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to WriteStreamView_Name().");
  return WriteStreamView_Name(static_cast<WriteStreamView>(value));
}
template <>
[[nodiscard]] inline const ::std::string& WriteStreamView_Name(WriteStreamView value) {
  return ::google::protobuf::internal::NameOfDenseEnum<WriteStreamView_descriptor, 0, 2>(
      static_cast<int>(value));
}
[[nodiscard]] inline bool WriteStreamView_Parse(
    ::absl::string_view name, WriteStreamView* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<WriteStreamView>(WriteStreamView_descriptor(), name,
                                           value);
}
using ::google::protobuf::internal::generated_enum::AbslParseFlag;
using ::google::protobuf::internal::generated_enum::AbslUnparseFlag;

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


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

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED ReadStream final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:google.cloud.bigquery.storage.v1.ReadStream) */ {
 public:
  inline ReadStream() : ReadStream(nullptr) {}
  ~ReadStream() PROTOBUF_FINAL;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    kNameFieldNumber = 1,
  };
  // string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];
  void clear_name() ;
  [[nodiscard]] const ::std::string& name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name();
  void set_allocated_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_name();

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

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

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED ReadSession_TableReadOptions final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions) */ {
 public:
  inline ReadSession_TableReadOptions() : ReadSession_TableReadOptions(nullptr) {}
  ~ReadSession_TableReadOptions() PROTOBUF_FINAL;

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

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

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

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

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const ReadSession_TableReadOptions& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ReadSession_TableReadOptions>(&ReadSession_TableReadOptions_globals_);
  }
  enum OutputFormatSerializationOptionsCase {
    kArrowSerializationOptions = 3,
    kAvroSerializationOptions = 4,
    OUTPUT_FORMAT_SERIALIZATION_OPTIONS_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(ReadSession_TableReadOptions& a, ReadSession_TableReadOptions& b) { a.Swap(&b); }
  inline void Swap(ReadSession_TableReadOptions* 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(ReadSession_TableReadOptions* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    kSelectedFieldsFieldNumber = 1,
    kRowRestrictionFieldNumber = 2,
    kSamplePercentageFieldNumber = 5,
    kArrowSerializationOptionsFieldNumber = 3,
    kAvroSerializationOptionsFieldNumber = 4,
  };
  // repeated string selected_fields = 1;
  [[nodiscard]] int selected_fields_size()
      const;
  private:
  int _internal_selected_fields_size() const;

  public:
  void clear_selected_fields() ;
  [[nodiscard]] const ::std::string& selected_fields(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_selected_fields(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_selected_fields(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_selected_fields();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_selected_fields(Arg_&& value, Args_... args);
  [[nodiscard]] const
      ::google::protobuf::RepeatedPtrField<::std::string>&
      selected_fields() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::std::string>*
      PROTOBUF_NONNULL
      mutable_selected_fields();

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

  public:
  // string row_restriction = 2;
  void clear_row_restriction() ;
  [[nodiscard]] const ::std::string& row_restriction() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_row_restriction(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_row_restriction();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_row_restriction();
  void set_allocated_row_restriction(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_row_restriction() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_row_restriction(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_row_restriction();

  public:
  // optional double sample_percentage = 5 [(.google.api.field_behavior) = OPTIONAL];
  [[nodiscard]] bool has_sample_percentage()
      const;
  void clear_sample_percentage() ;
  [[nodiscard]] double sample_percentage() const;
  void set_sample_percentage(double value);

  private:
  double _internal_sample_percentage() const;
  void _internal_set_sample_percentage(double value);

  public:
  // .google.cloud.bigquery.storage.v1.ArrowSerializationOptions arrow_serialization_options = 3 [(.google.api.field_behavior) = OPTIONAL];
  [[nodiscard]] bool has_arrow_serialization_options()
      const;
  private:
  bool _internal_has_arrow_serialization_options() const;

  public:
  void clear_arrow_serialization_options() ;
  [[nodiscard]] const ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions& arrow_serialization_options() const;
  [[nodiscard]] ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions* PROTOBUF_NULLABLE release_arrow_serialization_options();
  ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions* PROTOBUF_NONNULL mutable_arrow_serialization_options();
  void set_allocated_arrow_serialization_options(::google::cloud::bigquery::storage::v1::ArrowSerializationOptions* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_arrow_serialization_options(::google::cloud::bigquery::storage::v1::ArrowSerializationOptions* PROTOBUF_NULLABLE value);
  ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions* PROTOBUF_NULLABLE unsafe_arena_release_arrow_serialization_options();

  private:
  const ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions& _internal_arrow_serialization_options() const;
  ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions* PROTOBUF_NONNULL _internal_mutable_arrow_serialization_options();

  public:
  // .google.cloud.bigquery.storage.v1.AvroSerializationOptions avro_serialization_options = 4 [(.google.api.field_behavior) = OPTIONAL];
  [[nodiscard]] bool has_avro_serialization_options()
      const;
  private:
  bool _internal_has_avro_serialization_options() const;

  public:
  void clear_avro_serialization_options() ;
  [[nodiscard]] const ::google::cloud::bigquery::storage::v1::AvroSerializationOptions& avro_serialization_options() const;
  [[nodiscard]] ::google::cloud::bigquery::storage::v1::AvroSerializationOptions* PROTOBUF_NULLABLE release_avro_serialization_options();
  ::google::cloud::bigquery::storage::v1::AvroSerializationOptions* PROTOBUF_NONNULL mutable_avro_serialization_options();
  void set_allocated_avro_serialization_options(::google::cloud::bigquery::storage::v1::AvroSerializationOptions* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_avro_serialization_options(::google::cloud::bigquery::storage::v1::AvroSerializationOptions* PROTOBUF_NULLABLE value);
  ::google::cloud::bigquery::storage::v1::AvroSerializationOptions* PROTOBUF_NULLABLE unsafe_arena_release_avro_serialization_options();

  private:
  const ::google::cloud::bigquery::storage::v1::AvroSerializationOptions& _internal_avro_serialization_options() const;
  ::google::cloud::bigquery::storage::v1::AvroSerializationOptions* PROTOBUF_NONNULL _internal_mutable_avro_serialization_options();

  public:
  void clear_output_format_serialization_options();
  OutputFormatSerializationOptionsCase output_format_serialization_options_case() const;
  // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions)
 private:
  class _Internal;
  void set_has_arrow_serialization_options();
  void set_has_avro_serialization_options();
  [[nodiscard]] inline bool has_output_format_serialization_options() const;
  inline void clear_has_output_format_serialization_options();
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 5,
                          2, 100,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ReadSession_TableReadOptions& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> selected_fields_;
    ::google::protobuf::internal::ArenaStringPtr row_restriction_;
    double sample_percentage_;
    union OutputFormatSerializationOptionsUnion {
      constexpr OutputFormatSerializationOptionsUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions* PROTOBUF_NULLABLE arrow_serialization_options_;
      ::google::cloud::bigquery::storage::v1::AvroSerializationOptions* PROTOBUF_NULLABLE avro_serialization_options_;
    } output_format_serialization_options_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2fcloud_2fbigquery_2fstorage_2fv1_2fstream_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED ReadSession_TableModifiers final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:google.cloud.bigquery.storage.v1.ReadSession.TableModifiers) */ {
 public:
  inline ReadSession_TableModifiers() : ReadSession_TableModifiers(nullptr) {}
  ~ReadSession_TableModifiers() PROTOBUF_FINAL;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    kSnapshotTimeFieldNumber = 1,
  };
  // .google.protobuf.Timestamp snapshot_time = 1;
  [[nodiscard]] bool has_snapshot_time()
      const;
  void clear_snapshot_time() ;
  [[nodiscard]] const ::google::protobuf::Timestamp& snapshot_time() const;
  [[nodiscard]] ::google::protobuf::Timestamp* PROTOBUF_NULLABLE release_snapshot_time();
  ::google::protobuf::Timestamp* PROTOBUF_NONNULL mutable_snapshot_time();
  void set_allocated_snapshot_time(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_snapshot_time(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value);
  ::google::protobuf::Timestamp* PROTOBUF_NULLABLE unsafe_arena_release_snapshot_time();

  private:
  const ::google::protobuf::Timestamp& _internal_snapshot_time() const;
  ::google::protobuf::Timestamp* PROTOBUF_NONNULL _internal_mutable_snapshot_time();

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

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

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED WriteStream final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:google.cloud.bigquery.storage.v1.WriteStream) */ {
 public:
  inline WriteStream() : WriteStream(nullptr) {}
  ~WriteStream() PROTOBUF_FINAL;

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

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

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

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

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

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

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

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

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

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

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

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

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

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Type = WriteStream_Type;
  static constexpr Type TYPE_UNSPECIFIED = WriteStream_Type_TYPE_UNSPECIFIED;
  static constexpr Type COMMITTED = WriteStream_Type_COMMITTED;
  static constexpr Type PENDING = WriteStream_Type_PENDING;
  static constexpr Type BUFFERED = WriteStream_Type_BUFFERED;
  [[nodiscard]] static inline bool Type_IsValid(int value) {
    return WriteStream_Type_IsValid(value);
  }
  static constexpr Type Type_MIN = WriteStream_Type_Type_MIN;
  static constexpr Type Type_MAX = WriteStream_Type_Type_MAX;
  static constexpr int Type_ARRAYSIZE = WriteStream_Type_Type_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Type_descriptor() {
    return WriteStream_Type_descriptor();
  }
  template <typename T>
  [[nodiscard]] static inline const ::std::string& Type_Name(T value) {
    return WriteStream_Type_Name(value);
  }
  [[nodiscard]] static inline bool Type_Parse(
      ::absl::string_view name, Type* PROTOBUF_NONNULL value) {
    return WriteStream_Type_Parse(name, value);
  }
  using WriteMode = WriteStream_WriteMode;
  static constexpr WriteMode WRITE_MODE_UNSPECIFIED = WriteStream_WriteMode_WRITE_MODE_UNSPECIFIED;
  static constexpr WriteMode INSERT = WriteStream_WriteMode_INSERT;
  [[nodiscard]] static inline bool WriteMode_IsValid(int value) {
    return WriteStream_WriteMode_IsValid(value);
  }
  static constexpr WriteMode WriteMode_MIN = WriteStream_WriteMode_WriteMode_MIN;
  static constexpr WriteMode WriteMode_MAX = WriteStream_WriteMode_WriteMode_MAX;
  static constexpr int WriteMode_ARRAYSIZE = WriteStream_WriteMode_WriteMode_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL WriteMode_descriptor() {
    return WriteStream_WriteMode_descriptor();
  }
  template <typename T>
  [[nodiscard]] static inline const ::std::string& WriteMode_Name(T value) {
    return WriteStream_WriteMode_Name(value);
  }
  [[nodiscard]] static inline bool WriteMode_Parse(
      ::absl::string_view name, WriteMode* PROTOBUF_NONNULL value) {
    return WriteStream_WriteMode_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kNameFieldNumber = 1,
    kLocationFieldNumber = 8,
    kCreateTimeFieldNumber = 3,
    kCommitTimeFieldNumber = 4,
    kTableSchemaFieldNumber = 5,
    kTypeFieldNumber = 2,
    kWriteModeFieldNumber = 7,
  };
  // string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];
  void clear_name() ;
  [[nodiscard]] const ::std::string& name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name();
  void set_allocated_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_name();

  public:
  // string location = 8 [(.google.api.field_behavior) = IMMUTABLE];
  void clear_location() ;
  [[nodiscard]] const ::std::string& location() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_location(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_location();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_location();
  void set_allocated_location(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_location() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_location(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_location();

  public:
  // .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
  [[nodiscard]] bool has_create_time()
      const;
  void clear_create_time() ;
  [[nodiscard]] const ::google::protobuf::Timestamp& create_time() const;
  [[nodiscard]] ::google::protobuf::Timestamp* PROTOBUF_NULLABLE release_create_time();
  ::google::protobuf::Timestamp* PROTOBUF_NONNULL mutable_create_time();
  void set_allocated_create_time(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_create_time(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value);
  ::google::protobuf::Timestamp* PROTOBUF_NULLABLE unsafe_arena_release_create_time();

  private:
  const ::google::protobuf::Timestamp& _internal_create_time() const;
  ::google::protobuf::Timestamp* PROTOBUF_NONNULL _internal_mutable_create_time();

  public:
  // .google.protobuf.Timestamp commit_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
  [[nodiscard]] bool has_commit_time()
      const;
  void clear_commit_time() ;
  [[nodiscard]] const ::google::protobuf::Timestamp& commit_time() const;
  [[nodiscard]] ::google::protobuf::Timestamp* PROTOBUF_NULLABLE release_commit_time();
  ::google::protobuf::Timestamp* PROTOBUF_NONNULL mutable_commit_time();
  void set_allocated_commit_time(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_commit_time(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value);
  ::google::protobuf::Timestamp* PROTOBUF_NULLABLE unsafe_arena_release_commit_time();

  private:
  const ::google::protobuf::Timestamp& _internal_commit_time() const;
  ::google::protobuf::Timestamp* PROTOBUF_NONNULL _internal_mutable_commit_time();

  public:
  // .google.cloud.bigquery.storage.v1.TableSchema table_schema = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
  [[nodiscard]] bool has_table_schema()
      const;
  void clear_table_schema() ;
  [[nodiscard]] const ::google::cloud::bigquery::storage::v1::TableSchema& table_schema() const;
  [[nodiscard]] ::google::cloud::bigquery::storage::v1::TableSchema* PROTOBUF_NULLABLE release_table_schema();
  ::google::cloud::bigquery::storage::v1::TableSchema* PROTOBUF_NONNULL mutable_table_schema();
  void set_allocated_table_schema(::google::cloud::bigquery::storage::v1::TableSchema* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_table_schema(::google::cloud::bigquery::storage::v1::TableSchema* PROTOBUF_NULLABLE value);
  ::google::cloud::bigquery::storage::v1::TableSchema* PROTOBUF_NULLABLE unsafe_arena_release_table_schema();

  private:
  const ::google::cloud::bigquery::storage::v1::TableSchema& _internal_table_schema() const;
  ::google::cloud::bigquery::storage::v1::TableSchema* PROTOBUF_NONNULL _internal_mutable_table_schema();

  public:
  // .google.cloud.bigquery.storage.v1.WriteStream.Type type = 2 [(.google.api.field_behavior) = IMMUTABLE];
  void clear_type() ;
  [[nodiscard]] ::google::cloud::bigquery::storage::v1::WriteStream_Type type() const;
  void set_type(::google::cloud::bigquery::storage::v1::WriteStream_Type value);

  private:
  ::google::cloud::bigquery::storage::v1::WriteStream_Type _internal_type() const;
  void _internal_set_type(::google::cloud::bigquery::storage::v1::WriteStream_Type value);

  public:
  // .google.cloud.bigquery.storage.v1.WriteStream.WriteMode write_mode = 7 [(.google.api.field_behavior) = IMMUTABLE];
  void clear_write_mode() ;
  [[nodiscard]] ::google::cloud::bigquery::storage::v1::WriteStream_WriteMode write_mode() const;
  void set_write_mode(::google::cloud::bigquery::storage::v1::WriteStream_WriteMode value);

  private:
  ::google::cloud::bigquery::storage::v1::WriteStream_WriteMode _internal_write_mode() const;
  void _internal_set_write_mode(::google::cloud::bigquery::storage::v1::WriteStream_WriteMode value);

  public:
  // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1.WriteStream)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 7,
                          3, 65,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const WriteStream& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::protobuf::internal::ArenaStringPtr location_;
    ::google::protobuf::Timestamp* PROTOBUF_NULLABLE create_time_;
    ::google::protobuf::Timestamp* PROTOBUF_NULLABLE commit_time_;
    ::google::cloud::bigquery::storage::v1::TableSchema* PROTOBUF_NULLABLE table_schema_;
    int type_;
    int write_mode_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2fcloud_2fbigquery_2fstorage_2fv1_2fstream_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED ReadSession final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:google.cloud.bigquery.storage.v1.ReadSession) */ {
 public:
  inline ReadSession() : ReadSession(nullptr) {}
  ~ReadSession() PROTOBUF_FINAL;

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

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

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

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

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const ReadSession& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ReadSession>(&ReadSession_globals_);
  }
  enum SchemaCase {
    kAvroSchema = 4,
    kArrowSchema = 5,
    SCHEMA_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(ReadSession& a, ReadSession& b) { a.Swap(&b); }
  inline void Swap(ReadSession* 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(ReadSession* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

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

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

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

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using TableModifiers = ReadSession_TableModifiers;
  using TableReadOptions = ReadSession_TableReadOptions;

  // accessors -------------------------------------------------------
  enum : int {
    kStreamsFieldNumber = 10,
    kNameFieldNumber = 1,
    kTableFieldNumber = 6,
    kTraceIdFieldNumber = 13,
    kExpireTimeFieldNumber = 2,
    kTableModifiersFieldNumber = 7,
    kReadOptionsFieldNumber = 8,
    kEstimatedTotalBytesScannedFieldNumber = 12,
    kEstimatedRowCountFieldNumber = 14,
    kDataFormatFieldNumber = 3,
    kAvroSchemaFieldNumber = 4,
    kArrowSchemaFieldNumber = 5,
  };
  // repeated .google.cloud.bigquery.storage.v1.ReadStream streams = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];
  [[nodiscard]] int streams_size()
      const;
  private:
  int _internal_streams_size() const;

  public:
  void clear_streams() ;
  [[nodiscard]] const ::google::cloud::bigquery::storage::v1::ReadStream& streams(int index) const;
  [[nodiscard]] ::google::cloud::bigquery::storage::v1::ReadStream* PROTOBUF_NONNULL mutable_streams(int index);
  ::google::cloud::bigquery::storage::v1::ReadStream* PROTOBUF_NONNULL add_streams();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::google::cloud::bigquery::storage::v1::ReadStream>&
  streams() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::google::cloud::bigquery::storage::v1::ReadStream>* PROTOBUF_NONNULL
  mutable_streams();

  private:
  const ::google::protobuf::RepeatedPtrField<::google::cloud::bigquery::storage::v1::ReadStream>& _internal_streams() const;
  ::google::protobuf::RepeatedPtrField<::google::cloud::bigquery::storage::v1::ReadStream>* PROTOBUF_NONNULL _internal_mutable_streams();

  public:
  // string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];
  void clear_name() ;
  [[nodiscard]] const ::std::string& name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name();
  void set_allocated_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_name();

  public:
  // string table = 6 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.resource_reference) = {
  void clear_table() ;
  [[nodiscard]] const ::std::string& table() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_table(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_table();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_table();
  void set_allocated_table(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_table() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_table(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_table();

  public:
  // string trace_id = 13 [(.google.api.field_behavior) = OPTIONAL];
  void clear_trace_id() ;
  [[nodiscard]] const ::std::string& trace_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_trace_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_trace_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_trace_id();
  void set_allocated_trace_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_trace_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_trace_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_trace_id();

  public:
  // .google.protobuf.Timestamp expire_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
  [[nodiscard]] bool has_expire_time()
      const;
  void clear_expire_time() ;
  [[nodiscard]] const ::google::protobuf::Timestamp& expire_time() const;
  [[nodiscard]] ::google::protobuf::Timestamp* PROTOBUF_NULLABLE release_expire_time();
  ::google::protobuf::Timestamp* PROTOBUF_NONNULL mutable_expire_time();
  void set_allocated_expire_time(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_expire_time(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value);
  ::google::protobuf::Timestamp* PROTOBUF_NULLABLE unsafe_arena_release_expire_time();

  private:
  const ::google::protobuf::Timestamp& _internal_expire_time() const;
  ::google::protobuf::Timestamp* PROTOBUF_NONNULL _internal_mutable_expire_time();

  public:
  // .google.cloud.bigquery.storage.v1.ReadSession.TableModifiers table_modifiers = 7 [(.google.api.field_behavior) = OPTIONAL];
  [[nodiscard]] bool has_table_modifiers()
      const;
  void clear_table_modifiers() ;
  [[nodiscard]] const ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers& table_modifiers() const;
  [[nodiscard]] ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* PROTOBUF_NULLABLE release_table_modifiers();
  ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* PROTOBUF_NONNULL mutable_table_modifiers();
  void set_allocated_table_modifiers(::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_table_modifiers(::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* PROTOBUF_NULLABLE value);
  ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* PROTOBUF_NULLABLE unsafe_arena_release_table_modifiers();

  private:
  const ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers& _internal_table_modifiers() const;
  ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* PROTOBUF_NONNULL _internal_mutable_table_modifiers();

  public:
  // .google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions read_options = 8 [(.google.api.field_behavior) = OPTIONAL];
  [[nodiscard]] bool has_read_options()
      const;
  void clear_read_options() ;
  [[nodiscard]] const ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions& read_options() const;
  [[nodiscard]] ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* PROTOBUF_NULLABLE release_read_options();
  ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* PROTOBUF_NONNULL mutable_read_options();
  void set_allocated_read_options(::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_read_options(::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* PROTOBUF_NULLABLE value);
  ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* PROTOBUF_NULLABLE unsafe_arena_release_read_options();

  private:
  const ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions& _internal_read_options() const;
  ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* PROTOBUF_NONNULL _internal_mutable_read_options();

  public:
  // int64 estimated_total_bytes_scanned = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
  void clear_estimated_total_bytes_scanned() ;
  [[nodiscard]] ::int64_t estimated_total_bytes_scanned() const;
  void set_estimated_total_bytes_scanned(::int64_t value);

  private:
  ::int64_t _internal_estimated_total_bytes_scanned() const;
  void _internal_set_estimated_total_bytes_scanned(::int64_t value);

  public:
  // int64 estimated_row_count = 14 [(.google.api.field_behavior) = OUTPUT_ONLY];
  void clear_estimated_row_count() ;
  [[nodiscard]] ::int64_t estimated_row_count() const;
  void set_estimated_row_count(::int64_t value);

  private:
  ::int64_t _internal_estimated_row_count() const;
  void _internal_set_estimated_row_count(::int64_t value);

  public:
  // .google.cloud.bigquery.storage.v1.DataFormat data_format = 3 [(.google.api.field_behavior) = IMMUTABLE];
  void clear_data_format() ;
  [[nodiscard]] ::google::cloud::bigquery::storage::v1::DataFormat data_format() const;
  void set_data_format(::google::cloud::bigquery::storage::v1::DataFormat value);

  private:
  ::google::cloud::bigquery::storage::v1::DataFormat _internal_data_format() const;
  void _internal_set_data_format(::google::cloud::bigquery::storage::v1::DataFormat value);

  public:
  // .google.cloud.bigquery.storage.v1.AvroSchema avro_schema = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
  [[nodiscard]] bool has_avro_schema()
      const;
  private:
  bool _internal_has_avro_schema() const;

  public:
  void clear_avro_schema() ;
  [[nodiscard]] const ::google::cloud::bigquery::storage::v1::AvroSchema& avro_schema() const;
  [[nodiscard]] ::google::cloud::bigquery::storage::v1::AvroSchema* PROTOBUF_NULLABLE release_avro_schema();
  ::google::cloud::bigquery::storage::v1::AvroSchema* PROTOBUF_NONNULL mutable_avro_schema();
  void set_allocated_avro_schema(::google::cloud::bigquery::storage::v1::AvroSchema* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_avro_schema(::google::cloud::bigquery::storage::v1::AvroSchema* PROTOBUF_NULLABLE value);
  ::google::cloud::bigquery::storage::v1::AvroSchema* PROTOBUF_NULLABLE unsafe_arena_release_avro_schema();

  private:
  const ::google::cloud::bigquery::storage::v1::AvroSchema& _internal_avro_schema() const;
  ::google::cloud::bigquery::storage::v1::AvroSchema* PROTOBUF_NONNULL _internal_mutable_avro_schema();

  public:
  // .google.cloud.bigquery.storage.v1.ArrowSchema arrow_schema = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
  [[nodiscard]] bool has_arrow_schema()
      const;
  private:
  bool _internal_has_arrow_schema() const;

  public:
  void clear_arrow_schema() ;
  [[nodiscard]] const ::google::cloud::bigquery::storage::v1::ArrowSchema& arrow_schema() const;
  [[nodiscard]] ::google::cloud::bigquery::storage::v1::ArrowSchema* PROTOBUF_NULLABLE release_arrow_schema();
  ::google::cloud::bigquery::storage::v1::ArrowSchema* PROTOBUF_NONNULL mutable_arrow_schema();
  void set_allocated_arrow_schema(::google::cloud::bigquery::storage::v1::ArrowSchema* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_arrow_schema(::google::cloud::bigquery::storage::v1::ArrowSchema* PROTOBUF_NULLABLE value);
  ::google::cloud::bigquery::storage::v1::ArrowSchema* PROTOBUF_NULLABLE unsafe_arena_release_arrow_schema();

  private:
  const ::google::cloud::bigquery::storage::v1::ArrowSchema& _internal_arrow_schema() const;
  ::google::cloud::bigquery::storage::v1::ArrowSchema* PROTOBUF_NONNULL _internal_mutable_arrow_schema();

  public:
  void clear_schema();
  SchemaCase schema_case() const;
  // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1.ReadSession)
 private:
  class _Internal;
  void set_has_avro_schema();
  void set_has_arrow_schema();
  [[nodiscard]] inline bool has_schema() const;
  inline void clear_has_schema();
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<4, 12,
                          6, 78,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ReadSession& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::google::cloud::bigquery::storage::v1::ReadStream > streams_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::protobuf::internal::ArenaStringPtr table_;
    ::google::protobuf::internal::ArenaStringPtr trace_id_;
    ::google::protobuf::Timestamp* PROTOBUF_NULLABLE expire_time_;
    ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* PROTOBUF_NULLABLE table_modifiers_;
    ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* PROTOBUF_NULLABLE read_options_;
    ::int64_t estimated_total_bytes_scanned_;
    ::int64_t estimated_row_count_;
    int data_format_;
    union SchemaUnion {
      constexpr SchemaUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::cloud::bigquery::storage::v1::AvroSchema* PROTOBUF_NULLABLE avro_schema_;
      ::google::cloud::bigquery::storage::v1::ArrowSchema* PROTOBUF_NULLABLE arrow_schema_;
    } schema_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2fcloud_2fbigquery_2fstorage_2fv1_2fstream_2eproto;
};

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




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


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

// ReadSession_TableModifiers

// .google.protobuf.Timestamp snapshot_time = 1;
inline bool ReadSession_TableModifiers::has_snapshot_time() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.snapshot_time_ != nullptr);
  return value;
}
inline const ::google::protobuf::Timestamp& ReadSession_TableModifiers::_internal_snapshot_time() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Timestamp* p = _impl_.snapshot_time_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Timestamp>(&::google::protobuf::Timestamp_globals_);
}
inline const ::google::protobuf::Timestamp& ReadSession_TableModifiers::snapshot_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.TableModifiers.snapshot_time)
  return _internal_snapshot_time();
}
inline void ReadSession_TableModifiers::unsafe_arena_set_allocated_snapshot_time(
    ::google::protobuf::Timestamp* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.snapshot_time_);
  }
  _impl_.snapshot_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.TableModifiers.snapshot_time)
}
inline ::google::protobuf::Timestamp* PROTOBUF_NULLABLE ReadSession_TableModifiers::release_snapshot_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Timestamp* released = _impl_.snapshot_time_;
  _impl_.snapshot_time_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NULLABLE ReadSession_TableModifiers::unsafe_arena_release_snapshot_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.ReadSession.TableModifiers.snapshot_time)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Timestamp* temp = _impl_.snapshot_time_;
  _impl_.snapshot_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NONNULL ReadSession_TableModifiers::_internal_mutable_snapshot_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.snapshot_time_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Timestamp>(GetArena());
    _impl_.snapshot_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(p);
  }
  return _impl_.snapshot_time_;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NONNULL ReadSession_TableModifiers::mutable_snapshot_time()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Timestamp* _msg = _internal_mutable_snapshot_time();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.TableModifiers.snapshot_time)
  return _msg;
}
inline void ReadSession_TableModifiers::set_allocated_snapshot_time(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.snapshot_time_);
  }

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

  _impl_.snapshot_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.TableModifiers.snapshot_time)
}

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

// ReadSession_TableReadOptions

// repeated string selected_fields = 1;
inline int ReadSession_TableReadOptions::_internal_selected_fields_size() const {
  return _internal_selected_fields().size();
}
inline int ReadSession_TableReadOptions::selected_fields_size() const {
  return _internal_selected_fields_size();
}
inline void ReadSession_TableReadOptions::clear_selected_fields() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.selected_fields_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL ReadSession_TableReadOptions::add_selected_fields()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_selected_fields()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.selected_fields)
  return _s;
}
inline const ::std::string& ReadSession_TableReadOptions::selected_fields(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.selected_fields)
  return _internal_selected_fields().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL ReadSession_TableReadOptions::mutable_selected_fields(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.selected_fields)
  return _internal_mutable_selected_fields()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void ReadSession_TableReadOptions::set_selected_fields(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_selected_fields()->Mutable(index),
      ::std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.selected_fields)
}
template <typename Arg_, typename... Args_>
inline void ReadSession_TableReadOptions::add_selected_fields(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_selected_fields(), ::std::forward<Arg_>(value),
      args... );
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.selected_fields)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& ReadSession_TableReadOptions::selected_fields()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.selected_fields)
  return _internal_selected_fields();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
ReadSession_TableReadOptions::mutable_selected_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.selected_fields)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_selected_fields();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
ReadSession_TableReadOptions::_internal_selected_fields() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.selected_fields_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
ReadSession_TableReadOptions::_internal_mutable_selected_fields() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.selected_fields_;
}

// string row_restriction = 2;
inline void ReadSession_TableReadOptions::clear_row_restriction() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.row_restriction_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& ReadSession_TableReadOptions::row_restriction() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.row_restriction)
  return _internal_row_restriction();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ReadSession_TableReadOptions::set_row_restriction(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.row_restriction_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.row_restriction)
}
inline ::std::string* PROTOBUF_NONNULL ReadSession_TableReadOptions::mutable_row_restriction()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_row_restriction();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.row_restriction)
  return _s;
}
inline const ::std::string& ReadSession_TableReadOptions::_internal_row_restriction() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.row_restriction_.Get();
}
inline void ReadSession_TableReadOptions::_internal_set_row_restriction(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.row_restriction_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ReadSession_TableReadOptions::_internal_mutable_row_restriction() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.row_restriction_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ReadSession_TableReadOptions::release_row_restriction() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.row_restriction)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.row_restriction_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.row_restriction_.Set("", GetArena());
  }
  return released;
}
inline void ReadSession_TableReadOptions::set_allocated_row_restriction(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.row_restriction_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.row_restriction_.IsDefault()) {
    _impl_.row_restriction_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.row_restriction)
}

// .google.cloud.bigquery.storage.v1.ArrowSerializationOptions arrow_serialization_options = 3 [(.google.api.field_behavior) = OPTIONAL];
inline bool ReadSession_TableReadOptions::has_arrow_serialization_options() const {
  return output_format_serialization_options_case() == kArrowSerializationOptions;
}
inline bool ReadSession_TableReadOptions::_internal_has_arrow_serialization_options() const {
  return output_format_serialization_options_case() == kArrowSerializationOptions;
}
inline void ReadSession_TableReadOptions::set_has_arrow_serialization_options() {
  _impl_._oneof_case_[0] = kArrowSerializationOptions;
}
inline ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions* PROTOBUF_NULLABLE ReadSession_TableReadOptions::release_arrow_serialization_options() {
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.arrow_serialization_options)
  if (output_format_serialization_options_case() == kArrowSerializationOptions) {
    clear_has_output_format_serialization_options();
    auto* temp = _impl_.output_format_serialization_options_.arrow_serialization_options_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.output_format_serialization_options_.arrow_serialization_options_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions& ReadSession_TableReadOptions::_internal_arrow_serialization_options() const {
  return output_format_serialization_options_case() == kArrowSerializationOptions ? static_cast<const ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions&>(*_impl_.output_format_serialization_options_.arrow_serialization_options_)
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::cloud::bigquery::storage::v1::ArrowSerializationOptions>(&::google::cloud::bigquery::storage::v1::ArrowSerializationOptions_globals_);
}
inline const ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions& ReadSession_TableReadOptions::arrow_serialization_options() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.arrow_serialization_options)
  return _internal_arrow_serialization_options();
}
inline ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions* PROTOBUF_NULLABLE ReadSession_TableReadOptions::unsafe_arena_release_arrow_serialization_options() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.arrow_serialization_options)
  if (output_format_serialization_options_case() == kArrowSerializationOptions) {
    clear_has_output_format_serialization_options();
    auto* temp = _impl_.output_format_serialization_options_.arrow_serialization_options_;
    _impl_.output_format_serialization_options_.arrow_serialization_options_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ReadSession_TableReadOptions::unsafe_arena_set_allocated_arrow_serialization_options(
    ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions* 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_output_format_serialization_options();
  if (value) {
    set_has_arrow_serialization_options();
    _impl_.output_format_serialization_options_.arrow_serialization_options_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.arrow_serialization_options)
}
inline ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions* PROTOBUF_NONNULL ReadSession_TableReadOptions::_internal_mutable_arrow_serialization_options() {
  if (output_format_serialization_options_case() != kArrowSerializationOptions) {
    clear_output_format_serialization_options();
    set_has_arrow_serialization_options();
    _impl_.output_format_serialization_options_.arrow_serialization_options_ = 
        ::google::protobuf::Message::DefaultConstruct<::google::cloud::bigquery::storage::v1::ArrowSerializationOptions>(GetArena());
  }
  return _impl_.output_format_serialization_options_.arrow_serialization_options_;
}
inline ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions* PROTOBUF_NONNULL ReadSession_TableReadOptions::mutable_arrow_serialization_options()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::cloud::bigquery::storage::v1::ArrowSerializationOptions* _msg = _internal_mutable_arrow_serialization_options();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.arrow_serialization_options)
  return _msg;
}

// .google.cloud.bigquery.storage.v1.AvroSerializationOptions avro_serialization_options = 4 [(.google.api.field_behavior) = OPTIONAL];
inline bool ReadSession_TableReadOptions::has_avro_serialization_options() const {
  return output_format_serialization_options_case() == kAvroSerializationOptions;
}
inline bool ReadSession_TableReadOptions::_internal_has_avro_serialization_options() const {
  return output_format_serialization_options_case() == kAvroSerializationOptions;
}
inline void ReadSession_TableReadOptions::set_has_avro_serialization_options() {
  _impl_._oneof_case_[0] = kAvroSerializationOptions;
}
inline ::google::cloud::bigquery::storage::v1::AvroSerializationOptions* PROTOBUF_NULLABLE ReadSession_TableReadOptions::release_avro_serialization_options() {
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.avro_serialization_options)
  if (output_format_serialization_options_case() == kAvroSerializationOptions) {
    clear_has_output_format_serialization_options();
    auto* temp = _impl_.output_format_serialization_options_.avro_serialization_options_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.output_format_serialization_options_.avro_serialization_options_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::cloud::bigquery::storage::v1::AvroSerializationOptions& ReadSession_TableReadOptions::_internal_avro_serialization_options() const {
  return output_format_serialization_options_case() == kAvroSerializationOptions ? static_cast<const ::google::cloud::bigquery::storage::v1::AvroSerializationOptions&>(*_impl_.output_format_serialization_options_.avro_serialization_options_)
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::cloud::bigquery::storage::v1::AvroSerializationOptions>(&::google::cloud::bigquery::storage::v1::AvroSerializationOptions_globals_);
}
inline const ::google::cloud::bigquery::storage::v1::AvroSerializationOptions& ReadSession_TableReadOptions::avro_serialization_options() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.avro_serialization_options)
  return _internal_avro_serialization_options();
}
inline ::google::cloud::bigquery::storage::v1::AvroSerializationOptions* PROTOBUF_NULLABLE ReadSession_TableReadOptions::unsafe_arena_release_avro_serialization_options() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.avro_serialization_options)
  if (output_format_serialization_options_case() == kAvroSerializationOptions) {
    clear_has_output_format_serialization_options();
    auto* temp = _impl_.output_format_serialization_options_.avro_serialization_options_;
    _impl_.output_format_serialization_options_.avro_serialization_options_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ReadSession_TableReadOptions::unsafe_arena_set_allocated_avro_serialization_options(
    ::google::cloud::bigquery::storage::v1::AvroSerializationOptions* 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_output_format_serialization_options();
  if (value) {
    set_has_avro_serialization_options();
    _impl_.output_format_serialization_options_.avro_serialization_options_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.avro_serialization_options)
}
inline ::google::cloud::bigquery::storage::v1::AvroSerializationOptions* PROTOBUF_NONNULL ReadSession_TableReadOptions::_internal_mutable_avro_serialization_options() {
  if (output_format_serialization_options_case() != kAvroSerializationOptions) {
    clear_output_format_serialization_options();
    set_has_avro_serialization_options();
    _impl_.output_format_serialization_options_.avro_serialization_options_ = 
        ::google::protobuf::Message::DefaultConstruct<::google::cloud::bigquery::storage::v1::AvroSerializationOptions>(GetArena());
  }
  return _impl_.output_format_serialization_options_.avro_serialization_options_;
}
inline ::google::cloud::bigquery::storage::v1::AvroSerializationOptions* PROTOBUF_NONNULL ReadSession_TableReadOptions::mutable_avro_serialization_options()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::cloud::bigquery::storage::v1::AvroSerializationOptions* _msg = _internal_mutable_avro_serialization_options();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.avro_serialization_options)
  return _msg;
}

// optional double sample_percentage = 5 [(.google.api.field_behavior) = OPTIONAL];
inline bool ReadSession_TableReadOptions::has_sample_percentage() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void ReadSession_TableReadOptions::clear_sample_percentage() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sample_percentage_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline double ReadSession_TableReadOptions::sample_percentage() const {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.sample_percentage)
  return _internal_sample_percentage();
}
inline void ReadSession_TableReadOptions::set_sample_percentage(double value) {
  _internal_set_sample_percentage(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions.sample_percentage)
}
inline double ReadSession_TableReadOptions::_internal_sample_percentage() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sample_percentage_;
}
inline void ReadSession_TableReadOptions::_internal_set_sample_percentage(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sample_percentage_ = value;
}

inline bool ReadSession_TableReadOptions::has_output_format_serialization_options() const {
  return output_format_serialization_options_case() != OUTPUT_FORMAT_SERIALIZATION_OPTIONS_NOT_SET;
}
inline void ReadSession_TableReadOptions::clear_has_output_format_serialization_options() {
  _impl_._oneof_case_[0] = OUTPUT_FORMAT_SERIALIZATION_OPTIONS_NOT_SET;
}
inline ReadSession_TableReadOptions::OutputFormatSerializationOptionsCase ReadSession_TableReadOptions::output_format_serialization_options_case() const {
  return ReadSession_TableReadOptions::OutputFormatSerializationOptionsCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// ReadSession

// string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];
inline void ReadSession::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& ReadSession::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ReadSession::set_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.ReadSession.name)
}
inline ::std::string* PROTOBUF_NONNULL ReadSession::mutable_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.name)
  return _s;
}
inline const ::std::string& ReadSession::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void ReadSession::_internal_set_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ReadSession::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ReadSession::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.ReadSession.name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.name_.Set("", GetArena());
  }
  return released;
}
inline void ReadSession::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) {
    _impl_.name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.name)
}

// .google.protobuf.Timestamp expire_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
inline bool ReadSession::has_expire_time() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  PROTOBUF_ASSUME(!value || _impl_.expire_time_ != nullptr);
  return value;
}
inline const ::google::protobuf::Timestamp& ReadSession::_internal_expire_time() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Timestamp* p = _impl_.expire_time_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Timestamp>(&::google::protobuf::Timestamp_globals_);
}
inline const ::google::protobuf::Timestamp& ReadSession::expire_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.expire_time)
  return _internal_expire_time();
}
inline void ReadSession::unsafe_arena_set_allocated_expire_time(
    ::google::protobuf::Timestamp* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expire_time_);
  }
  _impl_.expire_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.expire_time)
}
inline ::google::protobuf::Timestamp* PROTOBUF_NULLABLE ReadSession::release_expire_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::google::protobuf::Timestamp* released = _impl_.expire_time_;
  _impl_.expire_time_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NULLABLE ReadSession::unsafe_arena_release_expire_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.ReadSession.expire_time)

  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::google::protobuf::Timestamp* temp = _impl_.expire_time_;
  _impl_.expire_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NONNULL ReadSession::_internal_mutable_expire_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.expire_time_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Timestamp>(GetArena());
    _impl_.expire_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(p);
  }
  return _impl_.expire_time_;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NONNULL ReadSession::mutable_expire_time()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::google::protobuf::Timestamp* _msg = _internal_mutable_expire_time();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.expire_time)
  return _msg;
}
inline void ReadSession::set_allocated_expire_time(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expire_time_);
  }

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

  _impl_.expire_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.expire_time)
}

// .google.cloud.bigquery.storage.v1.DataFormat data_format = 3 [(.google.api.field_behavior) = IMMUTABLE];
inline void ReadSession::clear_data_format() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.data_format_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000200U);
}
inline ::google::cloud::bigquery::storage::v1::DataFormat ReadSession::data_format() const {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.data_format)
  return _internal_data_format();
}
inline void ReadSession::set_data_format(::google::cloud::bigquery::storage::v1::DataFormat value) {
  _internal_set_data_format(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000200U);
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.ReadSession.data_format)
}
inline ::google::cloud::bigquery::storage::v1::DataFormat ReadSession::_internal_data_format() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::google::cloud::bigquery::storage::v1::DataFormat>(_impl_.data_format_);
}
inline void ReadSession::_internal_set_data_format(::google::cloud::bigquery::storage::v1::DataFormat value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.data_format_ = value;
}

// .google.cloud.bigquery.storage.v1.AvroSchema avro_schema = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
inline bool ReadSession::has_avro_schema() const {
  return schema_case() == kAvroSchema;
}
inline bool ReadSession::_internal_has_avro_schema() const {
  return schema_case() == kAvroSchema;
}
inline void ReadSession::set_has_avro_schema() {
  _impl_._oneof_case_[0] = kAvroSchema;
}
inline ::google::cloud::bigquery::storage::v1::AvroSchema* PROTOBUF_NULLABLE ReadSession::release_avro_schema() {
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.ReadSession.avro_schema)
  if (schema_case() == kAvroSchema) {
    clear_has_schema();
    auto* temp = _impl_.schema_.avro_schema_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.schema_.avro_schema_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::cloud::bigquery::storage::v1::AvroSchema& ReadSession::_internal_avro_schema() const {
  return schema_case() == kAvroSchema ? static_cast<const ::google::cloud::bigquery::storage::v1::AvroSchema&>(*_impl_.schema_.avro_schema_)
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::cloud::bigquery::storage::v1::AvroSchema>(&::google::cloud::bigquery::storage::v1::AvroSchema_globals_);
}
inline const ::google::cloud::bigquery::storage::v1::AvroSchema& ReadSession::avro_schema() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.avro_schema)
  return _internal_avro_schema();
}
inline ::google::cloud::bigquery::storage::v1::AvroSchema* PROTOBUF_NULLABLE ReadSession::unsafe_arena_release_avro_schema() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.cloud.bigquery.storage.v1.ReadSession.avro_schema)
  if (schema_case() == kAvroSchema) {
    clear_has_schema();
    auto* temp = _impl_.schema_.avro_schema_;
    _impl_.schema_.avro_schema_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ReadSession::unsafe_arena_set_allocated_avro_schema(
    ::google::cloud::bigquery::storage::v1::AvroSchema* 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_schema();
  if (value) {
    set_has_avro_schema();
    _impl_.schema_.avro_schema_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.avro_schema)
}
inline ::google::cloud::bigquery::storage::v1::AvroSchema* PROTOBUF_NONNULL ReadSession::_internal_mutable_avro_schema() {
  if (schema_case() != kAvroSchema) {
    clear_schema();
    set_has_avro_schema();
    _impl_.schema_.avro_schema_ = 
        ::google::protobuf::Message::DefaultConstruct<::google::cloud::bigquery::storage::v1::AvroSchema>(GetArena());
  }
  return _impl_.schema_.avro_schema_;
}
inline ::google::cloud::bigquery::storage::v1::AvroSchema* PROTOBUF_NONNULL ReadSession::mutable_avro_schema()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::cloud::bigquery::storage::v1::AvroSchema* _msg = _internal_mutable_avro_schema();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.avro_schema)
  return _msg;
}

// .google.cloud.bigquery.storage.v1.ArrowSchema arrow_schema = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
inline bool ReadSession::has_arrow_schema() const {
  return schema_case() == kArrowSchema;
}
inline bool ReadSession::_internal_has_arrow_schema() const {
  return schema_case() == kArrowSchema;
}
inline void ReadSession::set_has_arrow_schema() {
  _impl_._oneof_case_[0] = kArrowSchema;
}
inline ::google::cloud::bigquery::storage::v1::ArrowSchema* PROTOBUF_NULLABLE ReadSession::release_arrow_schema() {
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.ReadSession.arrow_schema)
  if (schema_case() == kArrowSchema) {
    clear_has_schema();
    auto* temp = _impl_.schema_.arrow_schema_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.schema_.arrow_schema_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::cloud::bigquery::storage::v1::ArrowSchema& ReadSession::_internal_arrow_schema() const {
  return schema_case() == kArrowSchema ? static_cast<const ::google::cloud::bigquery::storage::v1::ArrowSchema&>(*_impl_.schema_.arrow_schema_)
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::cloud::bigquery::storage::v1::ArrowSchema>(&::google::cloud::bigquery::storage::v1::ArrowSchema_globals_);
}
inline const ::google::cloud::bigquery::storage::v1::ArrowSchema& ReadSession::arrow_schema() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.arrow_schema)
  return _internal_arrow_schema();
}
inline ::google::cloud::bigquery::storage::v1::ArrowSchema* PROTOBUF_NULLABLE ReadSession::unsafe_arena_release_arrow_schema() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.cloud.bigquery.storage.v1.ReadSession.arrow_schema)
  if (schema_case() == kArrowSchema) {
    clear_has_schema();
    auto* temp = _impl_.schema_.arrow_schema_;
    _impl_.schema_.arrow_schema_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ReadSession::unsafe_arena_set_allocated_arrow_schema(
    ::google::cloud::bigquery::storage::v1::ArrowSchema* 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_schema();
  if (value) {
    set_has_arrow_schema();
    _impl_.schema_.arrow_schema_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.arrow_schema)
}
inline ::google::cloud::bigquery::storage::v1::ArrowSchema* PROTOBUF_NONNULL ReadSession::_internal_mutable_arrow_schema() {
  if (schema_case() != kArrowSchema) {
    clear_schema();
    set_has_arrow_schema();
    _impl_.schema_.arrow_schema_ = 
        ::google::protobuf::Message::DefaultConstruct<::google::cloud::bigquery::storage::v1::ArrowSchema>(GetArena());
  }
  return _impl_.schema_.arrow_schema_;
}
inline ::google::cloud::bigquery::storage::v1::ArrowSchema* PROTOBUF_NONNULL ReadSession::mutable_arrow_schema()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::cloud::bigquery::storage::v1::ArrowSchema* _msg = _internal_mutable_arrow_schema();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.arrow_schema)
  return _msg;
}

// string table = 6 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.resource_reference) = {
inline void ReadSession::clear_table() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.table_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::std::string& ReadSession::table() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.table)
  return _internal_table();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ReadSession::set_table(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.table_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.ReadSession.table)
}
inline ::std::string* PROTOBUF_NONNULL ReadSession::mutable_table()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_table();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.table)
  return _s;
}
inline const ::std::string& ReadSession::_internal_table() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.table_.Get();
}
inline void ReadSession::_internal_set_table(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.table_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ReadSession::_internal_mutable_table() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.table_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ReadSession::release_table() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.ReadSession.table)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.table_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.table_.Set("", GetArena());
  }
  return released;
}
inline void ReadSession::set_allocated_table(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.table_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.table_.IsDefault()) {
    _impl_.table_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.table)
}

// .google.cloud.bigquery.storage.v1.ReadSession.TableModifiers table_modifiers = 7 [(.google.api.field_behavior) = OPTIONAL];
inline bool ReadSession::has_table_modifiers() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  PROTOBUF_ASSUME(!value || _impl_.table_modifiers_ != nullptr);
  return value;
}
inline void ReadSession::clear_table_modifiers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.table_modifiers_ != nullptr) _impl_.table_modifiers_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline const ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers& ReadSession::_internal_table_modifiers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* p = _impl_.table_modifiers_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers>(&::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers_globals_);
}
inline const ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers& ReadSession::table_modifiers() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.table_modifiers)
  return _internal_table_modifiers();
}
inline void ReadSession::unsafe_arena_set_allocated_table_modifiers(
    ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.table_modifiers_);
  }
  _impl_.table_modifiers_ = reinterpret_cast<::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.table_modifiers)
}
inline ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* PROTOBUF_NULLABLE ReadSession::release_table_modifiers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* released = _impl_.table_modifiers_;
  _impl_.table_modifiers_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* PROTOBUF_NULLABLE ReadSession::unsafe_arena_release_table_modifiers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.ReadSession.table_modifiers)

  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* temp = _impl_.table_modifiers_;
  _impl_.table_modifiers_ = nullptr;
  return temp;
}
inline ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* PROTOBUF_NONNULL ReadSession::_internal_mutable_table_modifiers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.table_modifiers_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers>(GetArena());
    _impl_.table_modifiers_ = reinterpret_cast<::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers*>(p);
  }
  return _impl_.table_modifiers_;
}
inline ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* PROTOBUF_NONNULL ReadSession::mutable_table_modifiers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* _msg = _internal_mutable_table_modifiers();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.table_modifiers)
  return _msg;
}
inline void ReadSession::set_allocated_table_modifiers(::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.table_modifiers_);
  }

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

  _impl_.table_modifiers_ = reinterpret_cast<::google::cloud::bigquery::storage::v1::ReadSession_TableModifiers*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.table_modifiers)
}

// .google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions read_options = 8 [(.google.api.field_behavior) = OPTIONAL];
inline bool ReadSession::has_read_options() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000040U);
  PROTOBUF_ASSUME(!value || _impl_.read_options_ != nullptr);
  return value;
}
inline void ReadSession::clear_read_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.read_options_ != nullptr) _impl_.read_options_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline const ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions& ReadSession::_internal_read_options() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* p = _impl_.read_options_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions>(&::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions_globals_);
}
inline const ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions& ReadSession::read_options() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.read_options)
  return _internal_read_options();
}
inline void ReadSession::unsafe_arena_set_allocated_read_options(
    ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.read_options_);
  }
  _impl_.read_options_ = reinterpret_cast<::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.read_options)
}
inline ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* PROTOBUF_NULLABLE ReadSession::release_read_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* released = _impl_.read_options_;
  _impl_.read_options_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* PROTOBUF_NULLABLE ReadSession::unsafe_arena_release_read_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.ReadSession.read_options)

  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* temp = _impl_.read_options_;
  _impl_.read_options_ = nullptr;
  return temp;
}
inline ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* PROTOBUF_NONNULL ReadSession::_internal_mutable_read_options() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.read_options_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions>(GetArena());
    _impl_.read_options_ = reinterpret_cast<::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions*>(p);
  }
  return _impl_.read_options_;
}
inline ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* PROTOBUF_NONNULL ReadSession::mutable_read_options()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  ::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* _msg = _internal_mutable_read_options();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.read_options)
  return _msg;
}
inline void ReadSession::set_allocated_read_options(::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.read_options_);
  }

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

  _impl_.read_options_ = reinterpret_cast<::google::cloud::bigquery::storage::v1::ReadSession_TableReadOptions*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.read_options)
}

// repeated .google.cloud.bigquery.storage.v1.ReadStream streams = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];
inline int ReadSession::_internal_streams_size() const {
  return _internal_streams().size();
}
inline int ReadSession::streams_size() const {
  return _internal_streams_size();
}
inline void ReadSession::clear_streams() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.streams_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::google::cloud::bigquery::storage::v1::ReadStream& ReadSession::streams(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.streams)
  return _internal_streams().Get(index);
}
inline ::google::cloud::bigquery::storage::v1::ReadStream* PROTOBUF_NONNULL ReadSession::mutable_streams(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.streams)
  return _internal_mutable_streams()->Mutable(index);
}
inline ::google::cloud::bigquery::storage::v1::ReadStream* PROTOBUF_NONNULL ReadSession::add_streams()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::cloud::bigquery::storage::v1::ReadStream* _add =
      _internal_mutable_streams()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:google.cloud.bigquery.storage.v1.ReadSession.streams)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::cloud::bigquery::storage::v1::ReadStream>& ReadSession::streams() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.cloud.bigquery.storage.v1.ReadSession.streams)
  return _internal_streams();
}
inline ::google::protobuf::RepeatedPtrField<::google::cloud::bigquery::storage::v1::ReadStream>* PROTOBUF_NONNULL
ReadSession::mutable_streams() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:google.cloud.bigquery.storage.v1.ReadSession.streams)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_streams();
}
inline const ::google::protobuf::RepeatedPtrField<::google::cloud::bigquery::storage::v1::ReadStream>&
ReadSession::_internal_streams() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.streams_;
}
inline ::google::protobuf::RepeatedPtrField<::google::cloud::bigquery::storage::v1::ReadStream>* PROTOBUF_NONNULL
ReadSession::_internal_mutable_streams() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.streams_;
}

// int64 estimated_total_bytes_scanned = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
inline void ReadSession::clear_estimated_total_bytes_scanned() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.estimated_total_bytes_scanned_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
}
inline ::int64_t ReadSession::estimated_total_bytes_scanned() const {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.estimated_total_bytes_scanned)
  return _internal_estimated_total_bytes_scanned();
}
inline void ReadSession::set_estimated_total_bytes_scanned(::int64_t value) {
  _internal_set_estimated_total_bytes_scanned(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.ReadSession.estimated_total_bytes_scanned)
}
inline ::int64_t ReadSession::_internal_estimated_total_bytes_scanned() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.estimated_total_bytes_scanned_;
}
inline void ReadSession::_internal_set_estimated_total_bytes_scanned(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.estimated_total_bytes_scanned_ = value;
}

// int64 estimated_row_count = 14 [(.google.api.field_behavior) = OUTPUT_ONLY];
inline void ReadSession::clear_estimated_row_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.estimated_row_count_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
}
inline ::int64_t ReadSession::estimated_row_count() const {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.estimated_row_count)
  return _internal_estimated_row_count();
}
inline void ReadSession::set_estimated_row_count(::int64_t value) {
  _internal_set_estimated_row_count(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.ReadSession.estimated_row_count)
}
inline ::int64_t ReadSession::_internal_estimated_row_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.estimated_row_count_;
}
inline void ReadSession::_internal_set_estimated_row_count(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.estimated_row_count_ = value;
}

// string trace_id = 13 [(.google.api.field_behavior) = OPTIONAL];
inline void ReadSession::clear_trace_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.trace_id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::std::string& ReadSession::trace_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadSession.trace_id)
  return _internal_trace_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ReadSession::set_trace_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.trace_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.ReadSession.trace_id)
}
inline ::std::string* PROTOBUF_NONNULL ReadSession::mutable_trace_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_trace_id();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadSession.trace_id)
  return _s;
}
inline const ::std::string& ReadSession::_internal_trace_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.trace_id_.Get();
}
inline void ReadSession::_internal_set_trace_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.trace_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ReadSession::_internal_mutable_trace_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.trace_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ReadSession::release_trace_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.ReadSession.trace_id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.trace_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.trace_id_.Set("", GetArena());
  }
  return released;
}
inline void ReadSession::set_allocated_trace_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  _impl_.trace_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.trace_id_.IsDefault()) {
    _impl_.trace_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.ReadSession.trace_id)
}

inline bool ReadSession::has_schema() const {
  return schema_case() != SCHEMA_NOT_SET;
}
inline void ReadSession::clear_has_schema() {
  _impl_._oneof_case_[0] = SCHEMA_NOT_SET;
}
inline ReadSession::SchemaCase ReadSession::schema_case() const {
  return ReadSession::SchemaCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// ReadStream

// string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];
inline void ReadStream::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& ReadStream::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.ReadStream.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ReadStream::set_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.ReadStream.name)
}
inline ::std::string* PROTOBUF_NONNULL ReadStream::mutable_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.ReadStream.name)
  return _s;
}
inline const ::std::string& ReadStream::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void ReadStream::_internal_set_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ReadStream::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ReadStream::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.ReadStream.name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.name_.Set("", GetArena());
  }
  return released;
}
inline void ReadStream::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) {
    _impl_.name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.ReadStream.name)
}

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

// WriteStream

// string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];
inline void WriteStream::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& WriteStream::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.WriteStream.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void WriteStream::set_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.WriteStream.name)
}
inline ::std::string* PROTOBUF_NONNULL WriteStream::mutable_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.WriteStream.name)
  return _s;
}
inline const ::std::string& WriteStream::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void WriteStream::_internal_set_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL WriteStream::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE WriteStream::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.WriteStream.name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.name_.Set("", GetArena());
  }
  return released;
}
inline void WriteStream::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) {
    _impl_.name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.WriteStream.name)
}

// .google.cloud.bigquery.storage.v1.WriteStream.Type type = 2 [(.google.api.field_behavior) = IMMUTABLE];
inline void WriteStream::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline ::google::cloud::bigquery::storage::v1::WriteStream_Type WriteStream::type() const {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.WriteStream.type)
  return _internal_type();
}
inline void WriteStream::set_type(::google::cloud::bigquery::storage::v1::WriteStream_Type value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.WriteStream.type)
}
inline ::google::cloud::bigquery::storage::v1::WriteStream_Type WriteStream::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::google::cloud::bigquery::storage::v1::WriteStream_Type>(_impl_.type_);
}
inline void WriteStream::_internal_set_type(::google::cloud::bigquery::storage::v1::WriteStream_Type value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
inline bool WriteStream::has_create_time() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.create_time_ != nullptr);
  return value;
}
inline const ::google::protobuf::Timestamp& WriteStream::_internal_create_time() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Timestamp* p = _impl_.create_time_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Timestamp>(&::google::protobuf::Timestamp_globals_);
}
inline const ::google::protobuf::Timestamp& WriteStream::create_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.WriteStream.create_time)
  return _internal_create_time();
}
inline void WriteStream::unsafe_arena_set_allocated_create_time(
    ::google::protobuf::Timestamp* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.create_time_);
  }
  _impl_.create_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.cloud.bigquery.storage.v1.WriteStream.create_time)
}
inline ::google::protobuf::Timestamp* PROTOBUF_NULLABLE WriteStream::release_create_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::google::protobuf::Timestamp* released = _impl_.create_time_;
  _impl_.create_time_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NULLABLE WriteStream::unsafe_arena_release_create_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.WriteStream.create_time)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::google::protobuf::Timestamp* temp = _impl_.create_time_;
  _impl_.create_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NONNULL WriteStream::_internal_mutable_create_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.create_time_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Timestamp>(GetArena());
    _impl_.create_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(p);
  }
  return _impl_.create_time_;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NONNULL WriteStream::mutable_create_time()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::google::protobuf::Timestamp* _msg = _internal_mutable_create_time();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.WriteStream.create_time)
  return _msg;
}
inline void WriteStream::set_allocated_create_time(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.create_time_);
  }

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

  _impl_.create_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.WriteStream.create_time)
}

// .google.protobuf.Timestamp commit_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
inline bool WriteStream::has_commit_time() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  PROTOBUF_ASSUME(!value || _impl_.commit_time_ != nullptr);
  return value;
}
inline const ::google::protobuf::Timestamp& WriteStream::_internal_commit_time() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Timestamp* p = _impl_.commit_time_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Timestamp>(&::google::protobuf::Timestamp_globals_);
}
inline const ::google::protobuf::Timestamp& WriteStream::commit_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.WriteStream.commit_time)
  return _internal_commit_time();
}
inline void WriteStream::unsafe_arena_set_allocated_commit_time(
    ::google::protobuf::Timestamp* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.commit_time_);
  }
  _impl_.commit_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.cloud.bigquery.storage.v1.WriteStream.commit_time)
}
inline ::google::protobuf::Timestamp* PROTOBUF_NULLABLE WriteStream::release_commit_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::google::protobuf::Timestamp* released = _impl_.commit_time_;
  _impl_.commit_time_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NULLABLE WriteStream::unsafe_arena_release_commit_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.WriteStream.commit_time)

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::google::protobuf::Timestamp* temp = _impl_.commit_time_;
  _impl_.commit_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NONNULL WriteStream::_internal_mutable_commit_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.commit_time_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Timestamp>(GetArena());
    _impl_.commit_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(p);
  }
  return _impl_.commit_time_;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NONNULL WriteStream::mutable_commit_time()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::google::protobuf::Timestamp* _msg = _internal_mutable_commit_time();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.WriteStream.commit_time)
  return _msg;
}
inline void WriteStream::set_allocated_commit_time(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.commit_time_);
  }

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

  _impl_.commit_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.WriteStream.commit_time)
}

// .google.cloud.bigquery.storage.v1.TableSchema table_schema = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
inline bool WriteStream::has_table_schema() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  PROTOBUF_ASSUME(!value || _impl_.table_schema_ != nullptr);
  return value;
}
inline const ::google::cloud::bigquery::storage::v1::TableSchema& WriteStream::_internal_table_schema() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::cloud::bigquery::storage::v1::TableSchema* p = _impl_.table_schema_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::cloud::bigquery::storage::v1::TableSchema>(&::google::cloud::bigquery::storage::v1::TableSchema_globals_);
}
inline const ::google::cloud::bigquery::storage::v1::TableSchema& WriteStream::table_schema() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.WriteStream.table_schema)
  return _internal_table_schema();
}
inline void WriteStream::unsafe_arena_set_allocated_table_schema(
    ::google::cloud::bigquery::storage::v1::TableSchema* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.table_schema_);
  }
  _impl_.table_schema_ = reinterpret_cast<::google::cloud::bigquery::storage::v1::TableSchema*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.cloud.bigquery.storage.v1.WriteStream.table_schema)
}
inline ::google::cloud::bigquery::storage::v1::TableSchema* PROTOBUF_NULLABLE WriteStream::release_table_schema() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::google::cloud::bigquery::storage::v1::TableSchema* released = _impl_.table_schema_;
  _impl_.table_schema_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::cloud::bigquery::storage::v1::TableSchema* PROTOBUF_NULLABLE WriteStream::unsafe_arena_release_table_schema() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.WriteStream.table_schema)

  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::google::cloud::bigquery::storage::v1::TableSchema* temp = _impl_.table_schema_;
  _impl_.table_schema_ = nullptr;
  return temp;
}
inline ::google::cloud::bigquery::storage::v1::TableSchema* PROTOBUF_NONNULL WriteStream::_internal_mutable_table_schema() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.table_schema_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::cloud::bigquery::storage::v1::TableSchema>(GetArena());
    _impl_.table_schema_ = reinterpret_cast<::google::cloud::bigquery::storage::v1::TableSchema*>(p);
  }
  return _impl_.table_schema_;
}
inline ::google::cloud::bigquery::storage::v1::TableSchema* PROTOBUF_NONNULL WriteStream::mutable_table_schema()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::google::cloud::bigquery::storage::v1::TableSchema* _msg = _internal_mutable_table_schema();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.WriteStream.table_schema)
  return _msg;
}
inline void WriteStream::set_allocated_table_schema(::google::cloud::bigquery::storage::v1::TableSchema* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.table_schema_);
  }

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

  _impl_.table_schema_ = reinterpret_cast<::google::cloud::bigquery::storage::v1::TableSchema*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.WriteStream.table_schema)
}

// .google.cloud.bigquery.storage.v1.WriteStream.WriteMode write_mode = 7 [(.google.api.field_behavior) = IMMUTABLE];
inline void WriteStream::clear_write_mode() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.write_mode_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline ::google::cloud::bigquery::storage::v1::WriteStream_WriteMode WriteStream::write_mode() const {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.WriteStream.write_mode)
  return _internal_write_mode();
}
inline void WriteStream::set_write_mode(::google::cloud::bigquery::storage::v1::WriteStream_WriteMode value) {
  _internal_set_write_mode(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.WriteStream.write_mode)
}
inline ::google::cloud::bigquery::storage::v1::WriteStream_WriteMode WriteStream::_internal_write_mode() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::google::cloud::bigquery::storage::v1::WriteStream_WriteMode>(_impl_.write_mode_);
}
inline void WriteStream::_internal_set_write_mode(::google::cloud::bigquery::storage::v1::WriteStream_WriteMode value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.write_mode_ = value;
}

// string location = 8 [(.google.api.field_behavior) = IMMUTABLE];
inline void WriteStream::clear_location() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.location_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& WriteStream::location() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.cloud.bigquery.storage.v1.WriteStream.location)
  return _internal_location();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void WriteStream::set_location(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.location_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.cloud.bigquery.storage.v1.WriteStream.location)
}
inline ::std::string* PROTOBUF_NONNULL WriteStream::mutable_location()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_location();
  // @@protoc_insertion_point(field_mutable:google.cloud.bigquery.storage.v1.WriteStream.location)
  return _s;
}
inline const ::std::string& WriteStream::_internal_location() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.location_.Get();
}
inline void WriteStream::_internal_set_location(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.location_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL WriteStream::_internal_mutable_location() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.location_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE WriteStream::release_location() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:google.cloud.bigquery.storage.v1.WriteStream.location)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.location_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.location_.Set("", GetArena());
  }
  return released;
}
inline void WriteStream::set_allocated_location(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.location_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.location_.IsDefault()) {
    _impl_.location_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.cloud.bigquery.storage.v1.WriteStream.location)
}

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

// @@protoc_insertion_point(namespace_scope)
}  // namespace v1
}  // namespace storage
}  // namespace bigquery
}  // namespace cloud
}  // namespace google


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::google::cloud::bigquery::storage::v1::WriteStream_Type> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::google::cloud::bigquery::storage::v1::WriteStream_Type>() {
  return ::google::cloud::bigquery::storage::v1::WriteStream_Type_descriptor();
}
template <>
struct is_proto_enum<::google::cloud::bigquery::storage::v1::WriteStream_WriteMode> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::google::cloud::bigquery::storage::v1::WriteStream_WriteMode>() {
  return ::google::cloud::bigquery::storage::v1::WriteStream_WriteMode_descriptor();
}
template <>
struct is_proto_enum<::google::cloud::bigquery::storage::v1::DataFormat> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::google::cloud::bigquery::storage::v1::DataFormat>() {
  return ::google::cloud::bigquery::storage::v1::DataFormat_descriptor();
}
template <>
struct is_proto_enum<::google::cloud::bigquery::storage::v1::WriteStreamView> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::google::cloud::bigquery::storage::v1::WriteStreamView>() {
  return ::google::cloud::bigquery::storage::v1::WriteStreamView_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"
// clang-format on

#endif  // google_2fcloud_2fbigquery_2fstorage_2fv1_2fstream_2eproto_2epb_2eh
