/*
 * Copyright 2024 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/firestore/v1/firestore.proto
// Protobuf C++ Version: 4.25.1

#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2ffirestore_2fv1_2ffirestore_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_google_2ffirestore_2fv1_2ffirestore_2eproto_2epb_2eh

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

#include "google/protobuf/port_def.inc"
#if PROTOBUF_VERSION < 4025000
#error "This file was generated by a newer version of protoc which is"
#error "incompatible with your Protocol Buffer headers. Please update"
#error "your headers."
#endif  // PROTOBUF_VERSION

#if 4025001 < PROTOBUF_MIN_PROTOC_VERSION
#error "This file was generated by an older version of protoc which is"
#error "incompatible with your Protocol Buffer headers. Please"
#error "regenerate this file with a newer version of protoc."
#endif  // PROTOBUF_MIN_PROTOC_VERSION
#include "google/protobuf/port_undef.inc"
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_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/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/map.h"  // IWYU pragma: export
#include "google/protobuf/map_entry.h"
#include "google/protobuf/map_field_inl.h"
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
#include "google/api/annotations.pb.h"
#include "google/firestore/v1/aggregation_result.pb.h"
#include "google/firestore/v1/common.pb.h"
#include "google/firestore/v1/document.pb.h"
#include "google/firestore/v1/query.pb.h"
#include "google/firestore/v1/write.pb.h"
#include "google/protobuf/empty.pb.h"
#include "google/protobuf/timestamp.pb.h"
#include "google/protobuf/wrappers.pb.h"
#include "google/rpc/status.pb.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_google_2ffirestore_2fv1_2ffirestore_2eproto

namespace google {
namespace protobuf {
namespace internal {
class AnyMetadata;
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto {
  static const ::uint32_t offsets[];
};
extern const ::google::protobuf::internal::DescriptorTable
    descriptor_table_google_2ffirestore_2fv1_2ffirestore_2eproto;
namespace google {
namespace firestore {
namespace v1 {
class BatchGetDocumentsRequest;
struct BatchGetDocumentsRequestDefaultTypeInternal;
extern BatchGetDocumentsRequestDefaultTypeInternal _BatchGetDocumentsRequest_default_instance_;
class BatchGetDocumentsResponse;
struct BatchGetDocumentsResponseDefaultTypeInternal;
extern BatchGetDocumentsResponseDefaultTypeInternal _BatchGetDocumentsResponse_default_instance_;
class BeginTransactionRequest;
struct BeginTransactionRequestDefaultTypeInternal;
extern BeginTransactionRequestDefaultTypeInternal _BeginTransactionRequest_default_instance_;
class BeginTransactionResponse;
struct BeginTransactionResponseDefaultTypeInternal;
extern BeginTransactionResponseDefaultTypeInternal _BeginTransactionResponse_default_instance_;
class CommitRequest;
struct CommitRequestDefaultTypeInternal;
extern CommitRequestDefaultTypeInternal _CommitRequest_default_instance_;
class CommitResponse;
struct CommitResponseDefaultTypeInternal;
extern CommitResponseDefaultTypeInternal _CommitResponse_default_instance_;
class CreateDocumentRequest;
struct CreateDocumentRequestDefaultTypeInternal;
extern CreateDocumentRequestDefaultTypeInternal _CreateDocumentRequest_default_instance_;
class DeleteDocumentRequest;
struct DeleteDocumentRequestDefaultTypeInternal;
extern DeleteDocumentRequestDefaultTypeInternal _DeleteDocumentRequest_default_instance_;
class GetDocumentRequest;
struct GetDocumentRequestDefaultTypeInternal;
extern GetDocumentRequestDefaultTypeInternal _GetDocumentRequest_default_instance_;
class ListCollectionIdsRequest;
struct ListCollectionIdsRequestDefaultTypeInternal;
extern ListCollectionIdsRequestDefaultTypeInternal _ListCollectionIdsRequest_default_instance_;
class ListCollectionIdsResponse;
struct ListCollectionIdsResponseDefaultTypeInternal;
extern ListCollectionIdsResponseDefaultTypeInternal _ListCollectionIdsResponse_default_instance_;
class ListDocumentsRequest;
struct ListDocumentsRequestDefaultTypeInternal;
extern ListDocumentsRequestDefaultTypeInternal _ListDocumentsRequest_default_instance_;
class ListDocumentsResponse;
struct ListDocumentsResponseDefaultTypeInternal;
extern ListDocumentsResponseDefaultTypeInternal _ListDocumentsResponse_default_instance_;
class ListenRequest;
struct ListenRequestDefaultTypeInternal;
extern ListenRequestDefaultTypeInternal _ListenRequest_default_instance_;
class ListenRequest_LabelsEntry_DoNotUse;
struct ListenRequest_LabelsEntry_DoNotUseDefaultTypeInternal;
extern ListenRequest_LabelsEntry_DoNotUseDefaultTypeInternal _ListenRequest_LabelsEntry_DoNotUse_default_instance_;
class ListenResponse;
struct ListenResponseDefaultTypeInternal;
extern ListenResponseDefaultTypeInternal _ListenResponse_default_instance_;
class RollbackRequest;
struct RollbackRequestDefaultTypeInternal;
extern RollbackRequestDefaultTypeInternal _RollbackRequest_default_instance_;
class RunAggregationQueryRequest;
struct RunAggregationQueryRequestDefaultTypeInternal;
extern RunAggregationQueryRequestDefaultTypeInternal _RunAggregationQueryRequest_default_instance_;
class RunAggregationQueryResponse;
struct RunAggregationQueryResponseDefaultTypeInternal;
extern RunAggregationQueryResponseDefaultTypeInternal _RunAggregationQueryResponse_default_instance_;
class RunQueryRequest;
struct RunQueryRequestDefaultTypeInternal;
extern RunQueryRequestDefaultTypeInternal _RunQueryRequest_default_instance_;
class RunQueryResponse;
struct RunQueryResponseDefaultTypeInternal;
extern RunQueryResponseDefaultTypeInternal _RunQueryResponse_default_instance_;
class Target;
struct TargetDefaultTypeInternal;
extern TargetDefaultTypeInternal _Target_default_instance_;
class TargetChange;
struct TargetChangeDefaultTypeInternal;
extern TargetChangeDefaultTypeInternal _TargetChange_default_instance_;
class Target_DocumentsTarget;
struct Target_DocumentsTargetDefaultTypeInternal;
extern Target_DocumentsTargetDefaultTypeInternal _Target_DocumentsTarget_default_instance_;
class Target_QueryTarget;
struct Target_QueryTargetDefaultTypeInternal;
extern Target_QueryTargetDefaultTypeInternal _Target_QueryTarget_default_instance_;
class UpdateDocumentRequest;
struct UpdateDocumentRequestDefaultTypeInternal;
extern UpdateDocumentRequestDefaultTypeInternal _UpdateDocumentRequest_default_instance_;
class WriteRequest;
struct WriteRequestDefaultTypeInternal;
extern WriteRequestDefaultTypeInternal _WriteRequest_default_instance_;
class WriteRequest_LabelsEntry_DoNotUse;
struct WriteRequest_LabelsEntry_DoNotUseDefaultTypeInternal;
extern WriteRequest_LabelsEntry_DoNotUseDefaultTypeInternal _WriteRequest_LabelsEntry_DoNotUse_default_instance_;
class WriteResponse;
struct WriteResponseDefaultTypeInternal;
extern WriteResponseDefaultTypeInternal _WriteResponse_default_instance_;
}  // namespace v1
}  // namespace firestore
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace google {
namespace firestore {
namespace v1 {
enum TargetChange_TargetChangeType : int {
  TargetChange_TargetChangeType_NO_CHANGE = 0,
  TargetChange_TargetChangeType_ADD = 1,
  TargetChange_TargetChangeType_REMOVE = 2,
  TargetChange_TargetChangeType_CURRENT = 3,
  TargetChange_TargetChangeType_RESET = 4,
  TargetChange_TargetChangeType_TargetChange_TargetChangeType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  TargetChange_TargetChangeType_TargetChange_TargetChangeType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

bool TargetChange_TargetChangeType_IsValid(int value);
extern const uint32_t TargetChange_TargetChangeType_internal_data_[];
constexpr TargetChange_TargetChangeType TargetChange_TargetChangeType_TargetChangeType_MIN = static_cast<TargetChange_TargetChangeType>(0);
constexpr TargetChange_TargetChangeType TargetChange_TargetChangeType_TargetChangeType_MAX = static_cast<TargetChange_TargetChangeType>(4);
constexpr int TargetChange_TargetChangeType_TargetChangeType_ARRAYSIZE = 4 + 1;
const ::google::protobuf::EnumDescriptor*
TargetChange_TargetChangeType_descriptor();
template <typename T>
const std::string& TargetChange_TargetChangeType_Name(T value) {
  static_assert(std::is_same<T, TargetChange_TargetChangeType>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to TargetChangeType_Name().");
  return TargetChange_TargetChangeType_Name(static_cast<TargetChange_TargetChangeType>(value));
}
template <>
inline const std::string& TargetChange_TargetChangeType_Name(TargetChange_TargetChangeType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<TargetChange_TargetChangeType_descriptor,
                                                 0, 4>(
      static_cast<int>(value));
}
inline bool TargetChange_TargetChangeType_Parse(absl::string_view name, TargetChange_TargetChangeType* value) {
  return ::google::protobuf::internal::ParseNamedEnum<TargetChange_TargetChangeType>(
      TargetChange_TargetChangeType_descriptor(), name, value);
}

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


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

class WriteRequest_LabelsEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<
          WriteRequest_LabelsEntry_DoNotUse, std::string, std::string,
          ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
          ::google::protobuf::internal::WireFormatLite::TYPE_STRING> {
 public:
  using SuperType = ::google::protobuf::internal::MapEntry<
      WriteRequest_LabelsEntry_DoNotUse, std::string, std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING>;
  WriteRequest_LabelsEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR WriteRequest_LabelsEntry_DoNotUse(
      ::google::protobuf::internal::ConstantInitialized);
  explicit WriteRequest_LabelsEntry_DoNotUse(::google::protobuf::Arena* arena);
  static const WriteRequest_LabelsEntry_DoNotUse* internal_default_instance() {
    return reinterpret_cast<const WriteRequest_LabelsEntry_DoNotUse*>(
        &_WriteRequest_LabelsEntry_DoNotUse_default_instance_);
  }
  static bool ValidateKey(std::string* s) {
    return ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(s->data(), static_cast<int>(s->size()), ::google::protobuf::internal::WireFormatLite::PARSE, "google.firestore.v1.WriteRequest.LabelsEntry.key");
 }
  static bool ValidateValue(std::string* s) {
    return ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(s->data(), static_cast<int>(s->size()), ::google::protobuf::internal::WireFormatLite::PARSE, "google.firestore.v1.WriteRequest.LabelsEntry.value");
 }
  ::google::protobuf::Metadata GetMetadata() const final;
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};
// -------------------------------------------------------------------

class Target_DocumentsTarget final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.Target.DocumentsTarget) */ {
 public:
  inline Target_DocumentsTarget() : Target_DocumentsTarget(nullptr) {}
  ~Target_DocumentsTarget() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR Target_DocumentsTarget(::google::protobuf::internal::ConstantInitialized);

  inline Target_DocumentsTarget(const Target_DocumentsTarget& from)
      : Target_DocumentsTarget(nullptr, from) {}
  Target_DocumentsTarget(Target_DocumentsTarget&& from) noexcept
    : Target_DocumentsTarget() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Target_DocumentsTarget& default_instance() {
    return *internal_default_instance();
  }
  static inline const Target_DocumentsTarget* internal_default_instance() {
    return reinterpret_cast<const Target_DocumentsTarget*>(
               &_Target_DocumentsTarget_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    23;

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

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

  Target_DocumentsTarget* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<Target_DocumentsTarget>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Target_DocumentsTarget& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const Target_DocumentsTarget& from) {
    Target_DocumentsTarget::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(Target_DocumentsTarget* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.Target.DocumentsTarget";
  }
  protected:
  explicit Target_DocumentsTarget(::google::protobuf::Arena* arena);
  Target_DocumentsTarget(::google::protobuf::Arena* arena, const Target_DocumentsTarget& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kDocumentsFieldNumber = 2,
  };
  // repeated string documents = 2;
  int documents_size() const;
  private:
  int _internal_documents_size() const;

  public:
  void clear_documents() ;
  const std::string& documents(int index) const;
  std::string* mutable_documents(int index);
  void set_documents(int index, const std::string& value);
  void set_documents(int index, std::string&& value);
  void set_documents(int index, const char* value);
  void set_documents(int index, const char* value, std::size_t size);
  void set_documents(int index, absl::string_view value);
  std::string* add_documents();
  void add_documents(const std::string& value);
  void add_documents(std::string&& value);
  void add_documents(const char* value);
  void add_documents(const char* value, std::size_t size);
  void add_documents(absl::string_view value);
  const ::google::protobuf::RepeatedPtrField<std::string>& documents() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_documents();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_documents() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_documents();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.Target.DocumentsTarget)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 0,
      60, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::RepeatedPtrField<std::string> documents_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class RollbackRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.RollbackRequest) */ {
 public:
  inline RollbackRequest() : RollbackRequest(nullptr) {}
  ~RollbackRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR RollbackRequest(::google::protobuf::internal::ConstantInitialized);

  inline RollbackRequest(const RollbackRequest& from)
      : RollbackRequest(nullptr, from) {}
  RollbackRequest(RollbackRequest&& from) noexcept
    : RollbackRequest() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const RollbackRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const RollbackRequest* internal_default_instance() {
    return reinterpret_cast<const RollbackRequest*>(
               &_RollbackRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    12;

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

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

  RollbackRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<RollbackRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RollbackRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const RollbackRequest& from) {
    RollbackRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(RollbackRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.RollbackRequest";
  }
  protected:
  explicit RollbackRequest(::google::protobuf::Arena* arena);
  RollbackRequest(::google::protobuf::Arena* arena, const RollbackRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kDatabaseFieldNumber = 1,
    kTransactionFieldNumber = 2,
  };
  // string database = 1;
  void clear_database() ;
  const std::string& database() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_database(Arg_&& arg, Args_... args);
  std::string* mutable_database();
  PROTOBUF_NODISCARD std::string* release_database();
  void set_allocated_database(std::string* value);

  private:
  const std::string& _internal_database() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_database(
      const std::string& value);
  std::string* _internal_mutable_database();

  public:
  // bytes transaction = 2;
  void clear_transaction() ;
  const std::string& transaction() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_transaction(Arg_&& arg, Args_... args);
  std::string* mutable_transaction();
  PROTOBUF_NODISCARD std::string* release_transaction();
  void set_allocated_transaction(std::string* value);

  private:
  const std::string& _internal_transaction() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_transaction(
      const std::string& value);
  std::string* _internal_mutable_transaction();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.RollbackRequest)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 0,
      52, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::ArenaStringPtr database_;
    ::google::protobuf::internal::ArenaStringPtr transaction_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class ListenRequest_LabelsEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<
          ListenRequest_LabelsEntry_DoNotUse, std::string, std::string,
          ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
          ::google::protobuf::internal::WireFormatLite::TYPE_STRING> {
 public:
  using SuperType = ::google::protobuf::internal::MapEntry<
      ListenRequest_LabelsEntry_DoNotUse, std::string, std::string,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING>;
  ListenRequest_LabelsEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ListenRequest_LabelsEntry_DoNotUse(
      ::google::protobuf::internal::ConstantInitialized);
  explicit ListenRequest_LabelsEntry_DoNotUse(::google::protobuf::Arena* arena);
  static const ListenRequest_LabelsEntry_DoNotUse* internal_default_instance() {
    return reinterpret_cast<const ListenRequest_LabelsEntry_DoNotUse*>(
        &_ListenRequest_LabelsEntry_DoNotUse_default_instance_);
  }
  static bool ValidateKey(std::string* s) {
    return ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(s->data(), static_cast<int>(s->size()), ::google::protobuf::internal::WireFormatLite::PARSE, "google.firestore.v1.ListenRequest.LabelsEntry.key");
 }
  static bool ValidateValue(std::string* s) {
    return ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(s->data(), static_cast<int>(s->size()), ::google::protobuf::internal::WireFormatLite::PARSE, "google.firestore.v1.ListenRequest.LabelsEntry.value");
 }
  ::google::protobuf::Metadata GetMetadata() const final;
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};
// -------------------------------------------------------------------

class ListCollectionIdsResponse final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.ListCollectionIdsResponse) */ {
 public:
  inline ListCollectionIdsResponse() : ListCollectionIdsResponse(nullptr) {}
  ~ListCollectionIdsResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR ListCollectionIdsResponse(::google::protobuf::internal::ConstantInitialized);

  inline ListCollectionIdsResponse(const ListCollectionIdsResponse& from)
      : ListCollectionIdsResponse(nullptr, from) {}
  ListCollectionIdsResponse(ListCollectionIdsResponse&& from) noexcept
    : ListCollectionIdsResponse() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ListCollectionIdsResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const ListCollectionIdsResponse* internal_default_instance() {
    return reinterpret_cast<const ListCollectionIdsResponse*>(
               &_ListCollectionIdsResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    28;

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

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

  ListCollectionIdsResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ListCollectionIdsResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ListCollectionIdsResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const ListCollectionIdsResponse& from) {
    ListCollectionIdsResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(ListCollectionIdsResponse* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.ListCollectionIdsResponse";
  }
  protected:
  explicit ListCollectionIdsResponse(::google::protobuf::Arena* arena);
  ListCollectionIdsResponse(::google::protobuf::Arena* arena, const ListCollectionIdsResponse& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kCollectionIdsFieldNumber = 1,
    kNextPageTokenFieldNumber = 2,
  };
  // repeated string collection_ids = 1;
  int collection_ids_size() const;
  private:
  int _internal_collection_ids_size() const;

  public:
  void clear_collection_ids() ;
  const std::string& collection_ids(int index) const;
  std::string* mutable_collection_ids(int index);
  void set_collection_ids(int index, const std::string& value);
  void set_collection_ids(int index, std::string&& value);
  void set_collection_ids(int index, const char* value);
  void set_collection_ids(int index, const char* value, std::size_t size);
  void set_collection_ids(int index, absl::string_view value);
  std::string* add_collection_ids();
  void add_collection_ids(const std::string& value);
  void add_collection_ids(std::string&& value);
  void add_collection_ids(const char* value);
  void add_collection_ids(const char* value, std::size_t size);
  void add_collection_ids(absl::string_view value);
  const ::google::protobuf::RepeatedPtrField<std::string>& collection_ids() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_collection_ids();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_collection_ids() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_collection_ids();

  public:
  // string next_page_token = 2;
  void clear_next_page_token() ;
  const std::string& next_page_token() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_next_page_token(Arg_&& arg, Args_... args);
  std::string* mutable_next_page_token();
  PROTOBUF_NODISCARD std::string* release_next_page_token();
  void set_allocated_next_page_token(std::string* value);

  private:
  const std::string& _internal_next_page_token() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_next_page_token(
      const std::string& value);
  std::string* _internal_mutable_next_page_token();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.ListCollectionIdsResponse)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 0,
      83, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::RepeatedPtrField<std::string> collection_ids_;
    ::google::protobuf::internal::ArenaStringPtr next_page_token_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class ListCollectionIdsRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.ListCollectionIdsRequest) */ {
 public:
  inline ListCollectionIdsRequest() : ListCollectionIdsRequest(nullptr) {}
  ~ListCollectionIdsRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR ListCollectionIdsRequest(::google::protobuf::internal::ConstantInitialized);

  inline ListCollectionIdsRequest(const ListCollectionIdsRequest& from)
      : ListCollectionIdsRequest(nullptr, from) {}
  ListCollectionIdsRequest(ListCollectionIdsRequest&& from) noexcept
    : ListCollectionIdsRequest() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ListCollectionIdsRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const ListCollectionIdsRequest* internal_default_instance() {
    return reinterpret_cast<const ListCollectionIdsRequest*>(
               &_ListCollectionIdsRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    27;

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

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

  ListCollectionIdsRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ListCollectionIdsRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ListCollectionIdsRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const ListCollectionIdsRequest& from) {
    ListCollectionIdsRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(ListCollectionIdsRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.ListCollectionIdsRequest";
  }
  protected:
  explicit ListCollectionIdsRequest(::google::protobuf::Arena* arena);
  ListCollectionIdsRequest(::google::protobuf::Arena* arena, const ListCollectionIdsRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kParentFieldNumber = 1,
    kPageTokenFieldNumber = 3,
    kPageSizeFieldNumber = 2,
  };
  // string parent = 1;
  void clear_parent() ;
  const std::string& parent() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_parent(Arg_&& arg, Args_... args);
  std::string* mutable_parent();
  PROTOBUF_NODISCARD std::string* release_parent();
  void set_allocated_parent(std::string* value);

  private:
  const std::string& _internal_parent() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_parent(
      const std::string& value);
  std::string* _internal_mutable_parent();

  public:
  // string page_token = 3;
  void clear_page_token() ;
  const std::string& page_token() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_page_token(Arg_&& arg, Args_... args);
  std::string* mutable_page_token();
  PROTOBUF_NODISCARD std::string* release_page_token();
  void set_allocated_page_token(std::string* value);

  private:
  const std::string& _internal_page_token() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_page_token(
      const std::string& value);
  std::string* _internal_mutable_page_token();

  public:
  // int32 page_size = 2;
  void clear_page_size() ;
  ::int32_t page_size() const;
  void set_page_size(::int32_t value);

  private:
  ::int32_t _internal_page_size() const;
  void _internal_set_page_size(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.ListCollectionIdsRequest)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 0,
      69, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::ArenaStringPtr parent_;
    ::google::protobuf::internal::ArenaStringPtr page_token_;
    ::int32_t page_size_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class BeginTransactionResponse final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.BeginTransactionResponse) */ {
 public:
  inline BeginTransactionResponse() : BeginTransactionResponse(nullptr) {}
  ~BeginTransactionResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR BeginTransactionResponse(::google::protobuf::internal::ConstantInitialized);

  inline BeginTransactionResponse(const BeginTransactionResponse& from)
      : BeginTransactionResponse(nullptr, from) {}
  BeginTransactionResponse(BeginTransactionResponse&& from) noexcept
    : BeginTransactionResponse() {
    *this = ::std::move(from);
  }

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

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

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

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

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

  BeginTransactionResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<BeginTransactionResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BeginTransactionResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const BeginTransactionResponse& from) {
    BeginTransactionResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(BeginTransactionResponse* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.BeginTransactionResponse";
  }
  protected:
  explicit BeginTransactionResponse(::google::protobuf::Arena* arena);
  BeginTransactionResponse(::google::protobuf::Arena* arena, const BeginTransactionResponse& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kTransactionFieldNumber = 1,
  };
  // bytes transaction = 1;
  void clear_transaction() ;
  const std::string& transaction() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_transaction(Arg_&& arg, Args_... args);
  std::string* mutable_transaction();
  PROTOBUF_NODISCARD std::string* release_transaction();
  void set_allocated_transaction(std::string* value);

  private:
  const std::string& _internal_transaction() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_transaction(
      const std::string& value);
  std::string* _internal_mutable_transaction();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.BeginTransactionResponse)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 0,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::ArenaStringPtr transaction_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class ListDocumentsRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.ListDocumentsRequest) */ {
 public:
  inline ListDocumentsRequest() : ListDocumentsRequest(nullptr) {}
  ~ListDocumentsRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR ListDocumentsRequest(::google::protobuf::internal::ConstantInitialized);

  inline ListDocumentsRequest(const ListDocumentsRequest& from)
      : ListDocumentsRequest(nullptr, from) {}
  ListDocumentsRequest(ListDocumentsRequest&& from) noexcept
    : ListDocumentsRequest() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ListDocumentsRequest& default_instance() {
    return *internal_default_instance();
  }
  enum ConsistencySelectorCase {
    kTransaction = 8,
    kReadTime = 10,
    CONSISTENCY_SELECTOR_NOT_SET = 0,
  };

  static inline const ListDocumentsRequest* internal_default_instance() {
    return reinterpret_cast<const ListDocumentsRequest*>(
               &_ListDocumentsRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

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

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

  ListDocumentsRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ListDocumentsRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ListDocumentsRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const ListDocumentsRequest& from) {
    ListDocumentsRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(ListDocumentsRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.ListDocumentsRequest";
  }
  protected:
  explicit ListDocumentsRequest(::google::protobuf::Arena* arena);
  ListDocumentsRequest(::google::protobuf::Arena* arena, const ListDocumentsRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kParentFieldNumber = 1,
    kCollectionIdFieldNumber = 2,
    kPageTokenFieldNumber = 4,
    kOrderByFieldNumber = 6,
    kMaskFieldNumber = 7,
    kPageSizeFieldNumber = 3,
    kShowMissingFieldNumber = 12,
    kTransactionFieldNumber = 8,
    kReadTimeFieldNumber = 10,
  };
  // string parent = 1;
  void clear_parent() ;
  const std::string& parent() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_parent(Arg_&& arg, Args_... args);
  std::string* mutable_parent();
  PROTOBUF_NODISCARD std::string* release_parent();
  void set_allocated_parent(std::string* value);

  private:
  const std::string& _internal_parent() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_parent(
      const std::string& value);
  std::string* _internal_mutable_parent();

  public:
  // string collection_id = 2;
  void clear_collection_id() ;
  const std::string& collection_id() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_collection_id(Arg_&& arg, Args_... args);
  std::string* mutable_collection_id();
  PROTOBUF_NODISCARD std::string* release_collection_id();
  void set_allocated_collection_id(std::string* value);

  private:
  const std::string& _internal_collection_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_collection_id(
      const std::string& value);
  std::string* _internal_mutable_collection_id();

  public:
  // string page_token = 4;
  void clear_page_token() ;
  const std::string& page_token() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_page_token(Arg_&& arg, Args_... args);
  std::string* mutable_page_token();
  PROTOBUF_NODISCARD std::string* release_page_token();
  void set_allocated_page_token(std::string* value);

  private:
  const std::string& _internal_page_token() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_page_token(
      const std::string& value);
  std::string* _internal_mutable_page_token();

  public:
  // string order_by = 6;
  void clear_order_by() ;
  const std::string& order_by() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_order_by(Arg_&& arg, Args_... args);
  std::string* mutable_order_by();
  PROTOBUF_NODISCARD std::string* release_order_by();
  void set_allocated_order_by(std::string* value);

  private:
  const std::string& _internal_order_by() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_order_by(
      const std::string& value);
  std::string* _internal_mutable_order_by();

  public:
  // .google.firestore.v1.DocumentMask mask = 7;
  bool has_mask() const;
  void clear_mask() ;
  const ::google::firestore::v1::DocumentMask& mask() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::DocumentMask* release_mask();
  ::google::firestore::v1::DocumentMask* mutable_mask();
  void set_allocated_mask(::google::firestore::v1::DocumentMask* value);
  void unsafe_arena_set_allocated_mask(::google::firestore::v1::DocumentMask* value);
  ::google::firestore::v1::DocumentMask* unsafe_arena_release_mask();

  private:
  const ::google::firestore::v1::DocumentMask& _internal_mask() const;
  ::google::firestore::v1::DocumentMask* _internal_mutable_mask();

  public:
  // int32 page_size = 3;
  void clear_page_size() ;
  ::int32_t page_size() const;
  void set_page_size(::int32_t value);

  private:
  ::int32_t _internal_page_size() const;
  void _internal_set_page_size(::int32_t value);

  public:
  // bool show_missing = 12;
  void clear_show_missing() ;
  bool show_missing() const;
  void set_show_missing(bool value);

  private:
  bool _internal_show_missing() const;
  void _internal_set_show_missing(bool value);

  public:
  // bytes transaction = 8;
  bool has_transaction() const;
  void clear_transaction() ;
  const std::string& transaction() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_transaction(Arg_&& arg, Args_... args);
  std::string* mutable_transaction();
  PROTOBUF_NODISCARD std::string* release_transaction();
  void set_allocated_transaction(std::string* value);

  private:
  const std::string& _internal_transaction() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_transaction(
      const std::string& value);
  std::string* _internal_mutable_transaction();

  public:
  // .google.protobuf.Timestamp read_time = 10;
  bool has_read_time() const;
  private:
  bool _internal_has_read_time() const;

  public:
  void clear_read_time() ;
  const ::google::protobuf::Timestamp& read_time() const;
  PROTOBUF_NODISCARD ::google::protobuf::Timestamp* release_read_time();
  ::google::protobuf::Timestamp* mutable_read_time();
  void set_allocated_read_time(::google::protobuf::Timestamp* value);
  void unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value);
  ::google::protobuf::Timestamp* unsafe_arena_release_read_time();

  private:
  const ::google::protobuf::Timestamp& _internal_read_time() const;
  ::google::protobuf::Timestamp* _internal_mutable_read_time();

  public:
  void clear_consistency_selector();
  ConsistencySelectorCase consistency_selector_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.ListDocumentsRequest)
 private:
  class _Internal;
  void set_has_transaction();
  void set_has_read_time();

  inline bool has_consistency_selector() const;
  inline void clear_has_consistency_selector();

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      4, 9, 2,
      94, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr parent_;
    ::google::protobuf::internal::ArenaStringPtr collection_id_;
    ::google::protobuf::internal::ArenaStringPtr page_token_;
    ::google::protobuf::internal::ArenaStringPtr order_by_;
    ::google::firestore::v1::DocumentMask* mask_;
    ::int32_t page_size_;
    bool show_missing_;
    union ConsistencySelectorUnion {
      constexpr ConsistencySelectorUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::internal::ArenaStringPtr transaction_;
      ::google::protobuf::Timestamp* read_time_;
    } consistency_selector_;
    ::uint32_t _oneof_case_[1];

    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class GetDocumentRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.GetDocumentRequest) */ {
 public:
  inline GetDocumentRequest() : GetDocumentRequest(nullptr) {}
  ~GetDocumentRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR GetDocumentRequest(::google::protobuf::internal::ConstantInitialized);

  inline GetDocumentRequest(const GetDocumentRequest& from)
      : GetDocumentRequest(nullptr, from) {}
  GetDocumentRequest(GetDocumentRequest&& from) noexcept
    : GetDocumentRequest() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GetDocumentRequest& default_instance() {
    return *internal_default_instance();
  }
  enum ConsistencySelectorCase {
    kTransaction = 3,
    kReadTime = 5,
    CONSISTENCY_SELECTOR_NOT_SET = 0,
  };

  static inline const GetDocumentRequest* internal_default_instance() {
    return reinterpret_cast<const GetDocumentRequest*>(
               &_GetDocumentRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

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

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

  GetDocumentRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<GetDocumentRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetDocumentRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const GetDocumentRequest& from) {
    GetDocumentRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(GetDocumentRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.GetDocumentRequest";
  }
  protected:
  explicit GetDocumentRequest(::google::protobuf::Arena* arena);
  GetDocumentRequest(::google::protobuf::Arena* arena, const GetDocumentRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kNameFieldNumber = 1,
    kMaskFieldNumber = 2,
    kTransactionFieldNumber = 3,
    kReadTimeFieldNumber = 5,
  };
  // string name = 1;
  void clear_name() ;
  const std::string& name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* value);

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

  public:
  // .google.firestore.v1.DocumentMask mask = 2;
  bool has_mask() const;
  void clear_mask() ;
  const ::google::firestore::v1::DocumentMask& mask() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::DocumentMask* release_mask();
  ::google::firestore::v1::DocumentMask* mutable_mask();
  void set_allocated_mask(::google::firestore::v1::DocumentMask* value);
  void unsafe_arena_set_allocated_mask(::google::firestore::v1::DocumentMask* value);
  ::google::firestore::v1::DocumentMask* unsafe_arena_release_mask();

  private:
  const ::google::firestore::v1::DocumentMask& _internal_mask() const;
  ::google::firestore::v1::DocumentMask* _internal_mutable_mask();

  public:
  // bytes transaction = 3;
  bool has_transaction() const;
  void clear_transaction() ;
  const std::string& transaction() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_transaction(Arg_&& arg, Args_... args);
  std::string* mutable_transaction();
  PROTOBUF_NODISCARD std::string* release_transaction();
  void set_allocated_transaction(std::string* value);

  private:
  const std::string& _internal_transaction() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_transaction(
      const std::string& value);
  std::string* _internal_mutable_transaction();

  public:
  // .google.protobuf.Timestamp read_time = 5;
  bool has_read_time() const;
  private:
  bool _internal_has_read_time() const;

  public:
  void clear_read_time() ;
  const ::google::protobuf::Timestamp& read_time() const;
  PROTOBUF_NODISCARD ::google::protobuf::Timestamp* release_read_time();
  ::google::protobuf::Timestamp* mutable_read_time();
  void set_allocated_read_time(::google::protobuf::Timestamp* value);
  void unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value);
  ::google::protobuf::Timestamp* unsafe_arena_release_read_time();

  private:
  const ::google::protobuf::Timestamp& _internal_read_time() const;
  ::google::protobuf::Timestamp* _internal_mutable_read_time();

  public:
  void clear_consistency_selector();
  ConsistencySelectorCase consistency_selector_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.GetDocumentRequest)
 private:
  class _Internal;
  void set_has_transaction();
  void set_has_read_time();

  inline bool has_consistency_selector() const;
  inline void clear_has_consistency_selector();

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 4, 2,
      51, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::firestore::v1::DocumentMask* mask_;
    union ConsistencySelectorUnion {
      constexpr ConsistencySelectorUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::internal::ArenaStringPtr transaction_;
      ::google::protobuf::Timestamp* read_time_;
    } consistency_selector_;
    ::uint32_t _oneof_case_[1];

    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class TargetChange final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.TargetChange) */ {
 public:
  inline TargetChange() : TargetChange(nullptr) {}
  ~TargetChange() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR TargetChange(::google::protobuf::internal::ConstantInitialized);

  inline TargetChange(const TargetChange& from)
      : TargetChange(nullptr, from) {}
  TargetChange(TargetChange&& from) noexcept
    : TargetChange() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TargetChange& default_instance() {
    return *internal_default_instance();
  }
  static inline const TargetChange* internal_default_instance() {
    return reinterpret_cast<const TargetChange*>(
               &_TargetChange_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    26;

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

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

  TargetChange* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TargetChange>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TargetChange& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const TargetChange& from) {
    TargetChange::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(TargetChange* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.TargetChange";
  }
  protected:
  explicit TargetChange(::google::protobuf::Arena* arena);
  TargetChange(::google::protobuf::Arena* arena, const TargetChange& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

  using TargetChangeType = TargetChange_TargetChangeType;
  static constexpr TargetChangeType NO_CHANGE = TargetChange_TargetChangeType_NO_CHANGE;
  static constexpr TargetChangeType ADD = TargetChange_TargetChangeType_ADD;
  static constexpr TargetChangeType REMOVE = TargetChange_TargetChangeType_REMOVE;
  static constexpr TargetChangeType CURRENT = TargetChange_TargetChangeType_CURRENT;
  static constexpr TargetChangeType RESET = TargetChange_TargetChangeType_RESET;
  static inline bool TargetChangeType_IsValid(int value) {
    return TargetChange_TargetChangeType_IsValid(value);
  }
  static constexpr TargetChangeType TargetChangeType_MIN = TargetChange_TargetChangeType_TargetChangeType_MIN;
  static constexpr TargetChangeType TargetChangeType_MAX = TargetChange_TargetChangeType_TargetChangeType_MAX;
  static constexpr int TargetChangeType_ARRAYSIZE = TargetChange_TargetChangeType_TargetChangeType_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* TargetChangeType_descriptor() {
    return TargetChange_TargetChangeType_descriptor();
  }
  template <typename T>
  static inline const std::string& TargetChangeType_Name(T value) {
    return TargetChange_TargetChangeType_Name(value);
  }
  static inline bool TargetChangeType_Parse(absl::string_view name, TargetChangeType* value) {
    return TargetChange_TargetChangeType_Parse(name, value);
  }

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

  enum : int {
    kTargetIdsFieldNumber = 2,
    kResumeTokenFieldNumber = 4,
    kCauseFieldNumber = 3,
    kReadTimeFieldNumber = 6,
    kTargetChangeTypeFieldNumber = 1,
  };
  // repeated int32 target_ids = 2;
  int target_ids_size() const;
  private:
  int _internal_target_ids_size() const;

  public:
  void clear_target_ids() ;
  ::int32_t target_ids(int index) const;
  void set_target_ids(int index, ::int32_t value);
  void add_target_ids(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& target_ids() const;
  ::google::protobuf::RepeatedField<::int32_t>* mutable_target_ids();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_target_ids() const;
  ::google::protobuf::RepeatedField<::int32_t>* _internal_mutable_target_ids();

  public:
  // bytes resume_token = 4;
  void clear_resume_token() ;
  const std::string& resume_token() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_resume_token(Arg_&& arg, Args_... args);
  std::string* mutable_resume_token();
  PROTOBUF_NODISCARD std::string* release_resume_token();
  void set_allocated_resume_token(std::string* value);

  private:
  const std::string& _internal_resume_token() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_resume_token(
      const std::string& value);
  std::string* _internal_mutable_resume_token();

  public:
  // .google.rpc.Status cause = 3;
  bool has_cause() const;
  void clear_cause() ;
  const ::google::rpc::Status& cause() const;
  PROTOBUF_NODISCARD ::google::rpc::Status* release_cause();
  ::google::rpc::Status* mutable_cause();
  void set_allocated_cause(::google::rpc::Status* value);
  void unsafe_arena_set_allocated_cause(::google::rpc::Status* value);
  ::google::rpc::Status* unsafe_arena_release_cause();

  private:
  const ::google::rpc::Status& _internal_cause() const;
  ::google::rpc::Status* _internal_mutable_cause();

  public:
  // .google.protobuf.Timestamp read_time = 6;
  bool has_read_time() const;
  void clear_read_time() ;
  const ::google::protobuf::Timestamp& read_time() const;
  PROTOBUF_NODISCARD ::google::protobuf::Timestamp* release_read_time();
  ::google::protobuf::Timestamp* mutable_read_time();
  void set_allocated_read_time(::google::protobuf::Timestamp* value);
  void unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value);
  ::google::protobuf::Timestamp* unsafe_arena_release_read_time();

  private:
  const ::google::protobuf::Timestamp& _internal_read_time() const;
  ::google::protobuf::Timestamp* _internal_mutable_read_time();

  public:
  // .google.firestore.v1.TargetChange.TargetChangeType target_change_type = 1;
  void clear_target_change_type() ;
  ::google::firestore::v1::TargetChange_TargetChangeType target_change_type() const;
  void set_target_change_type(::google::firestore::v1::TargetChange_TargetChangeType value);

  private:
  ::google::firestore::v1::TargetChange_TargetChangeType _internal_target_change_type() const;
  void _internal_set_target_change_type(::google::firestore::v1::TargetChange_TargetChangeType value);

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.TargetChange)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 5, 2,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int32_t> target_ids_;
    mutable ::google::protobuf::internal::CachedSize _target_ids_cached_byte_size_;
    ::google::protobuf::internal::ArenaStringPtr resume_token_;
    ::google::rpc::Status* cause_;
    ::google::protobuf::Timestamp* read_time_;
    int target_change_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class DeleteDocumentRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.DeleteDocumentRequest) */ {
 public:
  inline DeleteDocumentRequest() : DeleteDocumentRequest(nullptr) {}
  ~DeleteDocumentRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR DeleteDocumentRequest(::google::protobuf::internal::ConstantInitialized);

  inline DeleteDocumentRequest(const DeleteDocumentRequest& from)
      : DeleteDocumentRequest(nullptr, from) {}
  DeleteDocumentRequest(DeleteDocumentRequest&& from) noexcept
    : DeleteDocumentRequest() {
    *this = ::std::move(from);
  }

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

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

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

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

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

  DeleteDocumentRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<DeleteDocumentRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const DeleteDocumentRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const DeleteDocumentRequest& from) {
    DeleteDocumentRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(DeleteDocumentRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.DeleteDocumentRequest";
  }
  protected:
  explicit DeleteDocumentRequest(::google::protobuf::Arena* arena);
  DeleteDocumentRequest(::google::protobuf::Arena* arena, const DeleteDocumentRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kNameFieldNumber = 1,
    kCurrentDocumentFieldNumber = 2,
  };
  // string name = 1;
  void clear_name() ;
  const std::string& name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* value);

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

  public:
  // .google.firestore.v1.Precondition current_document = 2;
  bool has_current_document() const;
  void clear_current_document() ;
  const ::google::firestore::v1::Precondition& current_document() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::Precondition* release_current_document();
  ::google::firestore::v1::Precondition* mutable_current_document();
  void set_allocated_current_document(::google::firestore::v1::Precondition* value);
  void unsafe_arena_set_allocated_current_document(::google::firestore::v1::Precondition* value);
  ::google::firestore::v1::Precondition* unsafe_arena_release_current_document();

  private:
  const ::google::firestore::v1::Precondition& _internal_current_document() const;
  ::google::firestore::v1::Precondition* _internal_mutable_current_document();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.DeleteDocumentRequest)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 1,
      54, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::firestore::v1::Precondition* current_document_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class WriteResponse final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.WriteResponse) */ {
 public:
  inline WriteResponse() : WriteResponse(nullptr) {}
  ~WriteResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR WriteResponse(::google::protobuf::internal::ConstantInitialized);

  inline WriteResponse(const WriteResponse& from)
      : WriteResponse(nullptr, from) {}
  WriteResponse(WriteResponse&& from) noexcept
    : WriteResponse() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const WriteResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const WriteResponse* internal_default_instance() {
    return reinterpret_cast<const WriteResponse*>(
               &_WriteResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    19;

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

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

  WriteResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<WriteResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const WriteResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const WriteResponse& from) {
    WriteResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(WriteResponse* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.WriteResponse";
  }
  protected:
  explicit WriteResponse(::google::protobuf::Arena* arena);
  WriteResponse(::google::protobuf::Arena* arena, const WriteResponse& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kWriteResultsFieldNumber = 3,
    kStreamIdFieldNumber = 1,
    kStreamTokenFieldNumber = 2,
    kCommitTimeFieldNumber = 4,
  };
  // repeated .google.firestore.v1.WriteResult write_results = 3;
  int write_results_size() const;
  private:
  int _internal_write_results_size() const;

  public:
  void clear_write_results() ;
  ::google::firestore::v1::WriteResult* mutable_write_results(int index);
  ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::WriteResult >*
      mutable_write_results();
  private:
  const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::WriteResult>& _internal_write_results() const;
  ::google::protobuf::RepeatedPtrField<::google::firestore::v1::WriteResult>* _internal_mutable_write_results();
  public:
  const ::google::firestore::v1::WriteResult& write_results(int index) const;
  ::google::firestore::v1::WriteResult* add_write_results();
  const ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::WriteResult >&
      write_results() const;
  // string stream_id = 1;
  void clear_stream_id() ;
  const std::string& stream_id() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_stream_id(Arg_&& arg, Args_... args);
  std::string* mutable_stream_id();
  PROTOBUF_NODISCARD std::string* release_stream_id();
  void set_allocated_stream_id(std::string* value);

  private:
  const std::string& _internal_stream_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_stream_id(
      const std::string& value);
  std::string* _internal_mutable_stream_id();

  public:
  // bytes stream_token = 2;
  void clear_stream_token() ;
  const std::string& stream_token() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_stream_token(Arg_&& arg, Args_... args);
  std::string* mutable_stream_token();
  PROTOBUF_NODISCARD std::string* release_stream_token();
  void set_allocated_stream_token(std::string* value);

  private:
  const std::string& _internal_stream_token() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_stream_token(
      const std::string& value);
  std::string* _internal_mutable_stream_token();

  public:
  // .google.protobuf.Timestamp commit_time = 4;
  bool has_commit_time() const;
  void clear_commit_time() ;
  const ::google::protobuf::Timestamp& commit_time() const;
  PROTOBUF_NODISCARD ::google::protobuf::Timestamp* release_commit_time();
  ::google::protobuf::Timestamp* mutable_commit_time();
  void set_allocated_commit_time(::google::protobuf::Timestamp* value);
  void unsafe_arena_set_allocated_commit_time(::google::protobuf::Timestamp* value);
  ::google::protobuf::Timestamp* unsafe_arena_release_commit_time();

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

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.WriteResponse)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 4, 2,
      51, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::WriteResult > write_results_;
    ::google::protobuf::internal::ArenaStringPtr stream_id_;
    ::google::protobuf::internal::ArenaStringPtr stream_token_;
    ::google::protobuf::Timestamp* commit_time_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class CommitResponse final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.CommitResponse) */ {
 public:
  inline CommitResponse() : CommitResponse(nullptr) {}
  ~CommitResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR CommitResponse(::google::protobuf::internal::ConstantInitialized);

  inline CommitResponse(const CommitResponse& from)
      : CommitResponse(nullptr, from) {}
  CommitResponse(CommitResponse&& from) noexcept
    : CommitResponse() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CommitResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const CommitResponse* internal_default_instance() {
    return reinterpret_cast<const CommitResponse*>(
               &_CommitResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    11;

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

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

  CommitResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CommitResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const CommitResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const CommitResponse& from) {
    CommitResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(CommitResponse* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.CommitResponse";
  }
  protected:
  explicit CommitResponse(::google::protobuf::Arena* arena);
  CommitResponse(::google::protobuf::Arena* arena, const CommitResponse& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kWriteResultsFieldNumber = 1,
    kCommitTimeFieldNumber = 2,
  };
  // repeated .google.firestore.v1.WriteResult write_results = 1;
  int write_results_size() const;
  private:
  int _internal_write_results_size() const;

  public:
  void clear_write_results() ;
  ::google::firestore::v1::WriteResult* mutable_write_results(int index);
  ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::WriteResult >*
      mutable_write_results();
  private:
  const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::WriteResult>& _internal_write_results() const;
  ::google::protobuf::RepeatedPtrField<::google::firestore::v1::WriteResult>* _internal_mutable_write_results();
  public:
  const ::google::firestore::v1::WriteResult& write_results(int index) const;
  ::google::firestore::v1::WriteResult* add_write_results();
  const ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::WriteResult >&
      write_results() const;
  // .google.protobuf.Timestamp commit_time = 2;
  bool has_commit_time() const;
  void clear_commit_time() ;
  const ::google::protobuf::Timestamp& commit_time() const;
  PROTOBUF_NODISCARD ::google::protobuf::Timestamp* release_commit_time();
  ::google::protobuf::Timestamp* mutable_commit_time();
  void set_allocated_commit_time(::google::protobuf::Timestamp* value);
  void unsafe_arena_set_allocated_commit_time(::google::protobuf::Timestamp* value);
  ::google::protobuf::Timestamp* unsafe_arena_release_commit_time();

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

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.CommitResponse)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 2,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::WriteResult > write_results_;
    ::google::protobuf::Timestamp* commit_time_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class BeginTransactionRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.BeginTransactionRequest) */ {
 public:
  inline BeginTransactionRequest() : BeginTransactionRequest(nullptr) {}
  ~BeginTransactionRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR BeginTransactionRequest(::google::protobuf::internal::ConstantInitialized);

  inline BeginTransactionRequest(const BeginTransactionRequest& from)
      : BeginTransactionRequest(nullptr, from) {}
  BeginTransactionRequest(BeginTransactionRequest&& from) noexcept
    : BeginTransactionRequest() {
    *this = ::std::move(from);
  }

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

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

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

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

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

  BeginTransactionRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<BeginTransactionRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BeginTransactionRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const BeginTransactionRequest& from) {
    BeginTransactionRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(BeginTransactionRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.BeginTransactionRequest";
  }
  protected:
  explicit BeginTransactionRequest(::google::protobuf::Arena* arena);
  BeginTransactionRequest(::google::protobuf::Arena* arena, const BeginTransactionRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kDatabaseFieldNumber = 1,
    kOptionsFieldNumber = 2,
  };
  // string database = 1;
  void clear_database() ;
  const std::string& database() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_database(Arg_&& arg, Args_... args);
  std::string* mutable_database();
  PROTOBUF_NODISCARD std::string* release_database();
  void set_allocated_database(std::string* value);

  private:
  const std::string& _internal_database() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_database(
      const std::string& value);
  std::string* _internal_mutable_database();

  public:
  // .google.firestore.v1.TransactionOptions options = 2;
  bool has_options() const;
  void clear_options() ;
  const ::google::firestore::v1::TransactionOptions& options() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::TransactionOptions* release_options();
  ::google::firestore::v1::TransactionOptions* mutable_options();
  void set_allocated_options(::google::firestore::v1::TransactionOptions* value);
  void unsafe_arena_set_allocated_options(::google::firestore::v1::TransactionOptions* value);
  ::google::firestore::v1::TransactionOptions* unsafe_arena_release_options();

  private:
  const ::google::firestore::v1::TransactionOptions& _internal_options() const;
  ::google::firestore::v1::TransactionOptions* _internal_mutable_options();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.BeginTransactionRequest)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 1,
      60, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr database_;
    ::google::firestore::v1::TransactionOptions* options_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class BatchGetDocumentsRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.BatchGetDocumentsRequest) */ {
 public:
  inline BatchGetDocumentsRequest() : BatchGetDocumentsRequest(nullptr) {}
  ~BatchGetDocumentsRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR BatchGetDocumentsRequest(::google::protobuf::internal::ConstantInitialized);

  inline BatchGetDocumentsRequest(const BatchGetDocumentsRequest& from)
      : BatchGetDocumentsRequest(nullptr, from) {}
  BatchGetDocumentsRequest(BatchGetDocumentsRequest&& from) noexcept
    : BatchGetDocumentsRequest() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const BatchGetDocumentsRequest& default_instance() {
    return *internal_default_instance();
  }
  enum ConsistencySelectorCase {
    kTransaction = 4,
    kNewTransaction = 5,
    kReadTime = 7,
    CONSISTENCY_SELECTOR_NOT_SET = 0,
  };

  static inline const BatchGetDocumentsRequest* internal_default_instance() {
    return reinterpret_cast<const BatchGetDocumentsRequest*>(
               &_BatchGetDocumentsRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

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

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

  BatchGetDocumentsRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<BatchGetDocumentsRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BatchGetDocumentsRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const BatchGetDocumentsRequest& from) {
    BatchGetDocumentsRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(BatchGetDocumentsRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.BatchGetDocumentsRequest";
  }
  protected:
  explicit BatchGetDocumentsRequest(::google::protobuf::Arena* arena);
  BatchGetDocumentsRequest(::google::protobuf::Arena* arena, const BatchGetDocumentsRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kDocumentsFieldNumber = 2,
    kDatabaseFieldNumber = 1,
    kMaskFieldNumber = 3,
    kTransactionFieldNumber = 4,
    kNewTransactionFieldNumber = 5,
    kReadTimeFieldNumber = 7,
  };
  // repeated string documents = 2;
  int documents_size() const;
  private:
  int _internal_documents_size() const;

  public:
  void clear_documents() ;
  const std::string& documents(int index) const;
  std::string* mutable_documents(int index);
  void set_documents(int index, const std::string& value);
  void set_documents(int index, std::string&& value);
  void set_documents(int index, const char* value);
  void set_documents(int index, const char* value, std::size_t size);
  void set_documents(int index, absl::string_view value);
  std::string* add_documents();
  void add_documents(const std::string& value);
  void add_documents(std::string&& value);
  void add_documents(const char* value);
  void add_documents(const char* value, std::size_t size);
  void add_documents(absl::string_view value);
  const ::google::protobuf::RepeatedPtrField<std::string>& documents() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_documents();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_documents() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_documents();

  public:
  // string database = 1;
  void clear_database() ;
  const std::string& database() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_database(Arg_&& arg, Args_... args);
  std::string* mutable_database();
  PROTOBUF_NODISCARD std::string* release_database();
  void set_allocated_database(std::string* value);

  private:
  const std::string& _internal_database() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_database(
      const std::string& value);
  std::string* _internal_mutable_database();

  public:
  // .google.firestore.v1.DocumentMask mask = 3;
  bool has_mask() const;
  void clear_mask() ;
  const ::google::firestore::v1::DocumentMask& mask() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::DocumentMask* release_mask();
  ::google::firestore::v1::DocumentMask* mutable_mask();
  void set_allocated_mask(::google::firestore::v1::DocumentMask* value);
  void unsafe_arena_set_allocated_mask(::google::firestore::v1::DocumentMask* value);
  ::google::firestore::v1::DocumentMask* unsafe_arena_release_mask();

  private:
  const ::google::firestore::v1::DocumentMask& _internal_mask() const;
  ::google::firestore::v1::DocumentMask* _internal_mutable_mask();

  public:
  // bytes transaction = 4;
  bool has_transaction() const;
  void clear_transaction() ;
  const std::string& transaction() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_transaction(Arg_&& arg, Args_... args);
  std::string* mutable_transaction();
  PROTOBUF_NODISCARD std::string* release_transaction();
  void set_allocated_transaction(std::string* value);

  private:
  const std::string& _internal_transaction() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_transaction(
      const std::string& value);
  std::string* _internal_mutable_transaction();

  public:
  // .google.firestore.v1.TransactionOptions new_transaction = 5;
  bool has_new_transaction() const;
  private:
  bool _internal_has_new_transaction() const;

  public:
  void clear_new_transaction() ;
  const ::google::firestore::v1::TransactionOptions& new_transaction() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::TransactionOptions* release_new_transaction();
  ::google::firestore::v1::TransactionOptions* mutable_new_transaction();
  void set_allocated_new_transaction(::google::firestore::v1::TransactionOptions* value);
  void unsafe_arena_set_allocated_new_transaction(::google::firestore::v1::TransactionOptions* value);
  ::google::firestore::v1::TransactionOptions* unsafe_arena_release_new_transaction();

  private:
  const ::google::firestore::v1::TransactionOptions& _internal_new_transaction() const;
  ::google::firestore::v1::TransactionOptions* _internal_mutable_new_transaction();

  public:
  // .google.protobuf.Timestamp read_time = 7;
  bool has_read_time() const;
  private:
  bool _internal_has_read_time() const;

  public:
  void clear_read_time() ;
  const ::google::protobuf::Timestamp& read_time() const;
  PROTOBUF_NODISCARD ::google::protobuf::Timestamp* release_read_time();
  ::google::protobuf::Timestamp* mutable_read_time();
  void set_allocated_read_time(::google::protobuf::Timestamp* value);
  void unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value);
  ::google::protobuf::Timestamp* unsafe_arena_release_read_time();

  private:
  const ::google::protobuf::Timestamp& _internal_read_time() const;
  ::google::protobuf::Timestamp* _internal_mutable_read_time();

  public:
  void clear_consistency_selector();
  ConsistencySelectorCase consistency_selector_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.BatchGetDocumentsRequest)
 private:
  class _Internal;
  void set_has_transaction();
  void set_has_new_transaction();
  void set_has_read_time();

  inline bool has_consistency_selector() const;
  inline void clear_has_consistency_selector();

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 6, 3,
      70, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<std::string> documents_;
    ::google::protobuf::internal::ArenaStringPtr database_;
    ::google::firestore::v1::DocumentMask* mask_;
    union ConsistencySelectorUnion {
      constexpr ConsistencySelectorUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::internal::ArenaStringPtr transaction_;
      ::google::firestore::v1::TransactionOptions* new_transaction_;
      ::google::protobuf::Timestamp* read_time_;
    } consistency_selector_;
    ::uint32_t _oneof_case_[1];

    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class UpdateDocumentRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.UpdateDocumentRequest) */ {
 public:
  inline UpdateDocumentRequest() : UpdateDocumentRequest(nullptr) {}
  ~UpdateDocumentRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR UpdateDocumentRequest(::google::protobuf::internal::ConstantInitialized);

  inline UpdateDocumentRequest(const UpdateDocumentRequest& from)
      : UpdateDocumentRequest(nullptr, from) {}
  UpdateDocumentRequest(UpdateDocumentRequest&& from) noexcept
    : UpdateDocumentRequest() {
    *this = ::std::move(from);
  }

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

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

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

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

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

  UpdateDocumentRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<UpdateDocumentRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const UpdateDocumentRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const UpdateDocumentRequest& from) {
    UpdateDocumentRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(UpdateDocumentRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.UpdateDocumentRequest";
  }
  protected:
  explicit UpdateDocumentRequest(::google::protobuf::Arena* arena);
  UpdateDocumentRequest(::google::protobuf::Arena* arena, const UpdateDocumentRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kDocumentFieldNumber = 1,
    kUpdateMaskFieldNumber = 2,
    kMaskFieldNumber = 3,
    kCurrentDocumentFieldNumber = 4,
  };
  // .google.firestore.v1.Document document = 1;
  bool has_document() const;
  void clear_document() ;
  const ::google::firestore::v1::Document& document() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::Document* release_document();
  ::google::firestore::v1::Document* mutable_document();
  void set_allocated_document(::google::firestore::v1::Document* value);
  void unsafe_arena_set_allocated_document(::google::firestore::v1::Document* value);
  ::google::firestore::v1::Document* unsafe_arena_release_document();

  private:
  const ::google::firestore::v1::Document& _internal_document() const;
  ::google::firestore::v1::Document* _internal_mutable_document();

  public:
  // .google.firestore.v1.DocumentMask update_mask = 2;
  bool has_update_mask() const;
  void clear_update_mask() ;
  const ::google::firestore::v1::DocumentMask& update_mask() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::DocumentMask* release_update_mask();
  ::google::firestore::v1::DocumentMask* mutable_update_mask();
  void set_allocated_update_mask(::google::firestore::v1::DocumentMask* value);
  void unsafe_arena_set_allocated_update_mask(::google::firestore::v1::DocumentMask* value);
  ::google::firestore::v1::DocumentMask* unsafe_arena_release_update_mask();

  private:
  const ::google::firestore::v1::DocumentMask& _internal_update_mask() const;
  ::google::firestore::v1::DocumentMask* _internal_mutable_update_mask();

  public:
  // .google.firestore.v1.DocumentMask mask = 3;
  bool has_mask() const;
  void clear_mask() ;
  const ::google::firestore::v1::DocumentMask& mask() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::DocumentMask* release_mask();
  ::google::firestore::v1::DocumentMask* mutable_mask();
  void set_allocated_mask(::google::firestore::v1::DocumentMask* value);
  void unsafe_arena_set_allocated_mask(::google::firestore::v1::DocumentMask* value);
  ::google::firestore::v1::DocumentMask* unsafe_arena_release_mask();

  private:
  const ::google::firestore::v1::DocumentMask& _internal_mask() const;
  ::google::firestore::v1::DocumentMask* _internal_mutable_mask();

  public:
  // .google.firestore.v1.Precondition current_document = 4;
  bool has_current_document() const;
  void clear_current_document() ;
  const ::google::firestore::v1::Precondition& current_document() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::Precondition* release_current_document();
  ::google::firestore::v1::Precondition* mutable_current_document();
  void set_allocated_current_document(::google::firestore::v1::Precondition* value);
  void unsafe_arena_set_allocated_current_document(::google::firestore::v1::Precondition* value);
  ::google::firestore::v1::Precondition* unsafe_arena_release_current_document();

  private:
  const ::google::firestore::v1::Precondition& _internal_current_document() const;
  ::google::firestore::v1::Precondition* _internal_mutable_current_document();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.UpdateDocumentRequest)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 4, 4,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::firestore::v1::Document* document_;
    ::google::firestore::v1::DocumentMask* update_mask_;
    ::google::firestore::v1::DocumentMask* mask_;
    ::google::firestore::v1::Precondition* current_document_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class RunQueryResponse final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.RunQueryResponse) */ {
 public:
  inline RunQueryResponse() : RunQueryResponse(nullptr) {}
  ~RunQueryResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR RunQueryResponse(::google::protobuf::internal::ConstantInitialized);

  inline RunQueryResponse(const RunQueryResponse& from)
      : RunQueryResponse(nullptr, from) {}
  RunQueryResponse(RunQueryResponse&& from) noexcept
    : RunQueryResponse() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const RunQueryResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const RunQueryResponse* internal_default_instance() {
    return reinterpret_cast<const RunQueryResponse*>(
               &_RunQueryResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    14;

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

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

  RunQueryResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<RunQueryResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RunQueryResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const RunQueryResponse& from) {
    RunQueryResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(RunQueryResponse* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.RunQueryResponse";
  }
  protected:
  explicit RunQueryResponse(::google::protobuf::Arena* arena);
  RunQueryResponse(::google::protobuf::Arena* arena, const RunQueryResponse& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kTransactionFieldNumber = 2,
    kDocumentFieldNumber = 1,
    kReadTimeFieldNumber = 3,
    kSkippedResultsFieldNumber = 4,
  };
  // bytes transaction = 2;
  void clear_transaction() ;
  const std::string& transaction() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_transaction(Arg_&& arg, Args_... args);
  std::string* mutable_transaction();
  PROTOBUF_NODISCARD std::string* release_transaction();
  void set_allocated_transaction(std::string* value);

  private:
  const std::string& _internal_transaction() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_transaction(
      const std::string& value);
  std::string* _internal_mutable_transaction();

  public:
  // .google.firestore.v1.Document document = 1;
  bool has_document() const;
  void clear_document() ;
  const ::google::firestore::v1::Document& document() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::Document* release_document();
  ::google::firestore::v1::Document* mutable_document();
  void set_allocated_document(::google::firestore::v1::Document* value);
  void unsafe_arena_set_allocated_document(::google::firestore::v1::Document* value);
  ::google::firestore::v1::Document* unsafe_arena_release_document();

  private:
  const ::google::firestore::v1::Document& _internal_document() const;
  ::google::firestore::v1::Document* _internal_mutable_document();

  public:
  // .google.protobuf.Timestamp read_time = 3;
  bool has_read_time() const;
  void clear_read_time() ;
  const ::google::protobuf::Timestamp& read_time() const;
  PROTOBUF_NODISCARD ::google::protobuf::Timestamp* release_read_time();
  ::google::protobuf::Timestamp* mutable_read_time();
  void set_allocated_read_time(::google::protobuf::Timestamp* value);
  void unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value);
  ::google::protobuf::Timestamp* unsafe_arena_release_read_time();

  private:
  const ::google::protobuf::Timestamp& _internal_read_time() const;
  ::google::protobuf::Timestamp* _internal_mutable_read_time();

  public:
  // int32 skipped_results = 4;
  void clear_skipped_results() ;
  ::int32_t skipped_results() const;
  void set_skipped_results(::int32_t value);

  private:
  ::int32_t _internal_skipped_results() const;
  void _internal_set_skipped_results(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.RunQueryResponse)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 4, 2,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr transaction_;
    ::google::firestore::v1::Document* document_;
    ::google::protobuf::Timestamp* read_time_;
    ::int32_t skipped_results_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class RunAggregationQueryResponse final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.RunAggregationQueryResponse) */ {
 public:
  inline RunAggregationQueryResponse() : RunAggregationQueryResponse(nullptr) {}
  ~RunAggregationQueryResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR RunAggregationQueryResponse(::google::protobuf::internal::ConstantInitialized);

  inline RunAggregationQueryResponse(const RunAggregationQueryResponse& from)
      : RunAggregationQueryResponse(nullptr, from) {}
  RunAggregationQueryResponse(RunAggregationQueryResponse&& from) noexcept
    : RunAggregationQueryResponse() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const RunAggregationQueryResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const RunAggregationQueryResponse* internal_default_instance() {
    return reinterpret_cast<const RunAggregationQueryResponse*>(
               &_RunAggregationQueryResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    16;

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

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

  RunAggregationQueryResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<RunAggregationQueryResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RunAggregationQueryResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const RunAggregationQueryResponse& from) {
    RunAggregationQueryResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(RunAggregationQueryResponse* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.RunAggregationQueryResponse";
  }
  protected:
  explicit RunAggregationQueryResponse(::google::protobuf::Arena* arena);
  RunAggregationQueryResponse(::google::protobuf::Arena* arena, const RunAggregationQueryResponse& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kTransactionFieldNumber = 2,
    kResultFieldNumber = 1,
    kReadTimeFieldNumber = 3,
  };
  // bytes transaction = 2;
  void clear_transaction() ;
  const std::string& transaction() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_transaction(Arg_&& arg, Args_... args);
  std::string* mutable_transaction();
  PROTOBUF_NODISCARD std::string* release_transaction();
  void set_allocated_transaction(std::string* value);

  private:
  const std::string& _internal_transaction() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_transaction(
      const std::string& value);
  std::string* _internal_mutable_transaction();

  public:
  // .google.firestore.v1.AggregationResult result = 1;
  bool has_result() const;
  void clear_result() ;
  const ::google::firestore::v1::AggregationResult& result() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::AggregationResult* release_result();
  ::google::firestore::v1::AggregationResult* mutable_result();
  void set_allocated_result(::google::firestore::v1::AggregationResult* value);
  void unsafe_arena_set_allocated_result(::google::firestore::v1::AggregationResult* value);
  ::google::firestore::v1::AggregationResult* unsafe_arena_release_result();

  private:
  const ::google::firestore::v1::AggregationResult& _internal_result() const;
  ::google::firestore::v1::AggregationResult* _internal_mutable_result();

  public:
  // .google.protobuf.Timestamp read_time = 3;
  bool has_read_time() const;
  void clear_read_time() ;
  const ::google::protobuf::Timestamp& read_time() const;
  PROTOBUF_NODISCARD ::google::protobuf::Timestamp* release_read_time();
  ::google::protobuf::Timestamp* mutable_read_time();
  void set_allocated_read_time(::google::protobuf::Timestamp* value);
  void unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value);
  ::google::protobuf::Timestamp* unsafe_arena_release_read_time();

  private:
  const ::google::protobuf::Timestamp& _internal_read_time() const;
  ::google::protobuf::Timestamp* _internal_mutable_read_time();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.RunAggregationQueryResponse)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 2,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr transaction_;
    ::google::firestore::v1::AggregationResult* result_;
    ::google::protobuf::Timestamp* read_time_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class ListDocumentsResponse final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.ListDocumentsResponse) */ {
 public:
  inline ListDocumentsResponse() : ListDocumentsResponse(nullptr) {}
  ~ListDocumentsResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR ListDocumentsResponse(::google::protobuf::internal::ConstantInitialized);

  inline ListDocumentsResponse(const ListDocumentsResponse& from)
      : ListDocumentsResponse(nullptr, from) {}
  ListDocumentsResponse(ListDocumentsResponse&& from) noexcept
    : ListDocumentsResponse() {
    *this = ::std::move(from);
  }

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

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

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

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

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

  ListDocumentsResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ListDocumentsResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ListDocumentsResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const ListDocumentsResponse& from) {
    ListDocumentsResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(ListDocumentsResponse* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.ListDocumentsResponse";
  }
  protected:
  explicit ListDocumentsResponse(::google::protobuf::Arena* arena);
  ListDocumentsResponse(::google::protobuf::Arena* arena, const ListDocumentsResponse& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kDocumentsFieldNumber = 1,
    kNextPageTokenFieldNumber = 2,
  };
  // repeated .google.firestore.v1.Document documents = 1;
  int documents_size() const;
  private:
  int _internal_documents_size() const;

  public:
  void clear_documents() ;
  ::google::firestore::v1::Document* mutable_documents(int index);
  ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::Document >*
      mutable_documents();
  private:
  const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Document>& _internal_documents() const;
  ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Document>* _internal_mutable_documents();
  public:
  const ::google::firestore::v1::Document& documents(int index) const;
  ::google::firestore::v1::Document* add_documents();
  const ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::Document >&
      documents() const;
  // string next_page_token = 2;
  void clear_next_page_token() ;
  const std::string& next_page_token() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_next_page_token(Arg_&& arg, Args_... args);
  std::string* mutable_next_page_token();
  PROTOBUF_NODISCARD std::string* release_next_page_token();
  void set_allocated_next_page_token(std::string* value);

  private:
  const std::string& _internal_next_page_token() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_next_page_token(
      const std::string& value);
  std::string* _internal_mutable_next_page_token();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.ListDocumentsResponse)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 1,
      65, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::Document > documents_;
    ::google::protobuf::internal::ArenaStringPtr next_page_token_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class CreateDocumentRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.CreateDocumentRequest) */ {
 public:
  inline CreateDocumentRequest() : CreateDocumentRequest(nullptr) {}
  ~CreateDocumentRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR CreateDocumentRequest(::google::protobuf::internal::ConstantInitialized);

  inline CreateDocumentRequest(const CreateDocumentRequest& from)
      : CreateDocumentRequest(nullptr, from) {}
  CreateDocumentRequest(CreateDocumentRequest&& from) noexcept
    : CreateDocumentRequest() {
    *this = ::std::move(from);
  }

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

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

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

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

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

  CreateDocumentRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CreateDocumentRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const CreateDocumentRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const CreateDocumentRequest& from) {
    CreateDocumentRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(CreateDocumentRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.CreateDocumentRequest";
  }
  protected:
  explicit CreateDocumentRequest(::google::protobuf::Arena* arena);
  CreateDocumentRequest(::google::protobuf::Arena* arena, const CreateDocumentRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kParentFieldNumber = 1,
    kCollectionIdFieldNumber = 2,
    kDocumentIdFieldNumber = 3,
    kDocumentFieldNumber = 4,
    kMaskFieldNumber = 5,
  };
  // string parent = 1;
  void clear_parent() ;
  const std::string& parent() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_parent(Arg_&& arg, Args_... args);
  std::string* mutable_parent();
  PROTOBUF_NODISCARD std::string* release_parent();
  void set_allocated_parent(std::string* value);

  private:
  const std::string& _internal_parent() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_parent(
      const std::string& value);
  std::string* _internal_mutable_parent();

  public:
  // string collection_id = 2;
  void clear_collection_id() ;
  const std::string& collection_id() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_collection_id(Arg_&& arg, Args_... args);
  std::string* mutable_collection_id();
  PROTOBUF_NODISCARD std::string* release_collection_id();
  void set_allocated_collection_id(std::string* value);

  private:
  const std::string& _internal_collection_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_collection_id(
      const std::string& value);
  std::string* _internal_mutable_collection_id();

  public:
  // string document_id = 3;
  void clear_document_id() ;
  const std::string& document_id() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_document_id(Arg_&& arg, Args_... args);
  std::string* mutable_document_id();
  PROTOBUF_NODISCARD std::string* release_document_id();
  void set_allocated_document_id(std::string* value);

  private:
  const std::string& _internal_document_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_document_id(
      const std::string& value);
  std::string* _internal_mutable_document_id();

  public:
  // .google.firestore.v1.Document document = 4;
  bool has_document() const;
  void clear_document() ;
  const ::google::firestore::v1::Document& document() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::Document* release_document();
  ::google::firestore::v1::Document* mutable_document();
  void set_allocated_document(::google::firestore::v1::Document* value);
  void unsafe_arena_set_allocated_document(::google::firestore::v1::Document* value);
  ::google::firestore::v1::Document* unsafe_arena_release_document();

  private:
  const ::google::firestore::v1::Document& _internal_document() const;
  ::google::firestore::v1::Document* _internal_mutable_document();

  public:
  // .google.firestore.v1.DocumentMask mask = 5;
  bool has_mask() const;
  void clear_mask() ;
  const ::google::firestore::v1::DocumentMask& mask() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::DocumentMask* release_mask();
  ::google::firestore::v1::DocumentMask* mutable_mask();
  void set_allocated_mask(::google::firestore::v1::DocumentMask* value);
  void unsafe_arena_set_allocated_mask(::google::firestore::v1::DocumentMask* value);
  ::google::firestore::v1::DocumentMask* unsafe_arena_release_mask();

  private:
  const ::google::firestore::v1::DocumentMask& _internal_mask() const;
  ::google::firestore::v1::DocumentMask* _internal_mutable_mask();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.CreateDocumentRequest)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 5, 2,
      80, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr parent_;
    ::google::protobuf::internal::ArenaStringPtr collection_id_;
    ::google::protobuf::internal::ArenaStringPtr document_id_;
    ::google::firestore::v1::Document* document_;
    ::google::firestore::v1::DocumentMask* mask_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class BatchGetDocumentsResponse final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.BatchGetDocumentsResponse) */ {
 public:
  inline BatchGetDocumentsResponse() : BatchGetDocumentsResponse(nullptr) {}
  ~BatchGetDocumentsResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR BatchGetDocumentsResponse(::google::protobuf::internal::ConstantInitialized);

  inline BatchGetDocumentsResponse(const BatchGetDocumentsResponse& from)
      : BatchGetDocumentsResponse(nullptr, from) {}
  BatchGetDocumentsResponse(BatchGetDocumentsResponse&& from) noexcept
    : BatchGetDocumentsResponse() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const BatchGetDocumentsResponse& default_instance() {
    return *internal_default_instance();
  }
  enum ResultCase {
    kFound = 1,
    kMissing = 2,
    RESULT_NOT_SET = 0,
  };

  static inline const BatchGetDocumentsResponse* internal_default_instance() {
    return reinterpret_cast<const BatchGetDocumentsResponse*>(
               &_BatchGetDocumentsResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

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

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

  BatchGetDocumentsResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<BatchGetDocumentsResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BatchGetDocumentsResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const BatchGetDocumentsResponse& from) {
    BatchGetDocumentsResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(BatchGetDocumentsResponse* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.BatchGetDocumentsResponse";
  }
  protected:
  explicit BatchGetDocumentsResponse(::google::protobuf::Arena* arena);
  BatchGetDocumentsResponse(::google::protobuf::Arena* arena, const BatchGetDocumentsResponse& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kTransactionFieldNumber = 3,
    kReadTimeFieldNumber = 4,
    kFoundFieldNumber = 1,
    kMissingFieldNumber = 2,
  };
  // bytes transaction = 3;
  void clear_transaction() ;
  const std::string& transaction() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_transaction(Arg_&& arg, Args_... args);
  std::string* mutable_transaction();
  PROTOBUF_NODISCARD std::string* release_transaction();
  void set_allocated_transaction(std::string* value);

  private:
  const std::string& _internal_transaction() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_transaction(
      const std::string& value);
  std::string* _internal_mutable_transaction();

  public:
  // .google.protobuf.Timestamp read_time = 4;
  bool has_read_time() const;
  void clear_read_time() ;
  const ::google::protobuf::Timestamp& read_time() const;
  PROTOBUF_NODISCARD ::google::protobuf::Timestamp* release_read_time();
  ::google::protobuf::Timestamp* mutable_read_time();
  void set_allocated_read_time(::google::protobuf::Timestamp* value);
  void unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value);
  ::google::protobuf::Timestamp* unsafe_arena_release_read_time();

  private:
  const ::google::protobuf::Timestamp& _internal_read_time() const;
  ::google::protobuf::Timestamp* _internal_mutable_read_time();

  public:
  // .google.firestore.v1.Document found = 1;
  bool has_found() const;
  private:
  bool _internal_has_found() const;

  public:
  void clear_found() ;
  const ::google::firestore::v1::Document& found() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::Document* release_found();
  ::google::firestore::v1::Document* mutable_found();
  void set_allocated_found(::google::firestore::v1::Document* value);
  void unsafe_arena_set_allocated_found(::google::firestore::v1::Document* value);
  ::google::firestore::v1::Document* unsafe_arena_release_found();

  private:
  const ::google::firestore::v1::Document& _internal_found() const;
  ::google::firestore::v1::Document* _internal_mutable_found();

  public:
  // string missing = 2;
  bool has_missing() const;
  void clear_missing() ;
  const std::string& missing() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_missing(Arg_&& arg, Args_... args);
  std::string* mutable_missing();
  PROTOBUF_NODISCARD std::string* release_missing();
  void set_allocated_missing(std::string* value);

  private:
  const std::string& _internal_missing() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_missing(
      const std::string& value);
  std::string* _internal_mutable_missing();

  public:
  void clear_result();
  ResultCase result_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.BatchGetDocumentsResponse)
 private:
  class _Internal;
  void set_has_found();
  void set_has_missing();

  inline bool has_result() const;
  inline void clear_has_result();

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 4, 2,
      61, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr transaction_;
    ::google::protobuf::Timestamp* read_time_;
    union ResultUnion {
      constexpr ResultUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::firestore::v1::Document* found_;
      ::google::protobuf::internal::ArenaStringPtr missing_;
    } result_;
    ::uint32_t _oneof_case_[1];

    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class WriteRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.WriteRequest) */ {
 public:
  inline WriteRequest() : WriteRequest(nullptr) {}
  ~WriteRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR WriteRequest(::google::protobuf::internal::ConstantInitialized);

  inline WriteRequest(const WriteRequest& from)
      : WriteRequest(nullptr, from) {}
  WriteRequest(WriteRequest&& from) noexcept
    : WriteRequest() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const WriteRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const WriteRequest* internal_default_instance() {
    return reinterpret_cast<const WriteRequest*>(
               &_WriteRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    18;

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

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

  WriteRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<WriteRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const WriteRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const WriteRequest& from) {
    WriteRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(WriteRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.WriteRequest";
  }
  protected:
  explicit WriteRequest(::google::protobuf::Arena* arena);
  WriteRequest(::google::protobuf::Arena* arena, const WriteRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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


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

  enum : int {
    kWritesFieldNumber = 3,
    kLabelsFieldNumber = 5,
    kDatabaseFieldNumber = 1,
    kStreamIdFieldNumber = 2,
    kStreamTokenFieldNumber = 4,
  };
  // repeated .google.firestore.v1.Write writes = 3;
  int writes_size() const;
  private:
  int _internal_writes_size() const;

  public:
  void clear_writes() ;
  ::google::firestore::v1::Write* mutable_writes(int index);
  ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::Write >*
      mutable_writes();
  private:
  const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Write>& _internal_writes() const;
  ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Write>* _internal_mutable_writes();
  public:
  const ::google::firestore::v1::Write& writes(int index) const;
  ::google::firestore::v1::Write* add_writes();
  const ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::Write >&
      writes() const;
  // map<string, string> labels = 5;
  int labels_size() const;
  private:
  int _internal_labels_size() const;

  public:
  void clear_labels() ;
  const ::google::protobuf::Map<std::string, std::string>& labels() const;
  ::google::protobuf::Map<std::string, std::string>* mutable_labels();

  private:
  const ::google::protobuf::Map<std::string, std::string>& _internal_labels() const;
  ::google::protobuf::Map<std::string, std::string>* _internal_mutable_labels();

  public:
  // string database = 1;
  void clear_database() ;
  const std::string& database() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_database(Arg_&& arg, Args_... args);
  std::string* mutable_database();
  PROTOBUF_NODISCARD std::string* release_database();
  void set_allocated_database(std::string* value);

  private:
  const std::string& _internal_database() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_database(
      const std::string& value);
  std::string* _internal_mutable_database();

  public:
  // string stream_id = 2;
  void clear_stream_id() ;
  const std::string& stream_id() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_stream_id(Arg_&& arg, Args_... args);
  std::string* mutable_stream_id();
  PROTOBUF_NODISCARD std::string* release_stream_id();
  void set_allocated_stream_id(std::string* value);

  private:
  const std::string& _internal_stream_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_stream_id(
      const std::string& value);
  std::string* _internal_mutable_stream_id();

  public:
  // bytes stream_token = 4;
  void clear_stream_token() ;
  const std::string& stream_token() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_stream_token(Arg_&& arg, Args_... args);
  std::string* mutable_stream_token();
  PROTOBUF_NODISCARD std::string* release_stream_token();
  void set_allocated_stream_token(std::string* value);

  private:
  const std::string& _internal_stream_token() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_stream_token(
      const std::string& value);
  std::string* _internal_mutable_stream_token();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.WriteRequest)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 5, 2,
      64, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::Write > writes_;
    ::google::protobuf::internal::MapField<WriteRequest_LabelsEntry_DoNotUse, std::string, std::string,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING>
        labels_;
    ::google::protobuf::internal::ArenaStringPtr database_;
    ::google::protobuf::internal::ArenaStringPtr stream_id_;
    ::google::protobuf::internal::ArenaStringPtr stream_token_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class Target_QueryTarget final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.Target.QueryTarget) */ {
 public:
  inline Target_QueryTarget() : Target_QueryTarget(nullptr) {}
  ~Target_QueryTarget() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR Target_QueryTarget(::google::protobuf::internal::ConstantInitialized);

  inline Target_QueryTarget(const Target_QueryTarget& from)
      : Target_QueryTarget(nullptr, from) {}
  Target_QueryTarget(Target_QueryTarget&& from) noexcept
    : Target_QueryTarget() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Target_QueryTarget& default_instance() {
    return *internal_default_instance();
  }
  enum QueryTypeCase {
    kStructuredQuery = 2,
    QUERY_TYPE_NOT_SET = 0,
  };

  static inline const Target_QueryTarget* internal_default_instance() {
    return reinterpret_cast<const Target_QueryTarget*>(
               &_Target_QueryTarget_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    24;

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

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

  Target_QueryTarget* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<Target_QueryTarget>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Target_QueryTarget& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const Target_QueryTarget& from) {
    Target_QueryTarget::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(Target_QueryTarget* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.Target.QueryTarget";
  }
  protected:
  explicit Target_QueryTarget(::google::protobuf::Arena* arena);
  Target_QueryTarget(::google::protobuf::Arena* arena, const Target_QueryTarget& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kParentFieldNumber = 1,
    kStructuredQueryFieldNumber = 2,
  };
  // string parent = 1;
  void clear_parent() ;
  const std::string& parent() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_parent(Arg_&& arg, Args_... args);
  std::string* mutable_parent();
  PROTOBUF_NODISCARD std::string* release_parent();
  void set_allocated_parent(std::string* value);

  private:
  const std::string& _internal_parent() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_parent(
      const std::string& value);
  std::string* _internal_mutable_parent();

  public:
  // .google.firestore.v1.StructuredQuery structured_query = 2;
  bool has_structured_query() const;
  private:
  bool _internal_has_structured_query() const;

  public:
  void clear_structured_query() ;
  const ::google::firestore::v1::StructuredQuery& structured_query() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::StructuredQuery* release_structured_query();
  ::google::firestore::v1::StructuredQuery* mutable_structured_query();
  void set_allocated_structured_query(::google::firestore::v1::StructuredQuery* value);
  void unsafe_arena_set_allocated_structured_query(::google::firestore::v1::StructuredQuery* value);
  ::google::firestore::v1::StructuredQuery* unsafe_arena_release_structured_query();

  private:
  const ::google::firestore::v1::StructuredQuery& _internal_structured_query() const;
  ::google::firestore::v1::StructuredQuery* _internal_mutable_structured_query();

  public:
  void clear_query_type();
  QueryTypeCase query_type_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.Target.QueryTarget)
 private:
  class _Internal;
  void set_has_structured_query();

  inline bool has_query_type() const;
  inline void clear_has_query_type();

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 2, 1,
      53, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::ArenaStringPtr parent_;
    union QueryTypeUnion {
      constexpr QueryTypeUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::firestore::v1::StructuredQuery* structured_query_;
    } query_type_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];

    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class RunQueryRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.RunQueryRequest) */ {
 public:
  inline RunQueryRequest() : RunQueryRequest(nullptr) {}
  ~RunQueryRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR RunQueryRequest(::google::protobuf::internal::ConstantInitialized);

  inline RunQueryRequest(const RunQueryRequest& from)
      : RunQueryRequest(nullptr, from) {}
  RunQueryRequest(RunQueryRequest&& from) noexcept
    : RunQueryRequest() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const RunQueryRequest& default_instance() {
    return *internal_default_instance();
  }
  enum QueryTypeCase {
    kStructuredQuery = 2,
    QUERY_TYPE_NOT_SET = 0,
  };

  enum ConsistencySelectorCase {
    kTransaction = 5,
    kNewTransaction = 6,
    kReadTime = 7,
    CONSISTENCY_SELECTOR_NOT_SET = 0,
  };

  static inline const RunQueryRequest* internal_default_instance() {
    return reinterpret_cast<const RunQueryRequest*>(
               &_RunQueryRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    13;

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

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

  RunQueryRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<RunQueryRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RunQueryRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const RunQueryRequest& from) {
    RunQueryRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(RunQueryRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.RunQueryRequest";
  }
  protected:
  explicit RunQueryRequest(::google::protobuf::Arena* arena);
  RunQueryRequest(::google::protobuf::Arena* arena, const RunQueryRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kParentFieldNumber = 1,
    kStructuredQueryFieldNumber = 2,
    kTransactionFieldNumber = 5,
    kNewTransactionFieldNumber = 6,
    kReadTimeFieldNumber = 7,
  };
  // string parent = 1;
  void clear_parent() ;
  const std::string& parent() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_parent(Arg_&& arg, Args_... args);
  std::string* mutable_parent();
  PROTOBUF_NODISCARD std::string* release_parent();
  void set_allocated_parent(std::string* value);

  private:
  const std::string& _internal_parent() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_parent(
      const std::string& value);
  std::string* _internal_mutable_parent();

  public:
  // .google.firestore.v1.StructuredQuery structured_query = 2;
  bool has_structured_query() const;
  private:
  bool _internal_has_structured_query() const;

  public:
  void clear_structured_query() ;
  const ::google::firestore::v1::StructuredQuery& structured_query() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::StructuredQuery* release_structured_query();
  ::google::firestore::v1::StructuredQuery* mutable_structured_query();
  void set_allocated_structured_query(::google::firestore::v1::StructuredQuery* value);
  void unsafe_arena_set_allocated_structured_query(::google::firestore::v1::StructuredQuery* value);
  ::google::firestore::v1::StructuredQuery* unsafe_arena_release_structured_query();

  private:
  const ::google::firestore::v1::StructuredQuery& _internal_structured_query() const;
  ::google::firestore::v1::StructuredQuery* _internal_mutable_structured_query();

  public:
  // bytes transaction = 5;
  bool has_transaction() const;
  void clear_transaction() ;
  const std::string& transaction() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_transaction(Arg_&& arg, Args_... args);
  std::string* mutable_transaction();
  PROTOBUF_NODISCARD std::string* release_transaction();
  void set_allocated_transaction(std::string* value);

  private:
  const std::string& _internal_transaction() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_transaction(
      const std::string& value);
  std::string* _internal_mutable_transaction();

  public:
  // .google.firestore.v1.TransactionOptions new_transaction = 6;
  bool has_new_transaction() const;
  private:
  bool _internal_has_new_transaction() const;

  public:
  void clear_new_transaction() ;
  const ::google::firestore::v1::TransactionOptions& new_transaction() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::TransactionOptions* release_new_transaction();
  ::google::firestore::v1::TransactionOptions* mutable_new_transaction();
  void set_allocated_new_transaction(::google::firestore::v1::TransactionOptions* value);
  void unsafe_arena_set_allocated_new_transaction(::google::firestore::v1::TransactionOptions* value);
  ::google::firestore::v1::TransactionOptions* unsafe_arena_release_new_transaction();

  private:
  const ::google::firestore::v1::TransactionOptions& _internal_new_transaction() const;
  ::google::firestore::v1::TransactionOptions* _internal_mutable_new_transaction();

  public:
  // .google.protobuf.Timestamp read_time = 7;
  bool has_read_time() const;
  private:
  bool _internal_has_read_time() const;

  public:
  void clear_read_time() ;
  const ::google::protobuf::Timestamp& read_time() const;
  PROTOBUF_NODISCARD ::google::protobuf::Timestamp* release_read_time();
  ::google::protobuf::Timestamp* mutable_read_time();
  void set_allocated_read_time(::google::protobuf::Timestamp* value);
  void unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value);
  ::google::protobuf::Timestamp* unsafe_arena_release_read_time();

  private:
  const ::google::protobuf::Timestamp& _internal_read_time() const;
  ::google::protobuf::Timestamp* _internal_mutable_read_time();

  public:
  void clear_query_type();
  QueryTypeCase query_type_case() const;
  void clear_consistency_selector();
  ConsistencySelectorCase consistency_selector_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.RunQueryRequest)
 private:
  class _Internal;
  void set_has_structured_query();
  void set_has_transaction();
  void set_has_new_transaction();
  void set_has_read_time();

  inline bool has_query_type() const;
  inline void clear_has_query_type();

  inline bool has_consistency_selector() const;
  inline void clear_has_consistency_selector();

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 5, 3,
      50, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::ArenaStringPtr parent_;
    union QueryTypeUnion {
      constexpr QueryTypeUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::firestore::v1::StructuredQuery* structured_query_;
    } query_type_;
    union ConsistencySelectorUnion {
      constexpr ConsistencySelectorUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::internal::ArenaStringPtr transaction_;
      ::google::firestore::v1::TransactionOptions* new_transaction_;
      ::google::protobuf::Timestamp* read_time_;
    } consistency_selector_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[2];

    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class ListenResponse final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.ListenResponse) */ {
 public:
  inline ListenResponse() : ListenResponse(nullptr) {}
  ~ListenResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR ListenResponse(::google::protobuf::internal::ConstantInitialized);

  inline ListenResponse(const ListenResponse& from)
      : ListenResponse(nullptr, from) {}
  ListenResponse(ListenResponse&& from) noexcept
    : ListenResponse() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ListenResponse& default_instance() {
    return *internal_default_instance();
  }
  enum ResponseTypeCase {
    kTargetChange = 2,
    kDocumentChange = 3,
    kDocumentDelete = 4,
    kDocumentRemove = 6,
    kFilter = 5,
    RESPONSE_TYPE_NOT_SET = 0,
  };

  static inline const ListenResponse* internal_default_instance() {
    return reinterpret_cast<const ListenResponse*>(
               &_ListenResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    22;

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

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

  ListenResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ListenResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ListenResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const ListenResponse& from) {
    ListenResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(ListenResponse* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.ListenResponse";
  }
  protected:
  explicit ListenResponse(::google::protobuf::Arena* arena);
  ListenResponse(::google::protobuf::Arena* arena, const ListenResponse& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kTargetChangeFieldNumber = 2,
    kDocumentChangeFieldNumber = 3,
    kDocumentDeleteFieldNumber = 4,
    kDocumentRemoveFieldNumber = 6,
    kFilterFieldNumber = 5,
  };
  // .google.firestore.v1.TargetChange target_change = 2;
  bool has_target_change() const;
  private:
  bool _internal_has_target_change() const;

  public:
  void clear_target_change() ;
  const ::google::firestore::v1::TargetChange& target_change() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::TargetChange* release_target_change();
  ::google::firestore::v1::TargetChange* mutable_target_change();
  void set_allocated_target_change(::google::firestore::v1::TargetChange* value);
  void unsafe_arena_set_allocated_target_change(::google::firestore::v1::TargetChange* value);
  ::google::firestore::v1::TargetChange* unsafe_arena_release_target_change();

  private:
  const ::google::firestore::v1::TargetChange& _internal_target_change() const;
  ::google::firestore::v1::TargetChange* _internal_mutable_target_change();

  public:
  // .google.firestore.v1.DocumentChange document_change = 3;
  bool has_document_change() const;
  private:
  bool _internal_has_document_change() const;

  public:
  void clear_document_change() ;
  const ::google::firestore::v1::DocumentChange& document_change() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::DocumentChange* release_document_change();
  ::google::firestore::v1::DocumentChange* mutable_document_change();
  void set_allocated_document_change(::google::firestore::v1::DocumentChange* value);
  void unsafe_arena_set_allocated_document_change(::google::firestore::v1::DocumentChange* value);
  ::google::firestore::v1::DocumentChange* unsafe_arena_release_document_change();

  private:
  const ::google::firestore::v1::DocumentChange& _internal_document_change() const;
  ::google::firestore::v1::DocumentChange* _internal_mutable_document_change();

  public:
  // .google.firestore.v1.DocumentDelete document_delete = 4;
  bool has_document_delete() const;
  private:
  bool _internal_has_document_delete() const;

  public:
  void clear_document_delete() ;
  const ::google::firestore::v1::DocumentDelete& document_delete() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::DocumentDelete* release_document_delete();
  ::google::firestore::v1::DocumentDelete* mutable_document_delete();
  void set_allocated_document_delete(::google::firestore::v1::DocumentDelete* value);
  void unsafe_arena_set_allocated_document_delete(::google::firestore::v1::DocumentDelete* value);
  ::google::firestore::v1::DocumentDelete* unsafe_arena_release_document_delete();

  private:
  const ::google::firestore::v1::DocumentDelete& _internal_document_delete() const;
  ::google::firestore::v1::DocumentDelete* _internal_mutable_document_delete();

  public:
  // .google.firestore.v1.DocumentRemove document_remove = 6;
  bool has_document_remove() const;
  private:
  bool _internal_has_document_remove() const;

  public:
  void clear_document_remove() ;
  const ::google::firestore::v1::DocumentRemove& document_remove() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::DocumentRemove* release_document_remove();
  ::google::firestore::v1::DocumentRemove* mutable_document_remove();
  void set_allocated_document_remove(::google::firestore::v1::DocumentRemove* value);
  void unsafe_arena_set_allocated_document_remove(::google::firestore::v1::DocumentRemove* value);
  ::google::firestore::v1::DocumentRemove* unsafe_arena_release_document_remove();

  private:
  const ::google::firestore::v1::DocumentRemove& _internal_document_remove() const;
  ::google::firestore::v1::DocumentRemove* _internal_mutable_document_remove();

  public:
  // .google.firestore.v1.ExistenceFilter filter = 5;
  bool has_filter() const;
  private:
  bool _internal_has_filter() const;

  public:
  void clear_filter() ;
  const ::google::firestore::v1::ExistenceFilter& filter() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::ExistenceFilter* release_filter();
  ::google::firestore::v1::ExistenceFilter* mutable_filter();
  void set_allocated_filter(::google::firestore::v1::ExistenceFilter* value);
  void unsafe_arena_set_allocated_filter(::google::firestore::v1::ExistenceFilter* value);
  ::google::firestore::v1::ExistenceFilter* unsafe_arena_release_filter();

  private:
  const ::google::firestore::v1::ExistenceFilter& _internal_filter() const;
  ::google::firestore::v1::ExistenceFilter* _internal_mutable_filter();

  public:
  void clear_response_type();
  ResponseTypeCase response_type_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.ListenResponse)
 private:
  class _Internal;
  void set_has_target_change();
  void set_has_document_change();
  void set_has_document_delete();
  void set_has_document_remove();
  void set_has_filter();

  inline bool has_response_type() const;
  inline void clear_has_response_type();

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 5, 5,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    union ResponseTypeUnion {
      constexpr ResponseTypeUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::firestore::v1::TargetChange* target_change_;
      ::google::firestore::v1::DocumentChange* document_change_;
      ::google::firestore::v1::DocumentDelete* document_delete_;
      ::google::firestore::v1::DocumentRemove* document_remove_;
      ::google::firestore::v1::ExistenceFilter* filter_;
    } response_type_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];

    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class CommitRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.CommitRequest) */ {
 public:
  inline CommitRequest() : CommitRequest(nullptr) {}
  ~CommitRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR CommitRequest(::google::protobuf::internal::ConstantInitialized);

  inline CommitRequest(const CommitRequest& from)
      : CommitRequest(nullptr, from) {}
  CommitRequest(CommitRequest&& from) noexcept
    : CommitRequest() {
    *this = ::std::move(from);
  }

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

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

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

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

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

  CommitRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CommitRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const CommitRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const CommitRequest& from) {
    CommitRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(CommitRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.CommitRequest";
  }
  protected:
  explicit CommitRequest(::google::protobuf::Arena* arena);
  CommitRequest(::google::protobuf::Arena* arena, const CommitRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kWritesFieldNumber = 2,
    kDatabaseFieldNumber = 1,
    kTransactionFieldNumber = 3,
  };
  // repeated .google.firestore.v1.Write writes = 2;
  int writes_size() const;
  private:
  int _internal_writes_size() const;

  public:
  void clear_writes() ;
  ::google::firestore::v1::Write* mutable_writes(int index);
  ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::Write >*
      mutable_writes();
  private:
  const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Write>& _internal_writes() const;
  ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Write>* _internal_mutable_writes();
  public:
  const ::google::firestore::v1::Write& writes(int index) const;
  ::google::firestore::v1::Write* add_writes();
  const ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::Write >&
      writes() const;
  // string database = 1;
  void clear_database() ;
  const std::string& database() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_database(Arg_&& arg, Args_... args);
  std::string* mutable_database();
  PROTOBUF_NODISCARD std::string* release_database();
  void set_allocated_database(std::string* value);

  private:
  const std::string& _internal_database() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_database(
      const std::string& value);
  std::string* _internal_mutable_database();

  public:
  // bytes transaction = 3;
  void clear_transaction() ;
  const std::string& transaction() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_transaction(Arg_&& arg, Args_... args);
  std::string* mutable_transaction();
  PROTOBUF_NODISCARD std::string* release_transaction();
  void set_allocated_transaction(std::string* value);

  private:
  const std::string& _internal_transaction() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_transaction(
      const std::string& value);
  std::string* _internal_mutable_transaction();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.CommitRequest)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 1,
      50, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::Write > writes_;
    ::google::protobuf::internal::ArenaStringPtr database_;
    ::google::protobuf::internal::ArenaStringPtr transaction_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class Target final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.Target) */ {
 public:
  inline Target() : Target(nullptr) {}
  ~Target() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR Target(::google::protobuf::internal::ConstantInitialized);

  inline Target(const Target& from)
      : Target(nullptr, from) {}
  Target(Target&& from) noexcept
    : Target() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Target& default_instance() {
    return *internal_default_instance();
  }
  enum TargetTypeCase {
    kQuery = 2,
    kDocuments = 3,
    TARGET_TYPE_NOT_SET = 0,
  };

  enum ResumeTypeCase {
    kResumeToken = 4,
    kReadTime = 11,
    RESUME_TYPE_NOT_SET = 0,
  };

  static inline const Target* internal_default_instance() {
    return reinterpret_cast<const Target*>(
               &_Target_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    25;

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

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

  Target* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<Target>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Target& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const Target& from) {
    Target::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(Target* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.Target";
  }
  protected:
  explicit Target(::google::protobuf::Arena* arena);
  Target(::google::protobuf::Arena* arena, const Target& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

  using DocumentsTarget = Target_DocumentsTarget;
  using QueryTarget = Target_QueryTarget;

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

  enum : int {
    kExpectedCountFieldNumber = 12,
    kTargetIdFieldNumber = 5,
    kOnceFieldNumber = 6,
    kQueryFieldNumber = 2,
    kDocumentsFieldNumber = 3,
    kResumeTokenFieldNumber = 4,
    kReadTimeFieldNumber = 11,
  };
  // .google.protobuf.Int32Value expected_count = 12;
  bool has_expected_count() const;
  void clear_expected_count() ;
  const ::google::protobuf::Int32Value& expected_count() const;
  PROTOBUF_NODISCARD ::google::protobuf::Int32Value* release_expected_count();
  ::google::protobuf::Int32Value* mutable_expected_count();
  void set_allocated_expected_count(::google::protobuf::Int32Value* value);
  void unsafe_arena_set_allocated_expected_count(::google::protobuf::Int32Value* value);
  ::google::protobuf::Int32Value* unsafe_arena_release_expected_count();

  private:
  const ::google::protobuf::Int32Value& _internal_expected_count() const;
  ::google::protobuf::Int32Value* _internal_mutable_expected_count();

  public:
  // int32 target_id = 5;
  void clear_target_id() ;
  ::int32_t target_id() const;
  void set_target_id(::int32_t value);

  private:
  ::int32_t _internal_target_id() const;
  void _internal_set_target_id(::int32_t value);

  public:
  // bool once = 6;
  void clear_once() ;
  bool once() const;
  void set_once(bool value);

  private:
  bool _internal_once() const;
  void _internal_set_once(bool value);

  public:
  // .google.firestore.v1.Target.QueryTarget query = 2;
  bool has_query() const;
  private:
  bool _internal_has_query() const;

  public:
  void clear_query() ;
  const ::google::firestore::v1::Target_QueryTarget& query() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::Target_QueryTarget* release_query();
  ::google::firestore::v1::Target_QueryTarget* mutable_query();
  void set_allocated_query(::google::firestore::v1::Target_QueryTarget* value);
  void unsafe_arena_set_allocated_query(::google::firestore::v1::Target_QueryTarget* value);
  ::google::firestore::v1::Target_QueryTarget* unsafe_arena_release_query();

  private:
  const ::google::firestore::v1::Target_QueryTarget& _internal_query() const;
  ::google::firestore::v1::Target_QueryTarget* _internal_mutable_query();

  public:
  // .google.firestore.v1.Target.DocumentsTarget documents = 3;
  bool has_documents() const;
  private:
  bool _internal_has_documents() const;

  public:
  void clear_documents() ;
  const ::google::firestore::v1::Target_DocumentsTarget& documents() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::Target_DocumentsTarget* release_documents();
  ::google::firestore::v1::Target_DocumentsTarget* mutable_documents();
  void set_allocated_documents(::google::firestore::v1::Target_DocumentsTarget* value);
  void unsafe_arena_set_allocated_documents(::google::firestore::v1::Target_DocumentsTarget* value);
  ::google::firestore::v1::Target_DocumentsTarget* unsafe_arena_release_documents();

  private:
  const ::google::firestore::v1::Target_DocumentsTarget& _internal_documents() const;
  ::google::firestore::v1::Target_DocumentsTarget* _internal_mutable_documents();

  public:
  // bytes resume_token = 4;
  bool has_resume_token() const;
  void clear_resume_token() ;
  const std::string& resume_token() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_resume_token(Arg_&& arg, Args_... args);
  std::string* mutable_resume_token();
  PROTOBUF_NODISCARD std::string* release_resume_token();
  void set_allocated_resume_token(std::string* value);

  private:
  const std::string& _internal_resume_token() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_resume_token(
      const std::string& value);
  std::string* _internal_mutable_resume_token();

  public:
  // .google.protobuf.Timestamp read_time = 11;
  bool has_read_time() const;
  private:
  bool _internal_has_read_time() const;

  public:
  void clear_read_time() ;
  const ::google::protobuf::Timestamp& read_time() const;
  PROTOBUF_NODISCARD ::google::protobuf::Timestamp* release_read_time();
  ::google::protobuf::Timestamp* mutable_read_time();
  void set_allocated_read_time(::google::protobuf::Timestamp* value);
  void unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value);
  ::google::protobuf::Timestamp* unsafe_arena_release_read_time();

  private:
  const ::google::protobuf::Timestamp& _internal_read_time() const;
  ::google::protobuf::Timestamp* _internal_mutable_read_time();

  public:
  void clear_target_type();
  TargetTypeCase target_type_case() const;
  void clear_resume_type();
  ResumeTypeCase resume_type_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.Target)
 private:
  class _Internal;
  void set_has_query();
  void set_has_documents();
  void set_has_resume_token();
  void set_has_read_time();

  inline bool has_target_type() const;
  inline void clear_has_target_type();

  inline bool has_resume_type() const;
  inline void clear_has_resume_type();

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 7, 4,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::Int32Value* expected_count_;
    ::int32_t target_id_;
    bool once_;
    union TargetTypeUnion {
      constexpr TargetTypeUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::firestore::v1::Target_QueryTarget* query_;
      ::google::firestore::v1::Target_DocumentsTarget* documents_;
    } target_type_;
    union ResumeTypeUnion {
      constexpr ResumeTypeUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::internal::ArenaStringPtr resume_token_;
      ::google::protobuf::Timestamp* read_time_;
    } resume_type_;
    ::uint32_t _oneof_case_[2];

    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class RunAggregationQueryRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.RunAggregationQueryRequest) */ {
 public:
  inline RunAggregationQueryRequest() : RunAggregationQueryRequest(nullptr) {}
  ~RunAggregationQueryRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR RunAggregationQueryRequest(::google::protobuf::internal::ConstantInitialized);

  inline RunAggregationQueryRequest(const RunAggregationQueryRequest& from)
      : RunAggregationQueryRequest(nullptr, from) {}
  RunAggregationQueryRequest(RunAggregationQueryRequest&& from) noexcept
    : RunAggregationQueryRequest() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const RunAggregationQueryRequest& default_instance() {
    return *internal_default_instance();
  }
  enum QueryTypeCase {
    kStructuredAggregationQuery = 2,
    QUERY_TYPE_NOT_SET = 0,
  };

  enum ConsistencySelectorCase {
    kTransaction = 4,
    kNewTransaction = 5,
    kReadTime = 6,
    CONSISTENCY_SELECTOR_NOT_SET = 0,
  };

  static inline const RunAggregationQueryRequest* internal_default_instance() {
    return reinterpret_cast<const RunAggregationQueryRequest*>(
               &_RunAggregationQueryRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    15;

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

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

  RunAggregationQueryRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<RunAggregationQueryRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RunAggregationQueryRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const RunAggregationQueryRequest& from) {
    RunAggregationQueryRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(RunAggregationQueryRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.RunAggregationQueryRequest";
  }
  protected:
  explicit RunAggregationQueryRequest(::google::protobuf::Arena* arena);
  RunAggregationQueryRequest(::google::protobuf::Arena* arena, const RunAggregationQueryRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kParentFieldNumber = 1,
    kStructuredAggregationQueryFieldNumber = 2,
    kTransactionFieldNumber = 4,
    kNewTransactionFieldNumber = 5,
    kReadTimeFieldNumber = 6,
  };
  // string parent = 1;
  void clear_parent() ;
  const std::string& parent() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_parent(Arg_&& arg, Args_... args);
  std::string* mutable_parent();
  PROTOBUF_NODISCARD std::string* release_parent();
  void set_allocated_parent(std::string* value);

  private:
  const std::string& _internal_parent() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_parent(
      const std::string& value);
  std::string* _internal_mutable_parent();

  public:
  // .google.firestore.v1.StructuredAggregationQuery structured_aggregation_query = 2;
  bool has_structured_aggregation_query() const;
  private:
  bool _internal_has_structured_aggregation_query() const;

  public:
  void clear_structured_aggregation_query() ;
  const ::google::firestore::v1::StructuredAggregationQuery& structured_aggregation_query() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::StructuredAggregationQuery* release_structured_aggregation_query();
  ::google::firestore::v1::StructuredAggregationQuery* mutable_structured_aggregation_query();
  void set_allocated_structured_aggregation_query(::google::firestore::v1::StructuredAggregationQuery* value);
  void unsafe_arena_set_allocated_structured_aggregation_query(::google::firestore::v1::StructuredAggregationQuery* value);
  ::google::firestore::v1::StructuredAggregationQuery* unsafe_arena_release_structured_aggregation_query();

  private:
  const ::google::firestore::v1::StructuredAggregationQuery& _internal_structured_aggregation_query() const;
  ::google::firestore::v1::StructuredAggregationQuery* _internal_mutable_structured_aggregation_query();

  public:
  // bytes transaction = 4;
  bool has_transaction() const;
  void clear_transaction() ;
  const std::string& transaction() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_transaction(Arg_&& arg, Args_... args);
  std::string* mutable_transaction();
  PROTOBUF_NODISCARD std::string* release_transaction();
  void set_allocated_transaction(std::string* value);

  private:
  const std::string& _internal_transaction() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_transaction(
      const std::string& value);
  std::string* _internal_mutable_transaction();

  public:
  // .google.firestore.v1.TransactionOptions new_transaction = 5;
  bool has_new_transaction() const;
  private:
  bool _internal_has_new_transaction() const;

  public:
  void clear_new_transaction() ;
  const ::google::firestore::v1::TransactionOptions& new_transaction() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::TransactionOptions* release_new_transaction();
  ::google::firestore::v1::TransactionOptions* mutable_new_transaction();
  void set_allocated_new_transaction(::google::firestore::v1::TransactionOptions* value);
  void unsafe_arena_set_allocated_new_transaction(::google::firestore::v1::TransactionOptions* value);
  ::google::firestore::v1::TransactionOptions* unsafe_arena_release_new_transaction();

  private:
  const ::google::firestore::v1::TransactionOptions& _internal_new_transaction() const;
  ::google::firestore::v1::TransactionOptions* _internal_mutable_new_transaction();

  public:
  // .google.protobuf.Timestamp read_time = 6;
  bool has_read_time() const;
  private:
  bool _internal_has_read_time() const;

  public:
  void clear_read_time() ;
  const ::google::protobuf::Timestamp& read_time() const;
  PROTOBUF_NODISCARD ::google::protobuf::Timestamp* release_read_time();
  ::google::protobuf::Timestamp* mutable_read_time();
  void set_allocated_read_time(::google::protobuf::Timestamp* value);
  void unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value);
  ::google::protobuf::Timestamp* unsafe_arena_release_read_time();

  private:
  const ::google::protobuf::Timestamp& _internal_read_time() const;
  ::google::protobuf::Timestamp* _internal_mutable_read_time();

  public:
  void clear_query_type();
  QueryTypeCase query_type_case() const;
  void clear_consistency_selector();
  ConsistencySelectorCase consistency_selector_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.RunAggregationQueryRequest)
 private:
  class _Internal;
  void set_has_structured_aggregation_query();
  void set_has_transaction();
  void set_has_new_transaction();
  void set_has_read_time();

  inline bool has_query_type() const;
  inline void clear_has_query_type();

  inline bool has_consistency_selector() const;
  inline void clear_has_consistency_selector();

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 5, 3,
      61, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::ArenaStringPtr parent_;
    union QueryTypeUnion {
      constexpr QueryTypeUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::firestore::v1::StructuredAggregationQuery* structured_aggregation_query_;
    } query_type_;
    union ConsistencySelectorUnion {
      constexpr ConsistencySelectorUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::internal::ArenaStringPtr transaction_;
      ::google::firestore::v1::TransactionOptions* new_transaction_;
      ::google::protobuf::Timestamp* read_time_;
    } consistency_selector_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[2];

    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};// -------------------------------------------------------------------

class ListenRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.ListenRequest) */ {
 public:
  inline ListenRequest() : ListenRequest(nullptr) {}
  ~ListenRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR ListenRequest(::google::protobuf::internal::ConstantInitialized);

  inline ListenRequest(const ListenRequest& from)
      : ListenRequest(nullptr, from) {}
  ListenRequest(ListenRequest&& from) noexcept
    : ListenRequest() {
    *this = ::std::move(from);
  }

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

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

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ListenRequest& default_instance() {
    return *internal_default_instance();
  }
  enum TargetChangeCase {
    kAddTarget = 2,
    kRemoveTarget = 3,
    TARGET_CHANGE_NOT_SET = 0,
  };

  static inline const ListenRequest* internal_default_instance() {
    return reinterpret_cast<const ListenRequest*>(
               &_ListenRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    21;

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

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

  ListenRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ListenRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ListenRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const ListenRequest& from) {
    ListenRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  ::google::protobuf::internal::CachedSize* AccessCachedSize() const final;
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(ListenRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.ListenRequest";
  }
  protected:
  explicit ListenRequest(::google::protobuf::Arena* arena);
  ListenRequest(::google::protobuf::Arena* arena, const ListenRequest& from);
  public:

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

  ::google::protobuf::Metadata GetMetadata() const final;

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


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

  enum : int {
    kLabelsFieldNumber = 4,
    kDatabaseFieldNumber = 1,
    kAddTargetFieldNumber = 2,
    kRemoveTargetFieldNumber = 3,
  };
  // map<string, string> labels = 4;
  int labels_size() const;
  private:
  int _internal_labels_size() const;

  public:
  void clear_labels() ;
  const ::google::protobuf::Map<std::string, std::string>& labels() const;
  ::google::protobuf::Map<std::string, std::string>* mutable_labels();

  private:
  const ::google::protobuf::Map<std::string, std::string>& _internal_labels() const;
  ::google::protobuf::Map<std::string, std::string>* _internal_mutable_labels();

  public:
  // string database = 1;
  void clear_database() ;
  const std::string& database() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_database(Arg_&& arg, Args_... args);
  std::string* mutable_database();
  PROTOBUF_NODISCARD std::string* release_database();
  void set_allocated_database(std::string* value);

  private:
  const std::string& _internal_database() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_database(
      const std::string& value);
  std::string* _internal_mutable_database();

  public:
  // .google.firestore.v1.Target add_target = 2;
  bool has_add_target() const;
  private:
  bool _internal_has_add_target() const;

  public:
  void clear_add_target() ;
  const ::google::firestore::v1::Target& add_target() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::Target* release_add_target();
  ::google::firestore::v1::Target* mutable_add_target();
  void set_allocated_add_target(::google::firestore::v1::Target* value);
  void unsafe_arena_set_allocated_add_target(::google::firestore::v1::Target* value);
  ::google::firestore::v1::Target* unsafe_arena_release_add_target();

  private:
  const ::google::firestore::v1::Target& _internal_add_target() const;
  ::google::firestore::v1::Target* _internal_mutable_add_target();

  public:
  // int32 remove_target = 3;
  bool has_remove_target() const;
  void clear_remove_target() ;
  ::int32_t remove_target() const;
  void set_remove_target(::int32_t value);

  private:
  ::int32_t _internal_remove_target() const;
  void _internal_set_remove_target(::int32_t value);

  public:
  void clear_target_change();
  TargetChangeCase target_change_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.ListenRequest)
 private:
  class _Internal;
  void set_has_add_target();
  void set_has_remove_target();

  inline bool has_target_change() const;
  inline void clear_has_target_change();

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 4, 2,
      56, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {

        inline explicit constexpr Impl_(
            ::google::protobuf::internal::ConstantInitialized) noexcept;
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena);
        inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                              ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::MapField<ListenRequest_LabelsEntry_DoNotUse, std::string, std::string,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING>
        labels_;
    ::google::protobuf::internal::ArenaStringPtr database_;
    union TargetChangeUnion {
      constexpr TargetChangeUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::firestore::v1::Target* add_target_;
      ::int32_t remove_target_;
    } target_change_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];

    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2ffirestore_2eproto;
};

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




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


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

// GetDocumentRequest

// string name = 1;
inline void GetDocumentRequest::clear_name() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.name_.ClearToEmpty();
}
inline const std::string& GetDocumentRequest::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.GetDocumentRequest.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetDocumentRequest::set_name(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.GetDocumentRequest.name)
}
inline std::string* GetDocumentRequest::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.GetDocumentRequest.name)
  return _s;
}
inline const std::string& GetDocumentRequest::_internal_name() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.name_.Get();
}
inline void GetDocumentRequest::_internal_set_name(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.name_.Set(value, GetArena());
}
inline std::string* GetDocumentRequest::_internal_mutable_name() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.name_.Mutable( GetArena());
}
inline std::string* GetDocumentRequest::release_name() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.GetDocumentRequest.name)
  return _impl_.name_.Release();
}
inline void GetDocumentRequest::set_allocated_name(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.name_.IsDefault()) {
          _impl_.name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.GetDocumentRequest.name)
}

// .google.firestore.v1.DocumentMask mask = 2;
inline bool GetDocumentRequest::has_mask() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.mask_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::DocumentMask& GetDocumentRequest::_internal_mask() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::DocumentMask* p = _impl_.mask_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::DocumentMask&>(::google::firestore::v1::_DocumentMask_default_instance_);
}
inline const ::google::firestore::v1::DocumentMask& GetDocumentRequest::mask() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.GetDocumentRequest.mask)
  return _internal_mask();
}
inline void GetDocumentRequest::unsafe_arena_set_allocated_mask(::google::firestore::v1::DocumentMask* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.mask_);
  }
  _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.GetDocumentRequest.mask)
}
inline ::google::firestore::v1::DocumentMask* GetDocumentRequest::release_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::DocumentMask* released = _impl_.mask_;
  _impl_.mask_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::firestore::v1::DocumentMask* GetDocumentRequest::unsafe_arena_release_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.GetDocumentRequest.mask)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::DocumentMask* temp = _impl_.mask_;
  _impl_.mask_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::DocumentMask* GetDocumentRequest::_internal_mutable_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.mask_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::DocumentMask>(GetArena());
    _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(p);
  }
  return _impl_.mask_;
}
inline ::google::firestore::v1::DocumentMask* GetDocumentRequest::mutable_mask() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::DocumentMask* _msg = _internal_mutable_mask();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.GetDocumentRequest.mask)
  return _msg;
}
inline void GetDocumentRequest::set_allocated_mask(::google::firestore::v1::DocumentMask* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.mask_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.GetDocumentRequest.mask)
}

// bytes transaction = 3;
inline bool GetDocumentRequest::has_transaction() const {
  return consistency_selector_case() == kTransaction;
}
inline void GetDocumentRequest::set_has_transaction() {
  _impl_._oneof_case_[0] = kTransaction;
}
inline void GetDocumentRequest::clear_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() == kTransaction) {
    _impl_.consistency_selector_.transaction_.Destroy();
    clear_has_consistency_selector();
  }
}
inline const std::string& GetDocumentRequest::transaction() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.GetDocumentRequest.transaction)
  return _internal_transaction();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetDocumentRequest::set_transaction(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  _impl_.consistency_selector_.transaction_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.GetDocumentRequest.transaction)
}
inline std::string* GetDocumentRequest::mutable_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.GetDocumentRequest.transaction)
  return _s;
}
inline const std::string& GetDocumentRequest::_internal_transaction() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.consistency_selector_.transaction_.Get();
}
inline void GetDocumentRequest::_internal_set_transaction(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  _impl_.consistency_selector_.transaction_.Set(value, GetArena());
}
inline std::string* GetDocumentRequest::_internal_mutable_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  return _impl_.consistency_selector_.transaction_.Mutable( GetArena());
}
inline std::string* GetDocumentRequest::release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.GetDocumentRequest.transaction)
  if (consistency_selector_case() != kTransaction) {
    return nullptr;
  }
  clear_has_consistency_selector();
  return _impl_.consistency_selector_.transaction_.Release();
}
inline void GetDocumentRequest::set_allocated_transaction(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (has_consistency_selector()) {
    clear_consistency_selector();
  }
  if (value != nullptr) {
    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.GetDocumentRequest.transaction)
}

// .google.protobuf.Timestamp read_time = 5;
inline bool GetDocumentRequest::has_read_time() const {
  return consistency_selector_case() == kReadTime;
}
inline bool GetDocumentRequest::_internal_has_read_time() const {
  return consistency_selector_case() == kReadTime;
}
inline void GetDocumentRequest::set_has_read_time() {
  _impl_._oneof_case_[0] = kReadTime;
}
inline ::google::protobuf::Timestamp* GetDocumentRequest::release_read_time() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.GetDocumentRequest.read_time)
  if (consistency_selector_case() == kReadTime) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.read_time_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.consistency_selector_.read_time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::protobuf::Timestamp& GetDocumentRequest::_internal_read_time() const {
  return consistency_selector_case() == kReadTime ? *_impl_.consistency_selector_.read_time_ : reinterpret_cast<::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& GetDocumentRequest::read_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.GetDocumentRequest.read_time)
  return _internal_read_time();
}
inline ::google::protobuf::Timestamp* GetDocumentRequest::unsafe_arena_release_read_time() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.GetDocumentRequest.read_time)
  if (consistency_selector_case() == kReadTime) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.read_time_;
    _impl_.consistency_selector_.read_time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void GetDocumentRequest::unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* 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_consistency_selector();
  if (value) {
    set_has_read_time();
    _impl_.consistency_selector_.read_time_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.GetDocumentRequest.read_time)
}
inline ::google::protobuf::Timestamp* GetDocumentRequest::_internal_mutable_read_time() {
  if (consistency_selector_case() != kReadTime) {
    clear_consistency_selector();
    set_has_read_time();
    _impl_.consistency_selector_.read_time_ = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArena());
  }
  return _impl_.consistency_selector_.read_time_;
}
inline ::google::protobuf::Timestamp* GetDocumentRequest::mutable_read_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_read_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.GetDocumentRequest.read_time)
  return _msg;
}

inline bool GetDocumentRequest::has_consistency_selector() const {
  return consistency_selector_case() != CONSISTENCY_SELECTOR_NOT_SET;
}
inline void GetDocumentRequest::clear_has_consistency_selector() {
  _impl_._oneof_case_[0] = CONSISTENCY_SELECTOR_NOT_SET;
}
inline GetDocumentRequest::ConsistencySelectorCase GetDocumentRequest::consistency_selector_case() const {
  return GetDocumentRequest::ConsistencySelectorCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// ListDocumentsRequest

// string parent = 1;
inline void ListDocumentsRequest::clear_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.parent_.ClearToEmpty();
}
inline const std::string& ListDocumentsRequest::parent() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListDocumentsRequest.parent)
  return _internal_parent();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListDocumentsRequest::set_parent(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.parent_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListDocumentsRequest.parent)
}
inline std::string* ListDocumentsRequest::mutable_parent() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_parent();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListDocumentsRequest.parent)
  return _s;
}
inline const std::string& ListDocumentsRequest::_internal_parent() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.parent_.Get();
}
inline void ListDocumentsRequest::_internal_set_parent(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.parent_.Set(value, GetArena());
}
inline std::string* ListDocumentsRequest::_internal_mutable_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.parent_.Mutable( GetArena());
}
inline std::string* ListDocumentsRequest::release_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListDocumentsRequest.parent)
  return _impl_.parent_.Release();
}
inline void ListDocumentsRequest::set_allocated_parent(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.parent_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.parent_.IsDefault()) {
          _impl_.parent_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.ListDocumentsRequest.parent)
}

// string collection_id = 2;
inline void ListDocumentsRequest::clear_collection_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.collection_id_.ClearToEmpty();
}
inline const std::string& ListDocumentsRequest::collection_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListDocumentsRequest.collection_id)
  return _internal_collection_id();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListDocumentsRequest::set_collection_id(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.collection_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListDocumentsRequest.collection_id)
}
inline std::string* ListDocumentsRequest::mutable_collection_id() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_collection_id();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListDocumentsRequest.collection_id)
  return _s;
}
inline const std::string& ListDocumentsRequest::_internal_collection_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.collection_id_.Get();
}
inline void ListDocumentsRequest::_internal_set_collection_id(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.collection_id_.Set(value, GetArena());
}
inline std::string* ListDocumentsRequest::_internal_mutable_collection_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.collection_id_.Mutable( GetArena());
}
inline std::string* ListDocumentsRequest::release_collection_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListDocumentsRequest.collection_id)
  return _impl_.collection_id_.Release();
}
inline void ListDocumentsRequest::set_allocated_collection_id(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.collection_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.collection_id_.IsDefault()) {
          _impl_.collection_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.ListDocumentsRequest.collection_id)
}

// int32 page_size = 3;
inline void ListDocumentsRequest::clear_page_size() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.page_size_ = 0;
}
inline ::int32_t ListDocumentsRequest::page_size() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListDocumentsRequest.page_size)
  return _internal_page_size();
}
inline void ListDocumentsRequest::set_page_size(::int32_t value) {
  _internal_set_page_size(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListDocumentsRequest.page_size)
}
inline ::int32_t ListDocumentsRequest::_internal_page_size() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.page_size_;
}
inline void ListDocumentsRequest::_internal_set_page_size(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.page_size_ = value;
}

// string page_token = 4;
inline void ListDocumentsRequest::clear_page_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.page_token_.ClearToEmpty();
}
inline const std::string& ListDocumentsRequest::page_token() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListDocumentsRequest.page_token)
  return _internal_page_token();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListDocumentsRequest::set_page_token(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.page_token_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListDocumentsRequest.page_token)
}
inline std::string* ListDocumentsRequest::mutable_page_token() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_page_token();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListDocumentsRequest.page_token)
  return _s;
}
inline const std::string& ListDocumentsRequest::_internal_page_token() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.page_token_.Get();
}
inline void ListDocumentsRequest::_internal_set_page_token(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.page_token_.Set(value, GetArena());
}
inline std::string* ListDocumentsRequest::_internal_mutable_page_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.page_token_.Mutable( GetArena());
}
inline std::string* ListDocumentsRequest::release_page_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListDocumentsRequest.page_token)
  return _impl_.page_token_.Release();
}
inline void ListDocumentsRequest::set_allocated_page_token(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.page_token_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.page_token_.IsDefault()) {
          _impl_.page_token_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.ListDocumentsRequest.page_token)
}

// string order_by = 6;
inline void ListDocumentsRequest::clear_order_by() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.order_by_.ClearToEmpty();
}
inline const std::string& ListDocumentsRequest::order_by() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListDocumentsRequest.order_by)
  return _internal_order_by();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListDocumentsRequest::set_order_by(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.order_by_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListDocumentsRequest.order_by)
}
inline std::string* ListDocumentsRequest::mutable_order_by() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_order_by();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListDocumentsRequest.order_by)
  return _s;
}
inline const std::string& ListDocumentsRequest::_internal_order_by() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.order_by_.Get();
}
inline void ListDocumentsRequest::_internal_set_order_by(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.order_by_.Set(value, GetArena());
}
inline std::string* ListDocumentsRequest::_internal_mutable_order_by() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.order_by_.Mutable( GetArena());
}
inline std::string* ListDocumentsRequest::release_order_by() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListDocumentsRequest.order_by)
  return _impl_.order_by_.Release();
}
inline void ListDocumentsRequest::set_allocated_order_by(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.order_by_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.order_by_.IsDefault()) {
          _impl_.order_by_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.ListDocumentsRequest.order_by)
}

// .google.firestore.v1.DocumentMask mask = 7;
inline bool ListDocumentsRequest::has_mask() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.mask_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::DocumentMask& ListDocumentsRequest::_internal_mask() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::DocumentMask* p = _impl_.mask_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::DocumentMask&>(::google::firestore::v1::_DocumentMask_default_instance_);
}
inline const ::google::firestore::v1::DocumentMask& ListDocumentsRequest::mask() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListDocumentsRequest.mask)
  return _internal_mask();
}
inline void ListDocumentsRequest::unsafe_arena_set_allocated_mask(::google::firestore::v1::DocumentMask* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.mask_);
  }
  _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.ListDocumentsRequest.mask)
}
inline ::google::firestore::v1::DocumentMask* ListDocumentsRequest::release_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::DocumentMask* released = _impl_.mask_;
  _impl_.mask_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::firestore::v1::DocumentMask* ListDocumentsRequest::unsafe_arena_release_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListDocumentsRequest.mask)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::DocumentMask* temp = _impl_.mask_;
  _impl_.mask_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::DocumentMask* ListDocumentsRequest::_internal_mutable_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.mask_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::DocumentMask>(GetArena());
    _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(p);
  }
  return _impl_.mask_;
}
inline ::google::firestore::v1::DocumentMask* ListDocumentsRequest::mutable_mask() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::DocumentMask* _msg = _internal_mutable_mask();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListDocumentsRequest.mask)
  return _msg;
}
inline void ListDocumentsRequest::set_allocated_mask(::google::firestore::v1::DocumentMask* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.mask_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.ListDocumentsRequest.mask)
}

// bytes transaction = 8;
inline bool ListDocumentsRequest::has_transaction() const {
  return consistency_selector_case() == kTransaction;
}
inline void ListDocumentsRequest::set_has_transaction() {
  _impl_._oneof_case_[0] = kTransaction;
}
inline void ListDocumentsRequest::clear_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() == kTransaction) {
    _impl_.consistency_selector_.transaction_.Destroy();
    clear_has_consistency_selector();
  }
}
inline const std::string& ListDocumentsRequest::transaction() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListDocumentsRequest.transaction)
  return _internal_transaction();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListDocumentsRequest::set_transaction(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  _impl_.consistency_selector_.transaction_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListDocumentsRequest.transaction)
}
inline std::string* ListDocumentsRequest::mutable_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListDocumentsRequest.transaction)
  return _s;
}
inline const std::string& ListDocumentsRequest::_internal_transaction() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.consistency_selector_.transaction_.Get();
}
inline void ListDocumentsRequest::_internal_set_transaction(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  _impl_.consistency_selector_.transaction_.Set(value, GetArena());
}
inline std::string* ListDocumentsRequest::_internal_mutable_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  return _impl_.consistency_selector_.transaction_.Mutable( GetArena());
}
inline std::string* ListDocumentsRequest::release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListDocumentsRequest.transaction)
  if (consistency_selector_case() != kTransaction) {
    return nullptr;
  }
  clear_has_consistency_selector();
  return _impl_.consistency_selector_.transaction_.Release();
}
inline void ListDocumentsRequest::set_allocated_transaction(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (has_consistency_selector()) {
    clear_consistency_selector();
  }
  if (value != nullptr) {
    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.ListDocumentsRequest.transaction)
}

// .google.protobuf.Timestamp read_time = 10;
inline bool ListDocumentsRequest::has_read_time() const {
  return consistency_selector_case() == kReadTime;
}
inline bool ListDocumentsRequest::_internal_has_read_time() const {
  return consistency_selector_case() == kReadTime;
}
inline void ListDocumentsRequest::set_has_read_time() {
  _impl_._oneof_case_[0] = kReadTime;
}
inline ::google::protobuf::Timestamp* ListDocumentsRequest::release_read_time() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListDocumentsRequest.read_time)
  if (consistency_selector_case() == kReadTime) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.read_time_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.consistency_selector_.read_time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::protobuf::Timestamp& ListDocumentsRequest::_internal_read_time() const {
  return consistency_selector_case() == kReadTime ? *_impl_.consistency_selector_.read_time_ : reinterpret_cast<::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& ListDocumentsRequest::read_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListDocumentsRequest.read_time)
  return _internal_read_time();
}
inline ::google::protobuf::Timestamp* ListDocumentsRequest::unsafe_arena_release_read_time() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.ListDocumentsRequest.read_time)
  if (consistency_selector_case() == kReadTime) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.read_time_;
    _impl_.consistency_selector_.read_time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ListDocumentsRequest::unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* 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_consistency_selector();
  if (value) {
    set_has_read_time();
    _impl_.consistency_selector_.read_time_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.ListDocumentsRequest.read_time)
}
inline ::google::protobuf::Timestamp* ListDocumentsRequest::_internal_mutable_read_time() {
  if (consistency_selector_case() != kReadTime) {
    clear_consistency_selector();
    set_has_read_time();
    _impl_.consistency_selector_.read_time_ = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArena());
  }
  return _impl_.consistency_selector_.read_time_;
}
inline ::google::protobuf::Timestamp* ListDocumentsRequest::mutable_read_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_read_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListDocumentsRequest.read_time)
  return _msg;
}

// bool show_missing = 12;
inline void ListDocumentsRequest::clear_show_missing() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.show_missing_ = false;
}
inline bool ListDocumentsRequest::show_missing() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListDocumentsRequest.show_missing)
  return _internal_show_missing();
}
inline void ListDocumentsRequest::set_show_missing(bool value) {
  _internal_set_show_missing(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListDocumentsRequest.show_missing)
}
inline bool ListDocumentsRequest::_internal_show_missing() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.show_missing_;
}
inline void ListDocumentsRequest::_internal_set_show_missing(bool value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.show_missing_ = value;
}

inline bool ListDocumentsRequest::has_consistency_selector() const {
  return consistency_selector_case() != CONSISTENCY_SELECTOR_NOT_SET;
}
inline void ListDocumentsRequest::clear_has_consistency_selector() {
  _impl_._oneof_case_[0] = CONSISTENCY_SELECTOR_NOT_SET;
}
inline ListDocumentsRequest::ConsistencySelectorCase ListDocumentsRequest::consistency_selector_case() const {
  return ListDocumentsRequest::ConsistencySelectorCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// ListDocumentsResponse

// repeated .google.firestore.v1.Document documents = 1;
inline int ListDocumentsResponse::_internal_documents_size() const {
  return _internal_documents().size();
}
inline int ListDocumentsResponse::documents_size() const {
  return _internal_documents_size();
}
inline ::google::firestore::v1::Document* ListDocumentsResponse::mutable_documents(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListDocumentsResponse.documents)
  return _internal_mutable_documents()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Document>* ListDocumentsResponse::mutable_documents()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.ListDocumentsResponse.documents)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_documents();
}
inline const ::google::firestore::v1::Document& ListDocumentsResponse::documents(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListDocumentsResponse.documents)
  return _internal_documents().Get(index);
}
inline ::google::firestore::v1::Document* ListDocumentsResponse::add_documents() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::google::firestore::v1::Document* _add = _internal_mutable_documents()->Add();
  // @@protoc_insertion_point(field_add:google.firestore.v1.ListDocumentsResponse.documents)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Document>& ListDocumentsResponse::documents() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.ListDocumentsResponse.documents)
  return _internal_documents();
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Document>&
ListDocumentsResponse::_internal_documents() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.documents_;
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Document>*
ListDocumentsResponse::_internal_mutable_documents() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.documents_;
}

// string next_page_token = 2;
inline void ListDocumentsResponse::clear_next_page_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.next_page_token_.ClearToEmpty();
}
inline const std::string& ListDocumentsResponse::next_page_token() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListDocumentsResponse.next_page_token)
  return _internal_next_page_token();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListDocumentsResponse::set_next_page_token(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.next_page_token_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListDocumentsResponse.next_page_token)
}
inline std::string* ListDocumentsResponse::mutable_next_page_token() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_next_page_token();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListDocumentsResponse.next_page_token)
  return _s;
}
inline const std::string& ListDocumentsResponse::_internal_next_page_token() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.next_page_token_.Get();
}
inline void ListDocumentsResponse::_internal_set_next_page_token(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.next_page_token_.Set(value, GetArena());
}
inline std::string* ListDocumentsResponse::_internal_mutable_next_page_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.next_page_token_.Mutable( GetArena());
}
inline std::string* ListDocumentsResponse::release_next_page_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListDocumentsResponse.next_page_token)
  return _impl_.next_page_token_.Release();
}
inline void ListDocumentsResponse::set_allocated_next_page_token(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.next_page_token_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.next_page_token_.IsDefault()) {
          _impl_.next_page_token_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.ListDocumentsResponse.next_page_token)
}

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

// CreateDocumentRequest

// string parent = 1;
inline void CreateDocumentRequest::clear_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.parent_.ClearToEmpty();
}
inline const std::string& CreateDocumentRequest::parent() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.CreateDocumentRequest.parent)
  return _internal_parent();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void CreateDocumentRequest::set_parent(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.parent_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.CreateDocumentRequest.parent)
}
inline std::string* CreateDocumentRequest::mutable_parent() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_parent();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.CreateDocumentRequest.parent)
  return _s;
}
inline const std::string& CreateDocumentRequest::_internal_parent() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.parent_.Get();
}
inline void CreateDocumentRequest::_internal_set_parent(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.parent_.Set(value, GetArena());
}
inline std::string* CreateDocumentRequest::_internal_mutable_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.parent_.Mutable( GetArena());
}
inline std::string* CreateDocumentRequest::release_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.CreateDocumentRequest.parent)
  return _impl_.parent_.Release();
}
inline void CreateDocumentRequest::set_allocated_parent(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.parent_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.parent_.IsDefault()) {
          _impl_.parent_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.CreateDocumentRequest.parent)
}

// string collection_id = 2;
inline void CreateDocumentRequest::clear_collection_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.collection_id_.ClearToEmpty();
}
inline const std::string& CreateDocumentRequest::collection_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.CreateDocumentRequest.collection_id)
  return _internal_collection_id();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void CreateDocumentRequest::set_collection_id(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.collection_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.CreateDocumentRequest.collection_id)
}
inline std::string* CreateDocumentRequest::mutable_collection_id() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_collection_id();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.CreateDocumentRequest.collection_id)
  return _s;
}
inline const std::string& CreateDocumentRequest::_internal_collection_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.collection_id_.Get();
}
inline void CreateDocumentRequest::_internal_set_collection_id(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.collection_id_.Set(value, GetArena());
}
inline std::string* CreateDocumentRequest::_internal_mutable_collection_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.collection_id_.Mutable( GetArena());
}
inline std::string* CreateDocumentRequest::release_collection_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.CreateDocumentRequest.collection_id)
  return _impl_.collection_id_.Release();
}
inline void CreateDocumentRequest::set_allocated_collection_id(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.collection_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.collection_id_.IsDefault()) {
          _impl_.collection_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.CreateDocumentRequest.collection_id)
}

// string document_id = 3;
inline void CreateDocumentRequest::clear_document_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.document_id_.ClearToEmpty();
}
inline const std::string& CreateDocumentRequest::document_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.CreateDocumentRequest.document_id)
  return _internal_document_id();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void CreateDocumentRequest::set_document_id(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.document_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.CreateDocumentRequest.document_id)
}
inline std::string* CreateDocumentRequest::mutable_document_id() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_document_id();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.CreateDocumentRequest.document_id)
  return _s;
}
inline const std::string& CreateDocumentRequest::_internal_document_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.document_id_.Get();
}
inline void CreateDocumentRequest::_internal_set_document_id(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.document_id_.Set(value, GetArena());
}
inline std::string* CreateDocumentRequest::_internal_mutable_document_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.document_id_.Mutable( GetArena());
}
inline std::string* CreateDocumentRequest::release_document_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.CreateDocumentRequest.document_id)
  return _impl_.document_id_.Release();
}
inline void CreateDocumentRequest::set_allocated_document_id(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.document_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.document_id_.IsDefault()) {
          _impl_.document_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.CreateDocumentRequest.document_id)
}

// .google.firestore.v1.Document document = 4;
inline bool CreateDocumentRequest::has_document() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.document_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::Document& CreateDocumentRequest::_internal_document() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::Document* p = _impl_.document_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::Document&>(::google::firestore::v1::_Document_default_instance_);
}
inline const ::google::firestore::v1::Document& CreateDocumentRequest::document() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.CreateDocumentRequest.document)
  return _internal_document();
}
inline void CreateDocumentRequest::unsafe_arena_set_allocated_document(::google::firestore::v1::Document* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.document_);
  }
  _impl_.document_ = reinterpret_cast<::google::firestore::v1::Document*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.CreateDocumentRequest.document)
}
inline ::google::firestore::v1::Document* CreateDocumentRequest::release_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::Document* released = _impl_.document_;
  _impl_.document_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::firestore::v1::Document* CreateDocumentRequest::unsafe_arena_release_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.CreateDocumentRequest.document)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::Document* temp = _impl_.document_;
  _impl_.document_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::Document* CreateDocumentRequest::_internal_mutable_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.document_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::Document>(GetArena());
    _impl_.document_ = reinterpret_cast<::google::firestore::v1::Document*>(p);
  }
  return _impl_.document_;
}
inline ::google::firestore::v1::Document* CreateDocumentRequest::mutable_document() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Document* _msg = _internal_mutable_document();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.CreateDocumentRequest.document)
  return _msg;
}
inline void CreateDocumentRequest::set_allocated_document(::google::firestore::v1::Document* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.document_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.document_ = reinterpret_cast<::google::firestore::v1::Document*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.CreateDocumentRequest.document)
}

// .google.firestore.v1.DocumentMask mask = 5;
inline bool CreateDocumentRequest::has_mask() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.mask_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::DocumentMask& CreateDocumentRequest::_internal_mask() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::DocumentMask* p = _impl_.mask_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::DocumentMask&>(::google::firestore::v1::_DocumentMask_default_instance_);
}
inline const ::google::firestore::v1::DocumentMask& CreateDocumentRequest::mask() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.CreateDocumentRequest.mask)
  return _internal_mask();
}
inline void CreateDocumentRequest::unsafe_arena_set_allocated_mask(::google::firestore::v1::DocumentMask* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.mask_);
  }
  _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.CreateDocumentRequest.mask)
}
inline ::google::firestore::v1::DocumentMask* CreateDocumentRequest::release_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::firestore::v1::DocumentMask* released = _impl_.mask_;
  _impl_.mask_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::firestore::v1::DocumentMask* CreateDocumentRequest::unsafe_arena_release_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.CreateDocumentRequest.mask)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::firestore::v1::DocumentMask* temp = _impl_.mask_;
  _impl_.mask_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::DocumentMask* CreateDocumentRequest::_internal_mutable_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000002u;
  if (_impl_.mask_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::DocumentMask>(GetArena());
    _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(p);
  }
  return _impl_.mask_;
}
inline ::google::firestore::v1::DocumentMask* CreateDocumentRequest::mutable_mask() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::DocumentMask* _msg = _internal_mutable_mask();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.CreateDocumentRequest.mask)
  return _msg;
}
inline void CreateDocumentRequest::set_allocated_mask(::google::firestore::v1::DocumentMask* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.mask_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.CreateDocumentRequest.mask)
}

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

// UpdateDocumentRequest

// .google.firestore.v1.Document document = 1;
inline bool UpdateDocumentRequest::has_document() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.document_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::Document& UpdateDocumentRequest::_internal_document() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::Document* p = _impl_.document_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::Document&>(::google::firestore::v1::_Document_default_instance_);
}
inline const ::google::firestore::v1::Document& UpdateDocumentRequest::document() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.UpdateDocumentRequest.document)
  return _internal_document();
}
inline void UpdateDocumentRequest::unsafe_arena_set_allocated_document(::google::firestore::v1::Document* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.document_);
  }
  _impl_.document_ = reinterpret_cast<::google::firestore::v1::Document*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.UpdateDocumentRequest.document)
}
inline ::google::firestore::v1::Document* UpdateDocumentRequest::release_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::Document* released = _impl_.document_;
  _impl_.document_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::firestore::v1::Document* UpdateDocumentRequest::unsafe_arena_release_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.UpdateDocumentRequest.document)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::Document* temp = _impl_.document_;
  _impl_.document_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::Document* UpdateDocumentRequest::_internal_mutable_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.document_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::Document>(GetArena());
    _impl_.document_ = reinterpret_cast<::google::firestore::v1::Document*>(p);
  }
  return _impl_.document_;
}
inline ::google::firestore::v1::Document* UpdateDocumentRequest::mutable_document() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Document* _msg = _internal_mutable_document();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.UpdateDocumentRequest.document)
  return _msg;
}
inline void UpdateDocumentRequest::set_allocated_document(::google::firestore::v1::Document* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.document_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.document_ = reinterpret_cast<::google::firestore::v1::Document*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.UpdateDocumentRequest.document)
}

// .google.firestore.v1.DocumentMask update_mask = 2;
inline bool UpdateDocumentRequest::has_update_mask() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.update_mask_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::DocumentMask& UpdateDocumentRequest::_internal_update_mask() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::DocumentMask* p = _impl_.update_mask_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::DocumentMask&>(::google::firestore::v1::_DocumentMask_default_instance_);
}
inline const ::google::firestore::v1::DocumentMask& UpdateDocumentRequest::update_mask() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.UpdateDocumentRequest.update_mask)
  return _internal_update_mask();
}
inline void UpdateDocumentRequest::unsafe_arena_set_allocated_update_mask(::google::firestore::v1::DocumentMask* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.update_mask_);
  }
  _impl_.update_mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.UpdateDocumentRequest.update_mask)
}
inline ::google::firestore::v1::DocumentMask* UpdateDocumentRequest::release_update_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::firestore::v1::DocumentMask* released = _impl_.update_mask_;
  _impl_.update_mask_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::firestore::v1::DocumentMask* UpdateDocumentRequest::unsafe_arena_release_update_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.UpdateDocumentRequest.update_mask)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::firestore::v1::DocumentMask* temp = _impl_.update_mask_;
  _impl_.update_mask_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::DocumentMask* UpdateDocumentRequest::_internal_mutable_update_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000002u;
  if (_impl_.update_mask_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::DocumentMask>(GetArena());
    _impl_.update_mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(p);
  }
  return _impl_.update_mask_;
}
inline ::google::firestore::v1::DocumentMask* UpdateDocumentRequest::mutable_update_mask() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::DocumentMask* _msg = _internal_mutable_update_mask();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.UpdateDocumentRequest.update_mask)
  return _msg;
}
inline void UpdateDocumentRequest::set_allocated_update_mask(::google::firestore::v1::DocumentMask* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.update_mask_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.update_mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.UpdateDocumentRequest.update_mask)
}

// .google.firestore.v1.DocumentMask mask = 3;
inline bool UpdateDocumentRequest::has_mask() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.mask_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::DocumentMask& UpdateDocumentRequest::_internal_mask() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::DocumentMask* p = _impl_.mask_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::DocumentMask&>(::google::firestore::v1::_DocumentMask_default_instance_);
}
inline const ::google::firestore::v1::DocumentMask& UpdateDocumentRequest::mask() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.UpdateDocumentRequest.mask)
  return _internal_mask();
}
inline void UpdateDocumentRequest::unsafe_arena_set_allocated_mask(::google::firestore::v1::DocumentMask* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.mask_);
  }
  _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.UpdateDocumentRequest.mask)
}
inline ::google::firestore::v1::DocumentMask* UpdateDocumentRequest::release_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::google::firestore::v1::DocumentMask* released = _impl_.mask_;
  _impl_.mask_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::firestore::v1::DocumentMask* UpdateDocumentRequest::unsafe_arena_release_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.UpdateDocumentRequest.mask)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::google::firestore::v1::DocumentMask* temp = _impl_.mask_;
  _impl_.mask_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::DocumentMask* UpdateDocumentRequest::_internal_mutable_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000004u;
  if (_impl_.mask_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::DocumentMask>(GetArena());
    _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(p);
  }
  return _impl_.mask_;
}
inline ::google::firestore::v1::DocumentMask* UpdateDocumentRequest::mutable_mask() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::DocumentMask* _msg = _internal_mutable_mask();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.UpdateDocumentRequest.mask)
  return _msg;
}
inline void UpdateDocumentRequest::set_allocated_mask(::google::firestore::v1::DocumentMask* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.mask_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }

  _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.UpdateDocumentRequest.mask)
}

// .google.firestore.v1.Precondition current_document = 4;
inline bool UpdateDocumentRequest::has_current_document() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.current_document_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::Precondition& UpdateDocumentRequest::_internal_current_document() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::Precondition* p = _impl_.current_document_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::Precondition&>(::google::firestore::v1::_Precondition_default_instance_);
}
inline const ::google::firestore::v1::Precondition& UpdateDocumentRequest::current_document() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.UpdateDocumentRequest.current_document)
  return _internal_current_document();
}
inline void UpdateDocumentRequest::unsafe_arena_set_allocated_current_document(::google::firestore::v1::Precondition* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.current_document_);
  }
  _impl_.current_document_ = reinterpret_cast<::google::firestore::v1::Precondition*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.UpdateDocumentRequest.current_document)
}
inline ::google::firestore::v1::Precondition* UpdateDocumentRequest::release_current_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::google::firestore::v1::Precondition* released = _impl_.current_document_;
  _impl_.current_document_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::firestore::v1::Precondition* UpdateDocumentRequest::unsafe_arena_release_current_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.UpdateDocumentRequest.current_document)

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::google::firestore::v1::Precondition* temp = _impl_.current_document_;
  _impl_.current_document_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::Precondition* UpdateDocumentRequest::_internal_mutable_current_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000008u;
  if (_impl_.current_document_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::Precondition>(GetArena());
    _impl_.current_document_ = reinterpret_cast<::google::firestore::v1::Precondition*>(p);
  }
  return _impl_.current_document_;
}
inline ::google::firestore::v1::Precondition* UpdateDocumentRequest::mutable_current_document() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Precondition* _msg = _internal_mutable_current_document();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.UpdateDocumentRequest.current_document)
  return _msg;
}
inline void UpdateDocumentRequest::set_allocated_current_document(::google::firestore::v1::Precondition* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.current_document_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }

  _impl_.current_document_ = reinterpret_cast<::google::firestore::v1::Precondition*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.UpdateDocumentRequest.current_document)
}

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

// DeleteDocumentRequest

// string name = 1;
inline void DeleteDocumentRequest::clear_name() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.name_.ClearToEmpty();
}
inline const std::string& DeleteDocumentRequest::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DeleteDocumentRequest.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void DeleteDocumentRequest::set_name(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.DeleteDocumentRequest.name)
}
inline std::string* DeleteDocumentRequest::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DeleteDocumentRequest.name)
  return _s;
}
inline const std::string& DeleteDocumentRequest::_internal_name() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.name_.Get();
}
inline void DeleteDocumentRequest::_internal_set_name(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.name_.Set(value, GetArena());
}
inline std::string* DeleteDocumentRequest::_internal_mutable_name() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.name_.Mutable( GetArena());
}
inline std::string* DeleteDocumentRequest::release_name() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.DeleteDocumentRequest.name)
  return _impl_.name_.Release();
}
inline void DeleteDocumentRequest::set_allocated_name(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.name_.IsDefault()) {
          _impl_.name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.DeleteDocumentRequest.name)
}

// .google.firestore.v1.Precondition current_document = 2;
inline bool DeleteDocumentRequest::has_current_document() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.current_document_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::Precondition& DeleteDocumentRequest::_internal_current_document() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::Precondition* p = _impl_.current_document_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::Precondition&>(::google::firestore::v1::_Precondition_default_instance_);
}
inline const ::google::firestore::v1::Precondition& DeleteDocumentRequest::current_document() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DeleteDocumentRequest.current_document)
  return _internal_current_document();
}
inline void DeleteDocumentRequest::unsafe_arena_set_allocated_current_document(::google::firestore::v1::Precondition* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.current_document_);
  }
  _impl_.current_document_ = reinterpret_cast<::google::firestore::v1::Precondition*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.DeleteDocumentRequest.current_document)
}
inline ::google::firestore::v1::Precondition* DeleteDocumentRequest::release_current_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::Precondition* released = _impl_.current_document_;
  _impl_.current_document_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::firestore::v1::Precondition* DeleteDocumentRequest::unsafe_arena_release_current_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.DeleteDocumentRequest.current_document)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::Precondition* temp = _impl_.current_document_;
  _impl_.current_document_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::Precondition* DeleteDocumentRequest::_internal_mutable_current_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.current_document_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::Precondition>(GetArena());
    _impl_.current_document_ = reinterpret_cast<::google::firestore::v1::Precondition*>(p);
  }
  return _impl_.current_document_;
}
inline ::google::firestore::v1::Precondition* DeleteDocumentRequest::mutable_current_document() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Precondition* _msg = _internal_mutable_current_document();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DeleteDocumentRequest.current_document)
  return _msg;
}
inline void DeleteDocumentRequest::set_allocated_current_document(::google::firestore::v1::Precondition* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.current_document_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.current_document_ = reinterpret_cast<::google::firestore::v1::Precondition*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.DeleteDocumentRequest.current_document)
}

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

// BatchGetDocumentsRequest

// string database = 1;
inline void BatchGetDocumentsRequest::clear_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.database_.ClearToEmpty();
}
inline const std::string& BatchGetDocumentsRequest::database() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.BatchGetDocumentsRequest.database)
  return _internal_database();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void BatchGetDocumentsRequest::set_database(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.database_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.BatchGetDocumentsRequest.database)
}
inline std::string* BatchGetDocumentsRequest::mutable_database() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_database();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.BatchGetDocumentsRequest.database)
  return _s;
}
inline const std::string& BatchGetDocumentsRequest::_internal_database() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.database_.Get();
}
inline void BatchGetDocumentsRequest::_internal_set_database(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.database_.Set(value, GetArena());
}
inline std::string* BatchGetDocumentsRequest::_internal_mutable_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.database_.Mutable( GetArena());
}
inline std::string* BatchGetDocumentsRequest::release_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.BatchGetDocumentsRequest.database)
  return _impl_.database_.Release();
}
inline void BatchGetDocumentsRequest::set_allocated_database(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.database_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.database_.IsDefault()) {
          _impl_.database_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.BatchGetDocumentsRequest.database)
}

// repeated string documents = 2;
inline int BatchGetDocumentsRequest::_internal_documents_size() const {
  return _internal_documents().size();
}
inline int BatchGetDocumentsRequest::documents_size() const {
  return _internal_documents_size();
}
inline void BatchGetDocumentsRequest::clear_documents() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.documents_.Clear();
}
inline std::string* BatchGetDocumentsRequest::add_documents()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  std::string* _s = _internal_mutable_documents()->Add();
  // @@protoc_insertion_point(field_add_mutable:google.firestore.v1.BatchGetDocumentsRequest.documents)
  return _s;
}
inline const std::string& BatchGetDocumentsRequest::documents(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.BatchGetDocumentsRequest.documents)
  return _internal_documents().Get(index);
}
inline std::string* BatchGetDocumentsRequest::mutable_documents(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.BatchGetDocumentsRequest.documents)
  return _internal_mutable_documents()->Mutable(index);
}
inline void BatchGetDocumentsRequest::set_documents(int index, const std::string& value) {
  _internal_mutable_documents()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.BatchGetDocumentsRequest.documents)
}
inline void BatchGetDocumentsRequest::set_documents(int index, std::string&& value) {
  _internal_mutable_documents()->Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:google.firestore.v1.BatchGetDocumentsRequest.documents)
}
inline void BatchGetDocumentsRequest::set_documents(int index, const char* value) {
  ABSL_DCHECK(value != nullptr);
  _internal_mutable_documents()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:google.firestore.v1.BatchGetDocumentsRequest.documents)
}
inline void BatchGetDocumentsRequest::set_documents(int index, const char* value,
                              std::size_t size) {
  _internal_mutable_documents()->Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:google.firestore.v1.BatchGetDocumentsRequest.documents)
}
inline void BatchGetDocumentsRequest::set_documents(int index, absl::string_view value) {
  _internal_mutable_documents()->Mutable(index)->assign(value.data(),
                                                     value.size());
  // @@protoc_insertion_point(field_set_string_piece:google.firestore.v1.BatchGetDocumentsRequest.documents)
}
inline void BatchGetDocumentsRequest::add_documents(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_documents()->Add()->assign(value);
  // @@protoc_insertion_point(field_add:google.firestore.v1.BatchGetDocumentsRequest.documents)
}
inline void BatchGetDocumentsRequest::add_documents(std::string&& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_documents()->Add(std::move(value));
  // @@protoc_insertion_point(field_add:google.firestore.v1.BatchGetDocumentsRequest.documents)
}
inline void BatchGetDocumentsRequest::add_documents(const char* value) {
  ABSL_DCHECK(value != nullptr);
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_documents()->Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:google.firestore.v1.BatchGetDocumentsRequest.documents)
}
inline void BatchGetDocumentsRequest::add_documents(const char* value, std::size_t size) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_documents()->Add()->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:google.firestore.v1.BatchGetDocumentsRequest.documents)
}
inline void BatchGetDocumentsRequest::add_documents(absl::string_view value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_documents()->Add()->assign(value.data(), value.size());
  // @@protoc_insertion_point(field_add_string_piece:google.firestore.v1.BatchGetDocumentsRequest.documents)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
BatchGetDocumentsRequest::documents() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.BatchGetDocumentsRequest.documents)
  return _internal_documents();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
BatchGetDocumentsRequest::mutable_documents() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.BatchGetDocumentsRequest.documents)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_documents();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
BatchGetDocumentsRequest::_internal_documents() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.documents_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
BatchGetDocumentsRequest::_internal_mutable_documents() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.documents_;
}

// .google.firestore.v1.DocumentMask mask = 3;
inline bool BatchGetDocumentsRequest::has_mask() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.mask_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::DocumentMask& BatchGetDocumentsRequest::_internal_mask() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::DocumentMask* p = _impl_.mask_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::DocumentMask&>(::google::firestore::v1::_DocumentMask_default_instance_);
}
inline const ::google::firestore::v1::DocumentMask& BatchGetDocumentsRequest::mask() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.BatchGetDocumentsRequest.mask)
  return _internal_mask();
}
inline void BatchGetDocumentsRequest::unsafe_arena_set_allocated_mask(::google::firestore::v1::DocumentMask* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.mask_);
  }
  _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.BatchGetDocumentsRequest.mask)
}
inline ::google::firestore::v1::DocumentMask* BatchGetDocumentsRequest::release_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::DocumentMask* released = _impl_.mask_;
  _impl_.mask_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::firestore::v1::DocumentMask* BatchGetDocumentsRequest::unsafe_arena_release_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.BatchGetDocumentsRequest.mask)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::DocumentMask* temp = _impl_.mask_;
  _impl_.mask_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::DocumentMask* BatchGetDocumentsRequest::_internal_mutable_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.mask_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::DocumentMask>(GetArena());
    _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(p);
  }
  return _impl_.mask_;
}
inline ::google::firestore::v1::DocumentMask* BatchGetDocumentsRequest::mutable_mask() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::DocumentMask* _msg = _internal_mutable_mask();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.BatchGetDocumentsRequest.mask)
  return _msg;
}
inline void BatchGetDocumentsRequest::set_allocated_mask(::google::firestore::v1::DocumentMask* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.mask_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.BatchGetDocumentsRequest.mask)
}

// bytes transaction = 4;
inline bool BatchGetDocumentsRequest::has_transaction() const {
  return consistency_selector_case() == kTransaction;
}
inline void BatchGetDocumentsRequest::set_has_transaction() {
  _impl_._oneof_case_[0] = kTransaction;
}
inline void BatchGetDocumentsRequest::clear_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() == kTransaction) {
    _impl_.consistency_selector_.transaction_.Destroy();
    clear_has_consistency_selector();
  }
}
inline const std::string& BatchGetDocumentsRequest::transaction() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.BatchGetDocumentsRequest.transaction)
  return _internal_transaction();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void BatchGetDocumentsRequest::set_transaction(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  _impl_.consistency_selector_.transaction_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.BatchGetDocumentsRequest.transaction)
}
inline std::string* BatchGetDocumentsRequest::mutable_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.BatchGetDocumentsRequest.transaction)
  return _s;
}
inline const std::string& BatchGetDocumentsRequest::_internal_transaction() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.consistency_selector_.transaction_.Get();
}
inline void BatchGetDocumentsRequest::_internal_set_transaction(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  _impl_.consistency_selector_.transaction_.Set(value, GetArena());
}
inline std::string* BatchGetDocumentsRequest::_internal_mutable_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  return _impl_.consistency_selector_.transaction_.Mutable( GetArena());
}
inline std::string* BatchGetDocumentsRequest::release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.BatchGetDocumentsRequest.transaction)
  if (consistency_selector_case() != kTransaction) {
    return nullptr;
  }
  clear_has_consistency_selector();
  return _impl_.consistency_selector_.transaction_.Release();
}
inline void BatchGetDocumentsRequest::set_allocated_transaction(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (has_consistency_selector()) {
    clear_consistency_selector();
  }
  if (value != nullptr) {
    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.BatchGetDocumentsRequest.transaction)
}

// .google.firestore.v1.TransactionOptions new_transaction = 5;
inline bool BatchGetDocumentsRequest::has_new_transaction() const {
  return consistency_selector_case() == kNewTransaction;
}
inline bool BatchGetDocumentsRequest::_internal_has_new_transaction() const {
  return consistency_selector_case() == kNewTransaction;
}
inline void BatchGetDocumentsRequest::set_has_new_transaction() {
  _impl_._oneof_case_[0] = kNewTransaction;
}
inline ::google::firestore::v1::TransactionOptions* BatchGetDocumentsRequest::release_new_transaction() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.BatchGetDocumentsRequest.new_transaction)
  if (consistency_selector_case() == kNewTransaction) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.new_transaction_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.consistency_selector_.new_transaction_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::TransactionOptions& BatchGetDocumentsRequest::_internal_new_transaction() const {
  return consistency_selector_case() == kNewTransaction ? *_impl_.consistency_selector_.new_transaction_ : reinterpret_cast<::google::firestore::v1::TransactionOptions&>(::google::firestore::v1::_TransactionOptions_default_instance_);
}
inline const ::google::firestore::v1::TransactionOptions& BatchGetDocumentsRequest::new_transaction() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.BatchGetDocumentsRequest.new_transaction)
  return _internal_new_transaction();
}
inline ::google::firestore::v1::TransactionOptions* BatchGetDocumentsRequest::unsafe_arena_release_new_transaction() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.BatchGetDocumentsRequest.new_transaction)
  if (consistency_selector_case() == kNewTransaction) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.new_transaction_;
    _impl_.consistency_selector_.new_transaction_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void BatchGetDocumentsRequest::unsafe_arena_set_allocated_new_transaction(::google::firestore::v1::TransactionOptions* 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_consistency_selector();
  if (value) {
    set_has_new_transaction();
    _impl_.consistency_selector_.new_transaction_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.BatchGetDocumentsRequest.new_transaction)
}
inline ::google::firestore::v1::TransactionOptions* BatchGetDocumentsRequest::_internal_mutable_new_transaction() {
  if (consistency_selector_case() != kNewTransaction) {
    clear_consistency_selector();
    set_has_new_transaction();
    _impl_.consistency_selector_.new_transaction_ = CreateMaybeMessage<::google::firestore::v1::TransactionOptions>(GetArena());
  }
  return _impl_.consistency_selector_.new_transaction_;
}
inline ::google::firestore::v1::TransactionOptions* BatchGetDocumentsRequest::mutable_new_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::TransactionOptions* _msg = _internal_mutable_new_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.BatchGetDocumentsRequest.new_transaction)
  return _msg;
}

// .google.protobuf.Timestamp read_time = 7;
inline bool BatchGetDocumentsRequest::has_read_time() const {
  return consistency_selector_case() == kReadTime;
}
inline bool BatchGetDocumentsRequest::_internal_has_read_time() const {
  return consistency_selector_case() == kReadTime;
}
inline void BatchGetDocumentsRequest::set_has_read_time() {
  _impl_._oneof_case_[0] = kReadTime;
}
inline ::google::protobuf::Timestamp* BatchGetDocumentsRequest::release_read_time() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.BatchGetDocumentsRequest.read_time)
  if (consistency_selector_case() == kReadTime) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.read_time_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.consistency_selector_.read_time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::protobuf::Timestamp& BatchGetDocumentsRequest::_internal_read_time() const {
  return consistency_selector_case() == kReadTime ? *_impl_.consistency_selector_.read_time_ : reinterpret_cast<::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& BatchGetDocumentsRequest::read_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.BatchGetDocumentsRequest.read_time)
  return _internal_read_time();
}
inline ::google::protobuf::Timestamp* BatchGetDocumentsRequest::unsafe_arena_release_read_time() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.BatchGetDocumentsRequest.read_time)
  if (consistency_selector_case() == kReadTime) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.read_time_;
    _impl_.consistency_selector_.read_time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void BatchGetDocumentsRequest::unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* 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_consistency_selector();
  if (value) {
    set_has_read_time();
    _impl_.consistency_selector_.read_time_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.BatchGetDocumentsRequest.read_time)
}
inline ::google::protobuf::Timestamp* BatchGetDocumentsRequest::_internal_mutable_read_time() {
  if (consistency_selector_case() != kReadTime) {
    clear_consistency_selector();
    set_has_read_time();
    _impl_.consistency_selector_.read_time_ = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArena());
  }
  return _impl_.consistency_selector_.read_time_;
}
inline ::google::protobuf::Timestamp* BatchGetDocumentsRequest::mutable_read_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_read_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.BatchGetDocumentsRequest.read_time)
  return _msg;
}

inline bool BatchGetDocumentsRequest::has_consistency_selector() const {
  return consistency_selector_case() != CONSISTENCY_SELECTOR_NOT_SET;
}
inline void BatchGetDocumentsRequest::clear_has_consistency_selector() {
  _impl_._oneof_case_[0] = CONSISTENCY_SELECTOR_NOT_SET;
}
inline BatchGetDocumentsRequest::ConsistencySelectorCase BatchGetDocumentsRequest::consistency_selector_case() const {
  return BatchGetDocumentsRequest::ConsistencySelectorCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// BatchGetDocumentsResponse

// .google.firestore.v1.Document found = 1;
inline bool BatchGetDocumentsResponse::has_found() const {
  return result_case() == kFound;
}
inline bool BatchGetDocumentsResponse::_internal_has_found() const {
  return result_case() == kFound;
}
inline void BatchGetDocumentsResponse::set_has_found() {
  _impl_._oneof_case_[0] = kFound;
}
inline ::google::firestore::v1::Document* BatchGetDocumentsResponse::release_found() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.BatchGetDocumentsResponse.found)
  if (result_case() == kFound) {
    clear_has_result();
    auto* temp = _impl_.result_.found_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.result_.found_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::Document& BatchGetDocumentsResponse::_internal_found() const {
  return result_case() == kFound ? *_impl_.result_.found_ : reinterpret_cast<::google::firestore::v1::Document&>(::google::firestore::v1::_Document_default_instance_);
}
inline const ::google::firestore::v1::Document& BatchGetDocumentsResponse::found() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.BatchGetDocumentsResponse.found)
  return _internal_found();
}
inline ::google::firestore::v1::Document* BatchGetDocumentsResponse::unsafe_arena_release_found() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.BatchGetDocumentsResponse.found)
  if (result_case() == kFound) {
    clear_has_result();
    auto* temp = _impl_.result_.found_;
    _impl_.result_.found_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void BatchGetDocumentsResponse::unsafe_arena_set_allocated_found(::google::firestore::v1::Document* 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_result();
  if (value) {
    set_has_found();
    _impl_.result_.found_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.BatchGetDocumentsResponse.found)
}
inline ::google::firestore::v1::Document* BatchGetDocumentsResponse::_internal_mutable_found() {
  if (result_case() != kFound) {
    clear_result();
    set_has_found();
    _impl_.result_.found_ = CreateMaybeMessage<::google::firestore::v1::Document>(GetArena());
  }
  return _impl_.result_.found_;
}
inline ::google::firestore::v1::Document* BatchGetDocumentsResponse::mutable_found() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Document* _msg = _internal_mutable_found();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.BatchGetDocumentsResponse.found)
  return _msg;
}

// string missing = 2;
inline bool BatchGetDocumentsResponse::has_missing() const {
  return result_case() == kMissing;
}
inline void BatchGetDocumentsResponse::set_has_missing() {
  _impl_._oneof_case_[0] = kMissing;
}
inline void BatchGetDocumentsResponse::clear_missing() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (result_case() == kMissing) {
    _impl_.result_.missing_.Destroy();
    clear_has_result();
  }
}
inline const std::string& BatchGetDocumentsResponse::missing() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.BatchGetDocumentsResponse.missing)
  return _internal_missing();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void BatchGetDocumentsResponse::set_missing(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (result_case() != kMissing) {
    clear_result();

    set_has_missing();
    _impl_.result_.missing_.InitDefault();
  }
  _impl_.result_.missing_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.BatchGetDocumentsResponse.missing)
}
inline std::string* BatchGetDocumentsResponse::mutable_missing() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_missing();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.BatchGetDocumentsResponse.missing)
  return _s;
}
inline const std::string& BatchGetDocumentsResponse::_internal_missing() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  if (result_case() != kMissing) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.result_.missing_.Get();
}
inline void BatchGetDocumentsResponse::_internal_set_missing(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (result_case() != kMissing) {
    clear_result();

    set_has_missing();
    _impl_.result_.missing_.InitDefault();
  }
  _impl_.result_.missing_.Set(value, GetArena());
}
inline std::string* BatchGetDocumentsResponse::_internal_mutable_missing() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (result_case() != kMissing) {
    clear_result();

    set_has_missing();
    _impl_.result_.missing_.InitDefault();
  }
  return _impl_.result_.missing_.Mutable( GetArena());
}
inline std::string* BatchGetDocumentsResponse::release_missing() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.BatchGetDocumentsResponse.missing)
  if (result_case() != kMissing) {
    return nullptr;
  }
  clear_has_result();
  return _impl_.result_.missing_.Release();
}
inline void BatchGetDocumentsResponse::set_allocated_missing(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (has_result()) {
    clear_result();
  }
  if (value != nullptr) {
    set_has_missing();
    _impl_.result_.missing_.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.BatchGetDocumentsResponse.missing)
}

// bytes transaction = 3;
inline void BatchGetDocumentsResponse::clear_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.transaction_.ClearToEmpty();
}
inline const std::string& BatchGetDocumentsResponse::transaction() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.BatchGetDocumentsResponse.transaction)
  return _internal_transaction();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void BatchGetDocumentsResponse::set_transaction(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.transaction_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.BatchGetDocumentsResponse.transaction)
}
inline std::string* BatchGetDocumentsResponse::mutable_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.BatchGetDocumentsResponse.transaction)
  return _s;
}
inline const std::string& BatchGetDocumentsResponse::_internal_transaction() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.transaction_.Get();
}
inline void BatchGetDocumentsResponse::_internal_set_transaction(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.transaction_.Set(value, GetArena());
}
inline std::string* BatchGetDocumentsResponse::_internal_mutable_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.transaction_.Mutable( GetArena());
}
inline std::string* BatchGetDocumentsResponse::release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.BatchGetDocumentsResponse.transaction)
  return _impl_.transaction_.Release();
}
inline void BatchGetDocumentsResponse::set_allocated_transaction(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.transaction_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.transaction_.IsDefault()) {
          _impl_.transaction_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.BatchGetDocumentsResponse.transaction)
}

// .google.protobuf.Timestamp read_time = 4;
inline bool BatchGetDocumentsResponse::has_read_time() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.read_time_ != nullptr);
  return value;
}
inline const ::google::protobuf::Timestamp& BatchGetDocumentsResponse::_internal_read_time() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::protobuf::Timestamp* p = _impl_.read_time_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& BatchGetDocumentsResponse::read_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.BatchGetDocumentsResponse.read_time)
  return _internal_read_time();
}
inline void BatchGetDocumentsResponse::unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.read_time_);
  }
  _impl_.read_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.BatchGetDocumentsResponse.read_time)
}
inline ::google::protobuf::Timestamp* BatchGetDocumentsResponse::release_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Timestamp* released = _impl_.read_time_;
  _impl_.read_time_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::protobuf::Timestamp* BatchGetDocumentsResponse::unsafe_arena_release_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.BatchGetDocumentsResponse.read_time)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Timestamp* temp = _impl_.read_time_;
  _impl_.read_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* BatchGetDocumentsResponse::_internal_mutable_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.read_time_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArena());
    _impl_.read_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(p);
  }
  return _impl_.read_time_;
}
inline ::google::protobuf::Timestamp* BatchGetDocumentsResponse::mutable_read_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_read_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.BatchGetDocumentsResponse.read_time)
  return _msg;
}
inline void BatchGetDocumentsResponse::set_allocated_read_time(::google::protobuf::Timestamp* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.read_time_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.read_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.BatchGetDocumentsResponse.read_time)
}

inline bool BatchGetDocumentsResponse::has_result() const {
  return result_case() != RESULT_NOT_SET;
}
inline void BatchGetDocumentsResponse::clear_has_result() {
  _impl_._oneof_case_[0] = RESULT_NOT_SET;
}
inline BatchGetDocumentsResponse::ResultCase BatchGetDocumentsResponse::result_case() const {
  return BatchGetDocumentsResponse::ResultCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// BeginTransactionRequest

// string database = 1;
inline void BeginTransactionRequest::clear_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.database_.ClearToEmpty();
}
inline const std::string& BeginTransactionRequest::database() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.BeginTransactionRequest.database)
  return _internal_database();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void BeginTransactionRequest::set_database(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.database_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.BeginTransactionRequest.database)
}
inline std::string* BeginTransactionRequest::mutable_database() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_database();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.BeginTransactionRequest.database)
  return _s;
}
inline const std::string& BeginTransactionRequest::_internal_database() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.database_.Get();
}
inline void BeginTransactionRequest::_internal_set_database(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.database_.Set(value, GetArena());
}
inline std::string* BeginTransactionRequest::_internal_mutable_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.database_.Mutable( GetArena());
}
inline std::string* BeginTransactionRequest::release_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.BeginTransactionRequest.database)
  return _impl_.database_.Release();
}
inline void BeginTransactionRequest::set_allocated_database(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.database_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.database_.IsDefault()) {
          _impl_.database_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.BeginTransactionRequest.database)
}

// .google.firestore.v1.TransactionOptions options = 2;
inline bool BeginTransactionRequest::has_options() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.options_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::TransactionOptions& BeginTransactionRequest::_internal_options() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::TransactionOptions* p = _impl_.options_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::TransactionOptions&>(::google::firestore::v1::_TransactionOptions_default_instance_);
}
inline const ::google::firestore::v1::TransactionOptions& BeginTransactionRequest::options() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.BeginTransactionRequest.options)
  return _internal_options();
}
inline void BeginTransactionRequest::unsafe_arena_set_allocated_options(::google::firestore::v1::TransactionOptions* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.options_);
  }
  _impl_.options_ = reinterpret_cast<::google::firestore::v1::TransactionOptions*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.BeginTransactionRequest.options)
}
inline ::google::firestore::v1::TransactionOptions* BeginTransactionRequest::release_options() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::TransactionOptions* released = _impl_.options_;
  _impl_.options_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::firestore::v1::TransactionOptions* BeginTransactionRequest::unsafe_arena_release_options() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.BeginTransactionRequest.options)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::TransactionOptions* temp = _impl_.options_;
  _impl_.options_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::TransactionOptions* BeginTransactionRequest::_internal_mutable_options() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.options_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::TransactionOptions>(GetArena());
    _impl_.options_ = reinterpret_cast<::google::firestore::v1::TransactionOptions*>(p);
  }
  return _impl_.options_;
}
inline ::google::firestore::v1::TransactionOptions* BeginTransactionRequest::mutable_options() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::TransactionOptions* _msg = _internal_mutable_options();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.BeginTransactionRequest.options)
  return _msg;
}
inline void BeginTransactionRequest::set_allocated_options(::google::firestore::v1::TransactionOptions* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.options_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.options_ = reinterpret_cast<::google::firestore::v1::TransactionOptions*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.BeginTransactionRequest.options)
}

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

// BeginTransactionResponse

// bytes transaction = 1;
inline void BeginTransactionResponse::clear_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.transaction_.ClearToEmpty();
}
inline const std::string& BeginTransactionResponse::transaction() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.BeginTransactionResponse.transaction)
  return _internal_transaction();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void BeginTransactionResponse::set_transaction(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.transaction_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.BeginTransactionResponse.transaction)
}
inline std::string* BeginTransactionResponse::mutable_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.BeginTransactionResponse.transaction)
  return _s;
}
inline const std::string& BeginTransactionResponse::_internal_transaction() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.transaction_.Get();
}
inline void BeginTransactionResponse::_internal_set_transaction(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.transaction_.Set(value, GetArena());
}
inline std::string* BeginTransactionResponse::_internal_mutable_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.transaction_.Mutable( GetArena());
}
inline std::string* BeginTransactionResponse::release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.BeginTransactionResponse.transaction)
  return _impl_.transaction_.Release();
}
inline void BeginTransactionResponse::set_allocated_transaction(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.transaction_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.transaction_.IsDefault()) {
          _impl_.transaction_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.BeginTransactionResponse.transaction)
}

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

// CommitRequest

// string database = 1;
inline void CommitRequest::clear_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.database_.ClearToEmpty();
}
inline const std::string& CommitRequest::database() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.CommitRequest.database)
  return _internal_database();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void CommitRequest::set_database(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.database_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.CommitRequest.database)
}
inline std::string* CommitRequest::mutable_database() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_database();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.CommitRequest.database)
  return _s;
}
inline const std::string& CommitRequest::_internal_database() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.database_.Get();
}
inline void CommitRequest::_internal_set_database(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.database_.Set(value, GetArena());
}
inline std::string* CommitRequest::_internal_mutable_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.database_.Mutable( GetArena());
}
inline std::string* CommitRequest::release_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.CommitRequest.database)
  return _impl_.database_.Release();
}
inline void CommitRequest::set_allocated_database(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.database_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.database_.IsDefault()) {
          _impl_.database_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.CommitRequest.database)
}

// repeated .google.firestore.v1.Write writes = 2;
inline int CommitRequest::_internal_writes_size() const {
  return _internal_writes().size();
}
inline int CommitRequest::writes_size() const {
  return _internal_writes_size();
}
inline ::google::firestore::v1::Write* CommitRequest::mutable_writes(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.CommitRequest.writes)
  return _internal_mutable_writes()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Write>* CommitRequest::mutable_writes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.CommitRequest.writes)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_writes();
}
inline const ::google::firestore::v1::Write& CommitRequest::writes(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.CommitRequest.writes)
  return _internal_writes().Get(index);
}
inline ::google::firestore::v1::Write* CommitRequest::add_writes() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::google::firestore::v1::Write* _add = _internal_mutable_writes()->Add();
  // @@protoc_insertion_point(field_add:google.firestore.v1.CommitRequest.writes)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Write>& CommitRequest::writes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.CommitRequest.writes)
  return _internal_writes();
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Write>&
CommitRequest::_internal_writes() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.writes_;
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Write>*
CommitRequest::_internal_mutable_writes() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.writes_;
}

// bytes transaction = 3;
inline void CommitRequest::clear_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.transaction_.ClearToEmpty();
}
inline const std::string& CommitRequest::transaction() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.CommitRequest.transaction)
  return _internal_transaction();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void CommitRequest::set_transaction(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.transaction_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.CommitRequest.transaction)
}
inline std::string* CommitRequest::mutable_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.CommitRequest.transaction)
  return _s;
}
inline const std::string& CommitRequest::_internal_transaction() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.transaction_.Get();
}
inline void CommitRequest::_internal_set_transaction(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.transaction_.Set(value, GetArena());
}
inline std::string* CommitRequest::_internal_mutable_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.transaction_.Mutable( GetArena());
}
inline std::string* CommitRequest::release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.CommitRequest.transaction)
  return _impl_.transaction_.Release();
}
inline void CommitRequest::set_allocated_transaction(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.transaction_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.transaction_.IsDefault()) {
          _impl_.transaction_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.CommitRequest.transaction)
}

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

// CommitResponse

// repeated .google.firestore.v1.WriteResult write_results = 1;
inline int CommitResponse::_internal_write_results_size() const {
  return _internal_write_results().size();
}
inline int CommitResponse::write_results_size() const {
  return _internal_write_results_size();
}
inline ::google::firestore::v1::WriteResult* CommitResponse::mutable_write_results(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.CommitResponse.write_results)
  return _internal_mutable_write_results()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::WriteResult>* CommitResponse::mutable_write_results()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.CommitResponse.write_results)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_write_results();
}
inline const ::google::firestore::v1::WriteResult& CommitResponse::write_results(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.CommitResponse.write_results)
  return _internal_write_results().Get(index);
}
inline ::google::firestore::v1::WriteResult* CommitResponse::add_write_results() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::google::firestore::v1::WriteResult* _add = _internal_mutable_write_results()->Add();
  // @@protoc_insertion_point(field_add:google.firestore.v1.CommitResponse.write_results)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::WriteResult>& CommitResponse::write_results() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.CommitResponse.write_results)
  return _internal_write_results();
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::WriteResult>&
CommitResponse::_internal_write_results() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.write_results_;
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::WriteResult>*
CommitResponse::_internal_mutable_write_results() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.write_results_;
}

// .google.protobuf.Timestamp commit_time = 2;
inline bool CommitResponse::has_commit_time() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.commit_time_ != nullptr);
  return value;
}
inline const ::google::protobuf::Timestamp& CommitResponse::_internal_commit_time() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::protobuf::Timestamp* p = _impl_.commit_time_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& CommitResponse::commit_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.CommitResponse.commit_time)
  return _internal_commit_time();
}
inline void CommitResponse::unsafe_arena_set_allocated_commit_time(::google::protobuf::Timestamp* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.commit_time_);
  }
  _impl_.commit_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.CommitResponse.commit_time)
}
inline ::google::protobuf::Timestamp* CommitResponse::release_commit_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Timestamp* released = _impl_.commit_time_;
  _impl_.commit_time_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::protobuf::Timestamp* CommitResponse::unsafe_arena_release_commit_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.CommitResponse.commit_time)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Timestamp* temp = _impl_.commit_time_;
  _impl_.commit_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* CommitResponse::_internal_mutable_commit_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.commit_time_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArena());
    _impl_.commit_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(p);
  }
  return _impl_.commit_time_;
}
inline ::google::protobuf::Timestamp* CommitResponse::mutable_commit_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_commit_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.CommitResponse.commit_time)
  return _msg;
}
inline void CommitResponse::set_allocated_commit_time(::google::protobuf::Timestamp* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  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::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.commit_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.CommitResponse.commit_time)
}

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

// RollbackRequest

// string database = 1;
inline void RollbackRequest::clear_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.database_.ClearToEmpty();
}
inline const std::string& RollbackRequest::database() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RollbackRequest.database)
  return _internal_database();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void RollbackRequest::set_database(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.database_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.RollbackRequest.database)
}
inline std::string* RollbackRequest::mutable_database() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_database();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RollbackRequest.database)
  return _s;
}
inline const std::string& RollbackRequest::_internal_database() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.database_.Get();
}
inline void RollbackRequest::_internal_set_database(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.database_.Set(value, GetArena());
}
inline std::string* RollbackRequest::_internal_mutable_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.database_.Mutable( GetArena());
}
inline std::string* RollbackRequest::release_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.RollbackRequest.database)
  return _impl_.database_.Release();
}
inline void RollbackRequest::set_allocated_database(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.database_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.database_.IsDefault()) {
          _impl_.database_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.RollbackRequest.database)
}

// bytes transaction = 2;
inline void RollbackRequest::clear_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.transaction_.ClearToEmpty();
}
inline const std::string& RollbackRequest::transaction() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RollbackRequest.transaction)
  return _internal_transaction();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void RollbackRequest::set_transaction(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.transaction_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.RollbackRequest.transaction)
}
inline std::string* RollbackRequest::mutable_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RollbackRequest.transaction)
  return _s;
}
inline const std::string& RollbackRequest::_internal_transaction() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.transaction_.Get();
}
inline void RollbackRequest::_internal_set_transaction(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.transaction_.Set(value, GetArena());
}
inline std::string* RollbackRequest::_internal_mutable_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.transaction_.Mutable( GetArena());
}
inline std::string* RollbackRequest::release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.RollbackRequest.transaction)
  return _impl_.transaction_.Release();
}
inline void RollbackRequest::set_allocated_transaction(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.transaction_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.transaction_.IsDefault()) {
          _impl_.transaction_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.RollbackRequest.transaction)
}

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

// RunQueryRequest

// string parent = 1;
inline void RunQueryRequest::clear_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.parent_.ClearToEmpty();
}
inline const std::string& RunQueryRequest::parent() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunQueryRequest.parent)
  return _internal_parent();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void RunQueryRequest::set_parent(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.parent_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.RunQueryRequest.parent)
}
inline std::string* RunQueryRequest::mutable_parent() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_parent();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunQueryRequest.parent)
  return _s;
}
inline const std::string& RunQueryRequest::_internal_parent() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.parent_.Get();
}
inline void RunQueryRequest::_internal_set_parent(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.parent_.Set(value, GetArena());
}
inline std::string* RunQueryRequest::_internal_mutable_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.parent_.Mutable( GetArena());
}
inline std::string* RunQueryRequest::release_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunQueryRequest.parent)
  return _impl_.parent_.Release();
}
inline void RunQueryRequest::set_allocated_parent(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.parent_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.parent_.IsDefault()) {
          _impl_.parent_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.RunQueryRequest.parent)
}

// .google.firestore.v1.StructuredQuery structured_query = 2;
inline bool RunQueryRequest::has_structured_query() const {
  return query_type_case() == kStructuredQuery;
}
inline bool RunQueryRequest::_internal_has_structured_query() const {
  return query_type_case() == kStructuredQuery;
}
inline void RunQueryRequest::set_has_structured_query() {
  _impl_._oneof_case_[0] = kStructuredQuery;
}
inline ::google::firestore::v1::StructuredQuery* RunQueryRequest::release_structured_query() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunQueryRequest.structured_query)
  if (query_type_case() == kStructuredQuery) {
    clear_has_query_type();
    auto* temp = _impl_.query_type_.structured_query_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.query_type_.structured_query_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::StructuredQuery& RunQueryRequest::_internal_structured_query() const {
  return query_type_case() == kStructuredQuery ? *_impl_.query_type_.structured_query_ : reinterpret_cast<::google::firestore::v1::StructuredQuery&>(::google::firestore::v1::_StructuredQuery_default_instance_);
}
inline const ::google::firestore::v1::StructuredQuery& RunQueryRequest::structured_query() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunQueryRequest.structured_query)
  return _internal_structured_query();
}
inline ::google::firestore::v1::StructuredQuery* RunQueryRequest::unsafe_arena_release_structured_query() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.RunQueryRequest.structured_query)
  if (query_type_case() == kStructuredQuery) {
    clear_has_query_type();
    auto* temp = _impl_.query_type_.structured_query_;
    _impl_.query_type_.structured_query_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void RunQueryRequest::unsafe_arena_set_allocated_structured_query(::google::firestore::v1::StructuredQuery* 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_query_type();
  if (value) {
    set_has_structured_query();
    _impl_.query_type_.structured_query_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.RunQueryRequest.structured_query)
}
inline ::google::firestore::v1::StructuredQuery* RunQueryRequest::_internal_mutable_structured_query() {
  if (query_type_case() != kStructuredQuery) {
    clear_query_type();
    set_has_structured_query();
    _impl_.query_type_.structured_query_ = CreateMaybeMessage<::google::firestore::v1::StructuredQuery>(GetArena());
  }
  return _impl_.query_type_.structured_query_;
}
inline ::google::firestore::v1::StructuredQuery* RunQueryRequest::mutable_structured_query() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::StructuredQuery* _msg = _internal_mutable_structured_query();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunQueryRequest.structured_query)
  return _msg;
}

// bytes transaction = 5;
inline bool RunQueryRequest::has_transaction() const {
  return consistency_selector_case() == kTransaction;
}
inline void RunQueryRequest::set_has_transaction() {
  _impl_._oneof_case_[1] = kTransaction;
}
inline void RunQueryRequest::clear_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() == kTransaction) {
    _impl_.consistency_selector_.transaction_.Destroy();
    clear_has_consistency_selector();
  }
}
inline const std::string& RunQueryRequest::transaction() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunQueryRequest.transaction)
  return _internal_transaction();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void RunQueryRequest::set_transaction(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  _impl_.consistency_selector_.transaction_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.RunQueryRequest.transaction)
}
inline std::string* RunQueryRequest::mutable_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunQueryRequest.transaction)
  return _s;
}
inline const std::string& RunQueryRequest::_internal_transaction() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.consistency_selector_.transaction_.Get();
}
inline void RunQueryRequest::_internal_set_transaction(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  _impl_.consistency_selector_.transaction_.Set(value, GetArena());
}
inline std::string* RunQueryRequest::_internal_mutable_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  return _impl_.consistency_selector_.transaction_.Mutable( GetArena());
}
inline std::string* RunQueryRequest::release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunQueryRequest.transaction)
  if (consistency_selector_case() != kTransaction) {
    return nullptr;
  }
  clear_has_consistency_selector();
  return _impl_.consistency_selector_.transaction_.Release();
}
inline void RunQueryRequest::set_allocated_transaction(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (has_consistency_selector()) {
    clear_consistency_selector();
  }
  if (value != nullptr) {
    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.RunQueryRequest.transaction)
}

// .google.firestore.v1.TransactionOptions new_transaction = 6;
inline bool RunQueryRequest::has_new_transaction() const {
  return consistency_selector_case() == kNewTransaction;
}
inline bool RunQueryRequest::_internal_has_new_transaction() const {
  return consistency_selector_case() == kNewTransaction;
}
inline void RunQueryRequest::set_has_new_transaction() {
  _impl_._oneof_case_[1] = kNewTransaction;
}
inline ::google::firestore::v1::TransactionOptions* RunQueryRequest::release_new_transaction() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunQueryRequest.new_transaction)
  if (consistency_selector_case() == kNewTransaction) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.new_transaction_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.consistency_selector_.new_transaction_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::TransactionOptions& RunQueryRequest::_internal_new_transaction() const {
  return consistency_selector_case() == kNewTransaction ? *_impl_.consistency_selector_.new_transaction_ : reinterpret_cast<::google::firestore::v1::TransactionOptions&>(::google::firestore::v1::_TransactionOptions_default_instance_);
}
inline const ::google::firestore::v1::TransactionOptions& RunQueryRequest::new_transaction() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunQueryRequest.new_transaction)
  return _internal_new_transaction();
}
inline ::google::firestore::v1::TransactionOptions* RunQueryRequest::unsafe_arena_release_new_transaction() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.RunQueryRequest.new_transaction)
  if (consistency_selector_case() == kNewTransaction) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.new_transaction_;
    _impl_.consistency_selector_.new_transaction_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void RunQueryRequest::unsafe_arena_set_allocated_new_transaction(::google::firestore::v1::TransactionOptions* 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_consistency_selector();
  if (value) {
    set_has_new_transaction();
    _impl_.consistency_selector_.new_transaction_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.RunQueryRequest.new_transaction)
}
inline ::google::firestore::v1::TransactionOptions* RunQueryRequest::_internal_mutable_new_transaction() {
  if (consistency_selector_case() != kNewTransaction) {
    clear_consistency_selector();
    set_has_new_transaction();
    _impl_.consistency_selector_.new_transaction_ = CreateMaybeMessage<::google::firestore::v1::TransactionOptions>(GetArena());
  }
  return _impl_.consistency_selector_.new_transaction_;
}
inline ::google::firestore::v1::TransactionOptions* RunQueryRequest::mutable_new_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::TransactionOptions* _msg = _internal_mutable_new_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunQueryRequest.new_transaction)
  return _msg;
}

// .google.protobuf.Timestamp read_time = 7;
inline bool RunQueryRequest::has_read_time() const {
  return consistency_selector_case() == kReadTime;
}
inline bool RunQueryRequest::_internal_has_read_time() const {
  return consistency_selector_case() == kReadTime;
}
inline void RunQueryRequest::set_has_read_time() {
  _impl_._oneof_case_[1] = kReadTime;
}
inline ::google::protobuf::Timestamp* RunQueryRequest::release_read_time() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunQueryRequest.read_time)
  if (consistency_selector_case() == kReadTime) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.read_time_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.consistency_selector_.read_time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::protobuf::Timestamp& RunQueryRequest::_internal_read_time() const {
  return consistency_selector_case() == kReadTime ? *_impl_.consistency_selector_.read_time_ : reinterpret_cast<::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& RunQueryRequest::read_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunQueryRequest.read_time)
  return _internal_read_time();
}
inline ::google::protobuf::Timestamp* RunQueryRequest::unsafe_arena_release_read_time() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.RunQueryRequest.read_time)
  if (consistency_selector_case() == kReadTime) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.read_time_;
    _impl_.consistency_selector_.read_time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void RunQueryRequest::unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* 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_consistency_selector();
  if (value) {
    set_has_read_time();
    _impl_.consistency_selector_.read_time_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.RunQueryRequest.read_time)
}
inline ::google::protobuf::Timestamp* RunQueryRequest::_internal_mutable_read_time() {
  if (consistency_selector_case() != kReadTime) {
    clear_consistency_selector();
    set_has_read_time();
    _impl_.consistency_selector_.read_time_ = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArena());
  }
  return _impl_.consistency_selector_.read_time_;
}
inline ::google::protobuf::Timestamp* RunQueryRequest::mutable_read_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_read_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunQueryRequest.read_time)
  return _msg;
}

inline bool RunQueryRequest::has_query_type() const {
  return query_type_case() != QUERY_TYPE_NOT_SET;
}
inline void RunQueryRequest::clear_has_query_type() {
  _impl_._oneof_case_[0] = QUERY_TYPE_NOT_SET;
}
inline bool RunQueryRequest::has_consistency_selector() const {
  return consistency_selector_case() != CONSISTENCY_SELECTOR_NOT_SET;
}
inline void RunQueryRequest::clear_has_consistency_selector() {
  _impl_._oneof_case_[1] = CONSISTENCY_SELECTOR_NOT_SET;
}
inline RunQueryRequest::QueryTypeCase RunQueryRequest::query_type_case() const {
  return RunQueryRequest::QueryTypeCase(_impl_._oneof_case_[0]);
}
inline RunQueryRequest::ConsistencySelectorCase RunQueryRequest::consistency_selector_case() const {
  return RunQueryRequest::ConsistencySelectorCase(_impl_._oneof_case_[1]);
}
// -------------------------------------------------------------------

// RunQueryResponse

// bytes transaction = 2;
inline void RunQueryResponse::clear_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.transaction_.ClearToEmpty();
}
inline const std::string& RunQueryResponse::transaction() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunQueryResponse.transaction)
  return _internal_transaction();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void RunQueryResponse::set_transaction(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.transaction_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.RunQueryResponse.transaction)
}
inline std::string* RunQueryResponse::mutable_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunQueryResponse.transaction)
  return _s;
}
inline const std::string& RunQueryResponse::_internal_transaction() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.transaction_.Get();
}
inline void RunQueryResponse::_internal_set_transaction(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.transaction_.Set(value, GetArena());
}
inline std::string* RunQueryResponse::_internal_mutable_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.transaction_.Mutable( GetArena());
}
inline std::string* RunQueryResponse::release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunQueryResponse.transaction)
  return _impl_.transaction_.Release();
}
inline void RunQueryResponse::set_allocated_transaction(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.transaction_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.transaction_.IsDefault()) {
          _impl_.transaction_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.RunQueryResponse.transaction)
}

// .google.firestore.v1.Document document = 1;
inline bool RunQueryResponse::has_document() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.document_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::Document& RunQueryResponse::_internal_document() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::Document* p = _impl_.document_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::Document&>(::google::firestore::v1::_Document_default_instance_);
}
inline const ::google::firestore::v1::Document& RunQueryResponse::document() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunQueryResponse.document)
  return _internal_document();
}
inline void RunQueryResponse::unsafe_arena_set_allocated_document(::google::firestore::v1::Document* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.document_);
  }
  _impl_.document_ = reinterpret_cast<::google::firestore::v1::Document*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.RunQueryResponse.document)
}
inline ::google::firestore::v1::Document* RunQueryResponse::release_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::Document* released = _impl_.document_;
  _impl_.document_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::firestore::v1::Document* RunQueryResponse::unsafe_arena_release_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunQueryResponse.document)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::Document* temp = _impl_.document_;
  _impl_.document_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::Document* RunQueryResponse::_internal_mutable_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.document_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::Document>(GetArena());
    _impl_.document_ = reinterpret_cast<::google::firestore::v1::Document*>(p);
  }
  return _impl_.document_;
}
inline ::google::firestore::v1::Document* RunQueryResponse::mutable_document() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Document* _msg = _internal_mutable_document();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunQueryResponse.document)
  return _msg;
}
inline void RunQueryResponse::set_allocated_document(::google::firestore::v1::Document* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.document_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.document_ = reinterpret_cast<::google::firestore::v1::Document*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.RunQueryResponse.document)
}

// .google.protobuf.Timestamp read_time = 3;
inline bool RunQueryResponse::has_read_time() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.read_time_ != nullptr);
  return value;
}
inline const ::google::protobuf::Timestamp& RunQueryResponse::_internal_read_time() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::protobuf::Timestamp* p = _impl_.read_time_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& RunQueryResponse::read_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunQueryResponse.read_time)
  return _internal_read_time();
}
inline void RunQueryResponse::unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.read_time_);
  }
  _impl_.read_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.RunQueryResponse.read_time)
}
inline ::google::protobuf::Timestamp* RunQueryResponse::release_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::protobuf::Timestamp* released = _impl_.read_time_;
  _impl_.read_time_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::protobuf::Timestamp* RunQueryResponse::unsafe_arena_release_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunQueryResponse.read_time)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::protobuf::Timestamp* temp = _impl_.read_time_;
  _impl_.read_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* RunQueryResponse::_internal_mutable_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000002u;
  if (_impl_.read_time_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArena());
    _impl_.read_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(p);
  }
  return _impl_.read_time_;
}
inline ::google::protobuf::Timestamp* RunQueryResponse::mutable_read_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_read_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunQueryResponse.read_time)
  return _msg;
}
inline void RunQueryResponse::set_allocated_read_time(::google::protobuf::Timestamp* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.read_time_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.read_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.RunQueryResponse.read_time)
}

// int32 skipped_results = 4;
inline void RunQueryResponse::clear_skipped_results() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.skipped_results_ = 0;
}
inline ::int32_t RunQueryResponse::skipped_results() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunQueryResponse.skipped_results)
  return _internal_skipped_results();
}
inline void RunQueryResponse::set_skipped_results(::int32_t value) {
  _internal_set_skipped_results(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.RunQueryResponse.skipped_results)
}
inline ::int32_t RunQueryResponse::_internal_skipped_results() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.skipped_results_;
}
inline void RunQueryResponse::_internal_set_skipped_results(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.skipped_results_ = value;
}

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

// RunAggregationQueryRequest

// string parent = 1;
inline void RunAggregationQueryRequest::clear_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.parent_.ClearToEmpty();
}
inline const std::string& RunAggregationQueryRequest::parent() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunAggregationQueryRequest.parent)
  return _internal_parent();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void RunAggregationQueryRequest::set_parent(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.parent_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.RunAggregationQueryRequest.parent)
}
inline std::string* RunAggregationQueryRequest::mutable_parent() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_parent();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunAggregationQueryRequest.parent)
  return _s;
}
inline const std::string& RunAggregationQueryRequest::_internal_parent() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.parent_.Get();
}
inline void RunAggregationQueryRequest::_internal_set_parent(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.parent_.Set(value, GetArena());
}
inline std::string* RunAggregationQueryRequest::_internal_mutable_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.parent_.Mutable( GetArena());
}
inline std::string* RunAggregationQueryRequest::release_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunAggregationQueryRequest.parent)
  return _impl_.parent_.Release();
}
inline void RunAggregationQueryRequest::set_allocated_parent(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.parent_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.parent_.IsDefault()) {
          _impl_.parent_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.RunAggregationQueryRequest.parent)
}

// .google.firestore.v1.StructuredAggregationQuery structured_aggregation_query = 2;
inline bool RunAggregationQueryRequest::has_structured_aggregation_query() const {
  return query_type_case() == kStructuredAggregationQuery;
}
inline bool RunAggregationQueryRequest::_internal_has_structured_aggregation_query() const {
  return query_type_case() == kStructuredAggregationQuery;
}
inline void RunAggregationQueryRequest::set_has_structured_aggregation_query() {
  _impl_._oneof_case_[0] = kStructuredAggregationQuery;
}
inline ::google::firestore::v1::StructuredAggregationQuery* RunAggregationQueryRequest::release_structured_aggregation_query() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunAggregationQueryRequest.structured_aggregation_query)
  if (query_type_case() == kStructuredAggregationQuery) {
    clear_has_query_type();
    auto* temp = _impl_.query_type_.structured_aggregation_query_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.query_type_.structured_aggregation_query_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::StructuredAggregationQuery& RunAggregationQueryRequest::_internal_structured_aggregation_query() const {
  return query_type_case() == kStructuredAggregationQuery ? *_impl_.query_type_.structured_aggregation_query_ : reinterpret_cast<::google::firestore::v1::StructuredAggregationQuery&>(::google::firestore::v1::_StructuredAggregationQuery_default_instance_);
}
inline const ::google::firestore::v1::StructuredAggregationQuery& RunAggregationQueryRequest::structured_aggregation_query() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunAggregationQueryRequest.structured_aggregation_query)
  return _internal_structured_aggregation_query();
}
inline ::google::firestore::v1::StructuredAggregationQuery* RunAggregationQueryRequest::unsafe_arena_release_structured_aggregation_query() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.RunAggregationQueryRequest.structured_aggregation_query)
  if (query_type_case() == kStructuredAggregationQuery) {
    clear_has_query_type();
    auto* temp = _impl_.query_type_.structured_aggregation_query_;
    _impl_.query_type_.structured_aggregation_query_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void RunAggregationQueryRequest::unsafe_arena_set_allocated_structured_aggregation_query(::google::firestore::v1::StructuredAggregationQuery* 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_query_type();
  if (value) {
    set_has_structured_aggregation_query();
    _impl_.query_type_.structured_aggregation_query_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.RunAggregationQueryRequest.structured_aggregation_query)
}
inline ::google::firestore::v1::StructuredAggregationQuery* RunAggregationQueryRequest::_internal_mutable_structured_aggregation_query() {
  if (query_type_case() != kStructuredAggregationQuery) {
    clear_query_type();
    set_has_structured_aggregation_query();
    _impl_.query_type_.structured_aggregation_query_ = CreateMaybeMessage<::google::firestore::v1::StructuredAggregationQuery>(GetArena());
  }
  return _impl_.query_type_.structured_aggregation_query_;
}
inline ::google::firestore::v1::StructuredAggregationQuery* RunAggregationQueryRequest::mutable_structured_aggregation_query() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::StructuredAggregationQuery* _msg = _internal_mutable_structured_aggregation_query();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunAggregationQueryRequest.structured_aggregation_query)
  return _msg;
}

// bytes transaction = 4;
inline bool RunAggregationQueryRequest::has_transaction() const {
  return consistency_selector_case() == kTransaction;
}
inline void RunAggregationQueryRequest::set_has_transaction() {
  _impl_._oneof_case_[1] = kTransaction;
}
inline void RunAggregationQueryRequest::clear_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() == kTransaction) {
    _impl_.consistency_selector_.transaction_.Destroy();
    clear_has_consistency_selector();
  }
}
inline const std::string& RunAggregationQueryRequest::transaction() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunAggregationQueryRequest.transaction)
  return _internal_transaction();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void RunAggregationQueryRequest::set_transaction(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  _impl_.consistency_selector_.transaction_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.RunAggregationQueryRequest.transaction)
}
inline std::string* RunAggregationQueryRequest::mutable_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunAggregationQueryRequest.transaction)
  return _s;
}
inline const std::string& RunAggregationQueryRequest::_internal_transaction() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.consistency_selector_.transaction_.Get();
}
inline void RunAggregationQueryRequest::_internal_set_transaction(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  _impl_.consistency_selector_.transaction_.Set(value, GetArena());
}
inline std::string* RunAggregationQueryRequest::_internal_mutable_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (consistency_selector_case() != kTransaction) {
    clear_consistency_selector();

    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitDefault();
  }
  return _impl_.consistency_selector_.transaction_.Mutable( GetArena());
}
inline std::string* RunAggregationQueryRequest::release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunAggregationQueryRequest.transaction)
  if (consistency_selector_case() != kTransaction) {
    return nullptr;
  }
  clear_has_consistency_selector();
  return _impl_.consistency_selector_.transaction_.Release();
}
inline void RunAggregationQueryRequest::set_allocated_transaction(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (has_consistency_selector()) {
    clear_consistency_selector();
  }
  if (value != nullptr) {
    set_has_transaction();
    _impl_.consistency_selector_.transaction_.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.RunAggregationQueryRequest.transaction)
}

// .google.firestore.v1.TransactionOptions new_transaction = 5;
inline bool RunAggregationQueryRequest::has_new_transaction() const {
  return consistency_selector_case() == kNewTransaction;
}
inline bool RunAggregationQueryRequest::_internal_has_new_transaction() const {
  return consistency_selector_case() == kNewTransaction;
}
inline void RunAggregationQueryRequest::set_has_new_transaction() {
  _impl_._oneof_case_[1] = kNewTransaction;
}
inline ::google::firestore::v1::TransactionOptions* RunAggregationQueryRequest::release_new_transaction() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunAggregationQueryRequest.new_transaction)
  if (consistency_selector_case() == kNewTransaction) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.new_transaction_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.consistency_selector_.new_transaction_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::TransactionOptions& RunAggregationQueryRequest::_internal_new_transaction() const {
  return consistency_selector_case() == kNewTransaction ? *_impl_.consistency_selector_.new_transaction_ : reinterpret_cast<::google::firestore::v1::TransactionOptions&>(::google::firestore::v1::_TransactionOptions_default_instance_);
}
inline const ::google::firestore::v1::TransactionOptions& RunAggregationQueryRequest::new_transaction() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunAggregationQueryRequest.new_transaction)
  return _internal_new_transaction();
}
inline ::google::firestore::v1::TransactionOptions* RunAggregationQueryRequest::unsafe_arena_release_new_transaction() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.RunAggregationQueryRequest.new_transaction)
  if (consistency_selector_case() == kNewTransaction) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.new_transaction_;
    _impl_.consistency_selector_.new_transaction_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void RunAggregationQueryRequest::unsafe_arena_set_allocated_new_transaction(::google::firestore::v1::TransactionOptions* 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_consistency_selector();
  if (value) {
    set_has_new_transaction();
    _impl_.consistency_selector_.new_transaction_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.RunAggregationQueryRequest.new_transaction)
}
inline ::google::firestore::v1::TransactionOptions* RunAggregationQueryRequest::_internal_mutable_new_transaction() {
  if (consistency_selector_case() != kNewTransaction) {
    clear_consistency_selector();
    set_has_new_transaction();
    _impl_.consistency_selector_.new_transaction_ = CreateMaybeMessage<::google::firestore::v1::TransactionOptions>(GetArena());
  }
  return _impl_.consistency_selector_.new_transaction_;
}
inline ::google::firestore::v1::TransactionOptions* RunAggregationQueryRequest::mutable_new_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::TransactionOptions* _msg = _internal_mutable_new_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunAggregationQueryRequest.new_transaction)
  return _msg;
}

// .google.protobuf.Timestamp read_time = 6;
inline bool RunAggregationQueryRequest::has_read_time() const {
  return consistency_selector_case() == kReadTime;
}
inline bool RunAggregationQueryRequest::_internal_has_read_time() const {
  return consistency_selector_case() == kReadTime;
}
inline void RunAggregationQueryRequest::set_has_read_time() {
  _impl_._oneof_case_[1] = kReadTime;
}
inline ::google::protobuf::Timestamp* RunAggregationQueryRequest::release_read_time() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunAggregationQueryRequest.read_time)
  if (consistency_selector_case() == kReadTime) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.read_time_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.consistency_selector_.read_time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::protobuf::Timestamp& RunAggregationQueryRequest::_internal_read_time() const {
  return consistency_selector_case() == kReadTime ? *_impl_.consistency_selector_.read_time_ : reinterpret_cast<::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& RunAggregationQueryRequest::read_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunAggregationQueryRequest.read_time)
  return _internal_read_time();
}
inline ::google::protobuf::Timestamp* RunAggregationQueryRequest::unsafe_arena_release_read_time() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.RunAggregationQueryRequest.read_time)
  if (consistency_selector_case() == kReadTime) {
    clear_has_consistency_selector();
    auto* temp = _impl_.consistency_selector_.read_time_;
    _impl_.consistency_selector_.read_time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void RunAggregationQueryRequest::unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* 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_consistency_selector();
  if (value) {
    set_has_read_time();
    _impl_.consistency_selector_.read_time_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.RunAggregationQueryRequest.read_time)
}
inline ::google::protobuf::Timestamp* RunAggregationQueryRequest::_internal_mutable_read_time() {
  if (consistency_selector_case() != kReadTime) {
    clear_consistency_selector();
    set_has_read_time();
    _impl_.consistency_selector_.read_time_ = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArena());
  }
  return _impl_.consistency_selector_.read_time_;
}
inline ::google::protobuf::Timestamp* RunAggregationQueryRequest::mutable_read_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_read_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunAggregationQueryRequest.read_time)
  return _msg;
}

inline bool RunAggregationQueryRequest::has_query_type() const {
  return query_type_case() != QUERY_TYPE_NOT_SET;
}
inline void RunAggregationQueryRequest::clear_has_query_type() {
  _impl_._oneof_case_[0] = QUERY_TYPE_NOT_SET;
}
inline bool RunAggregationQueryRequest::has_consistency_selector() const {
  return consistency_selector_case() != CONSISTENCY_SELECTOR_NOT_SET;
}
inline void RunAggregationQueryRequest::clear_has_consistency_selector() {
  _impl_._oneof_case_[1] = CONSISTENCY_SELECTOR_NOT_SET;
}
inline RunAggregationQueryRequest::QueryTypeCase RunAggregationQueryRequest::query_type_case() const {
  return RunAggregationQueryRequest::QueryTypeCase(_impl_._oneof_case_[0]);
}
inline RunAggregationQueryRequest::ConsistencySelectorCase RunAggregationQueryRequest::consistency_selector_case() const {
  return RunAggregationQueryRequest::ConsistencySelectorCase(_impl_._oneof_case_[1]);
}
// -------------------------------------------------------------------

// RunAggregationQueryResponse

// .google.firestore.v1.AggregationResult result = 1;
inline bool RunAggregationQueryResponse::has_result() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.result_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::AggregationResult& RunAggregationQueryResponse::_internal_result() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::AggregationResult* p = _impl_.result_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::AggregationResult&>(::google::firestore::v1::_AggregationResult_default_instance_);
}
inline const ::google::firestore::v1::AggregationResult& RunAggregationQueryResponse::result() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunAggregationQueryResponse.result)
  return _internal_result();
}
inline void RunAggregationQueryResponse::unsafe_arena_set_allocated_result(::google::firestore::v1::AggregationResult* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.result_);
  }
  _impl_.result_ = reinterpret_cast<::google::firestore::v1::AggregationResult*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.RunAggregationQueryResponse.result)
}
inline ::google::firestore::v1::AggregationResult* RunAggregationQueryResponse::release_result() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::AggregationResult* released = _impl_.result_;
  _impl_.result_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::firestore::v1::AggregationResult* RunAggregationQueryResponse::unsafe_arena_release_result() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunAggregationQueryResponse.result)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::AggregationResult* temp = _impl_.result_;
  _impl_.result_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::AggregationResult* RunAggregationQueryResponse::_internal_mutable_result() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.result_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::AggregationResult>(GetArena());
    _impl_.result_ = reinterpret_cast<::google::firestore::v1::AggregationResult*>(p);
  }
  return _impl_.result_;
}
inline ::google::firestore::v1::AggregationResult* RunAggregationQueryResponse::mutable_result() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::AggregationResult* _msg = _internal_mutable_result();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunAggregationQueryResponse.result)
  return _msg;
}
inline void RunAggregationQueryResponse::set_allocated_result(::google::firestore::v1::AggregationResult* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.result_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.result_ = reinterpret_cast<::google::firestore::v1::AggregationResult*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.RunAggregationQueryResponse.result)
}

// bytes transaction = 2;
inline void RunAggregationQueryResponse::clear_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.transaction_.ClearToEmpty();
}
inline const std::string& RunAggregationQueryResponse::transaction() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunAggregationQueryResponse.transaction)
  return _internal_transaction();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void RunAggregationQueryResponse::set_transaction(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.transaction_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.RunAggregationQueryResponse.transaction)
}
inline std::string* RunAggregationQueryResponse::mutable_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_transaction();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunAggregationQueryResponse.transaction)
  return _s;
}
inline const std::string& RunAggregationQueryResponse::_internal_transaction() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.transaction_.Get();
}
inline void RunAggregationQueryResponse::_internal_set_transaction(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.transaction_.Set(value, GetArena());
}
inline std::string* RunAggregationQueryResponse::_internal_mutable_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.transaction_.Mutable( GetArena());
}
inline std::string* RunAggregationQueryResponse::release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunAggregationQueryResponse.transaction)
  return _impl_.transaction_.Release();
}
inline void RunAggregationQueryResponse::set_allocated_transaction(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.transaction_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.transaction_.IsDefault()) {
          _impl_.transaction_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.RunAggregationQueryResponse.transaction)
}

// .google.protobuf.Timestamp read_time = 3;
inline bool RunAggregationQueryResponse::has_read_time() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.read_time_ != nullptr);
  return value;
}
inline const ::google::protobuf::Timestamp& RunAggregationQueryResponse::_internal_read_time() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::protobuf::Timestamp* p = _impl_.read_time_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& RunAggregationQueryResponse::read_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.RunAggregationQueryResponse.read_time)
  return _internal_read_time();
}
inline void RunAggregationQueryResponse::unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.read_time_);
  }
  _impl_.read_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.RunAggregationQueryResponse.read_time)
}
inline ::google::protobuf::Timestamp* RunAggregationQueryResponse::release_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::protobuf::Timestamp* released = _impl_.read_time_;
  _impl_.read_time_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::protobuf::Timestamp* RunAggregationQueryResponse::unsafe_arena_release_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.RunAggregationQueryResponse.read_time)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::protobuf::Timestamp* temp = _impl_.read_time_;
  _impl_.read_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* RunAggregationQueryResponse::_internal_mutable_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000002u;
  if (_impl_.read_time_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArena());
    _impl_.read_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(p);
  }
  return _impl_.read_time_;
}
inline ::google::protobuf::Timestamp* RunAggregationQueryResponse::mutable_read_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_read_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.RunAggregationQueryResponse.read_time)
  return _msg;
}
inline void RunAggregationQueryResponse::set_allocated_read_time(::google::protobuf::Timestamp* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.read_time_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.read_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.RunAggregationQueryResponse.read_time)
}

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

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

// WriteRequest

// string database = 1;
inline void WriteRequest::clear_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.database_.ClearToEmpty();
}
inline const std::string& WriteRequest::database() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.WriteRequest.database)
  return _internal_database();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void WriteRequest::set_database(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.database_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.WriteRequest.database)
}
inline std::string* WriteRequest::mutable_database() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_database();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.WriteRequest.database)
  return _s;
}
inline const std::string& WriteRequest::_internal_database() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.database_.Get();
}
inline void WriteRequest::_internal_set_database(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.database_.Set(value, GetArena());
}
inline std::string* WriteRequest::_internal_mutable_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.database_.Mutable( GetArena());
}
inline std::string* WriteRequest::release_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.WriteRequest.database)
  return _impl_.database_.Release();
}
inline void WriteRequest::set_allocated_database(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.database_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.database_.IsDefault()) {
          _impl_.database_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.WriteRequest.database)
}

// string stream_id = 2;
inline void WriteRequest::clear_stream_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.stream_id_.ClearToEmpty();
}
inline const std::string& WriteRequest::stream_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.WriteRequest.stream_id)
  return _internal_stream_id();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void WriteRequest::set_stream_id(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.stream_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.WriteRequest.stream_id)
}
inline std::string* WriteRequest::mutable_stream_id() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_stream_id();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.WriteRequest.stream_id)
  return _s;
}
inline const std::string& WriteRequest::_internal_stream_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.stream_id_.Get();
}
inline void WriteRequest::_internal_set_stream_id(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.stream_id_.Set(value, GetArena());
}
inline std::string* WriteRequest::_internal_mutable_stream_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.stream_id_.Mutable( GetArena());
}
inline std::string* WriteRequest::release_stream_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.WriteRequest.stream_id)
  return _impl_.stream_id_.Release();
}
inline void WriteRequest::set_allocated_stream_id(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.stream_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.stream_id_.IsDefault()) {
          _impl_.stream_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.WriteRequest.stream_id)
}

// repeated .google.firestore.v1.Write writes = 3;
inline int WriteRequest::_internal_writes_size() const {
  return _internal_writes().size();
}
inline int WriteRequest::writes_size() const {
  return _internal_writes_size();
}
inline ::google::firestore::v1::Write* WriteRequest::mutable_writes(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.WriteRequest.writes)
  return _internal_mutable_writes()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Write>* WriteRequest::mutable_writes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.WriteRequest.writes)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_writes();
}
inline const ::google::firestore::v1::Write& WriteRequest::writes(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.WriteRequest.writes)
  return _internal_writes().Get(index);
}
inline ::google::firestore::v1::Write* WriteRequest::add_writes() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::google::firestore::v1::Write* _add = _internal_mutable_writes()->Add();
  // @@protoc_insertion_point(field_add:google.firestore.v1.WriteRequest.writes)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Write>& WriteRequest::writes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.WriteRequest.writes)
  return _internal_writes();
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Write>&
WriteRequest::_internal_writes() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.writes_;
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Write>*
WriteRequest::_internal_mutable_writes() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.writes_;
}

// bytes stream_token = 4;
inline void WriteRequest::clear_stream_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.stream_token_.ClearToEmpty();
}
inline const std::string& WriteRequest::stream_token() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.WriteRequest.stream_token)
  return _internal_stream_token();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void WriteRequest::set_stream_token(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.stream_token_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.WriteRequest.stream_token)
}
inline std::string* WriteRequest::mutable_stream_token() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_stream_token();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.WriteRequest.stream_token)
  return _s;
}
inline const std::string& WriteRequest::_internal_stream_token() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.stream_token_.Get();
}
inline void WriteRequest::_internal_set_stream_token(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.stream_token_.Set(value, GetArena());
}
inline std::string* WriteRequest::_internal_mutable_stream_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.stream_token_.Mutable( GetArena());
}
inline std::string* WriteRequest::release_stream_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.WriteRequest.stream_token)
  return _impl_.stream_token_.Release();
}
inline void WriteRequest::set_allocated_stream_token(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.stream_token_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.stream_token_.IsDefault()) {
          _impl_.stream_token_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.WriteRequest.stream_token)
}

// map<string, string> labels = 5;
inline int WriteRequest::_internal_labels_size() const {
  return _internal_labels().size();
}
inline int WriteRequest::labels_size() const {
  return _internal_labels_size();
}
inline void WriteRequest::clear_labels() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.labels_.Clear();
}
inline const ::google::protobuf::Map<std::string, std::string>& WriteRequest::_internal_labels() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.labels_.GetMap();
}
inline const ::google::protobuf::Map<std::string, std::string>& WriteRequest::labels() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:google.firestore.v1.WriteRequest.labels)
  return _internal_labels();
}
inline ::google::protobuf::Map<std::string, std::string>* WriteRequest::_internal_mutable_labels() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.labels_.MutableMap();
}
inline ::google::protobuf::Map<std::string, std::string>* WriteRequest::mutable_labels() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_map:google.firestore.v1.WriteRequest.labels)
  return _internal_mutable_labels();
}

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

// WriteResponse

// string stream_id = 1;
inline void WriteResponse::clear_stream_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.stream_id_.ClearToEmpty();
}
inline const std::string& WriteResponse::stream_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.WriteResponse.stream_id)
  return _internal_stream_id();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void WriteResponse::set_stream_id(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.stream_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.WriteResponse.stream_id)
}
inline std::string* WriteResponse::mutable_stream_id() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_stream_id();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.WriteResponse.stream_id)
  return _s;
}
inline const std::string& WriteResponse::_internal_stream_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.stream_id_.Get();
}
inline void WriteResponse::_internal_set_stream_id(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.stream_id_.Set(value, GetArena());
}
inline std::string* WriteResponse::_internal_mutable_stream_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.stream_id_.Mutable( GetArena());
}
inline std::string* WriteResponse::release_stream_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.WriteResponse.stream_id)
  return _impl_.stream_id_.Release();
}
inline void WriteResponse::set_allocated_stream_id(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.stream_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.stream_id_.IsDefault()) {
          _impl_.stream_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.WriteResponse.stream_id)
}

// bytes stream_token = 2;
inline void WriteResponse::clear_stream_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.stream_token_.ClearToEmpty();
}
inline const std::string& WriteResponse::stream_token() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.WriteResponse.stream_token)
  return _internal_stream_token();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void WriteResponse::set_stream_token(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.stream_token_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.WriteResponse.stream_token)
}
inline std::string* WriteResponse::mutable_stream_token() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_stream_token();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.WriteResponse.stream_token)
  return _s;
}
inline const std::string& WriteResponse::_internal_stream_token() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.stream_token_.Get();
}
inline void WriteResponse::_internal_set_stream_token(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.stream_token_.Set(value, GetArena());
}
inline std::string* WriteResponse::_internal_mutable_stream_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.stream_token_.Mutable( GetArena());
}
inline std::string* WriteResponse::release_stream_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.WriteResponse.stream_token)
  return _impl_.stream_token_.Release();
}
inline void WriteResponse::set_allocated_stream_token(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.stream_token_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.stream_token_.IsDefault()) {
          _impl_.stream_token_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.WriteResponse.stream_token)
}

// repeated .google.firestore.v1.WriteResult write_results = 3;
inline int WriteResponse::_internal_write_results_size() const {
  return _internal_write_results().size();
}
inline int WriteResponse::write_results_size() const {
  return _internal_write_results_size();
}
inline ::google::firestore::v1::WriteResult* WriteResponse::mutable_write_results(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.WriteResponse.write_results)
  return _internal_mutable_write_results()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::WriteResult>* WriteResponse::mutable_write_results()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.WriteResponse.write_results)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_write_results();
}
inline const ::google::firestore::v1::WriteResult& WriteResponse::write_results(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.WriteResponse.write_results)
  return _internal_write_results().Get(index);
}
inline ::google::firestore::v1::WriteResult* WriteResponse::add_write_results() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::google::firestore::v1::WriteResult* _add = _internal_mutable_write_results()->Add();
  // @@protoc_insertion_point(field_add:google.firestore.v1.WriteResponse.write_results)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::WriteResult>& WriteResponse::write_results() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.WriteResponse.write_results)
  return _internal_write_results();
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::WriteResult>&
WriteResponse::_internal_write_results() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.write_results_;
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::WriteResult>*
WriteResponse::_internal_mutable_write_results() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.write_results_;
}

// .google.protobuf.Timestamp commit_time = 4;
inline bool WriteResponse::has_commit_time() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.commit_time_ != nullptr);
  return value;
}
inline const ::google::protobuf::Timestamp& WriteResponse::_internal_commit_time() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::protobuf::Timestamp* p = _impl_.commit_time_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& WriteResponse::commit_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.WriteResponse.commit_time)
  return _internal_commit_time();
}
inline void WriteResponse::unsafe_arena_set_allocated_commit_time(::google::protobuf::Timestamp* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.commit_time_);
  }
  _impl_.commit_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.WriteResponse.commit_time)
}
inline ::google::protobuf::Timestamp* WriteResponse::release_commit_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Timestamp* released = _impl_.commit_time_;
  _impl_.commit_time_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::protobuf::Timestamp* WriteResponse::unsafe_arena_release_commit_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.WriteResponse.commit_time)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Timestamp* temp = _impl_.commit_time_;
  _impl_.commit_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* WriteResponse::_internal_mutable_commit_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.commit_time_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArena());
    _impl_.commit_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(p);
  }
  return _impl_.commit_time_;
}
inline ::google::protobuf::Timestamp* WriteResponse::mutable_commit_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_commit_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.WriteResponse.commit_time)
  return _msg;
}
inline void WriteResponse::set_allocated_commit_time(::google::protobuf::Timestamp* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  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::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.commit_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.WriteResponse.commit_time)
}

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

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

// ListenRequest

// string database = 1;
inline void ListenRequest::clear_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.database_.ClearToEmpty();
}
inline const std::string& ListenRequest::database() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListenRequest.database)
  return _internal_database();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListenRequest::set_database(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.database_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListenRequest.database)
}
inline std::string* ListenRequest::mutable_database() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_database();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListenRequest.database)
  return _s;
}
inline const std::string& ListenRequest::_internal_database() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.database_.Get();
}
inline void ListenRequest::_internal_set_database(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.database_.Set(value, GetArena());
}
inline std::string* ListenRequest::_internal_mutable_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.database_.Mutable( GetArena());
}
inline std::string* ListenRequest::release_database() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListenRequest.database)
  return _impl_.database_.Release();
}
inline void ListenRequest::set_allocated_database(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.database_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.database_.IsDefault()) {
          _impl_.database_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.ListenRequest.database)
}

// .google.firestore.v1.Target add_target = 2;
inline bool ListenRequest::has_add_target() const {
  return target_change_case() == kAddTarget;
}
inline bool ListenRequest::_internal_has_add_target() const {
  return target_change_case() == kAddTarget;
}
inline void ListenRequest::set_has_add_target() {
  _impl_._oneof_case_[0] = kAddTarget;
}
inline void ListenRequest::clear_add_target() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (target_change_case() == kAddTarget) {
    if (GetArena() == nullptr) {
      delete _impl_.target_change_.add_target_;
    }
    clear_has_target_change();
  }
}
inline ::google::firestore::v1::Target* ListenRequest::release_add_target() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListenRequest.add_target)
  if (target_change_case() == kAddTarget) {
    clear_has_target_change();
    auto* temp = _impl_.target_change_.add_target_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.target_change_.add_target_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::Target& ListenRequest::_internal_add_target() const {
  return target_change_case() == kAddTarget ? *_impl_.target_change_.add_target_ : reinterpret_cast<::google::firestore::v1::Target&>(::google::firestore::v1::_Target_default_instance_);
}
inline const ::google::firestore::v1::Target& ListenRequest::add_target() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListenRequest.add_target)
  return _internal_add_target();
}
inline ::google::firestore::v1::Target* ListenRequest::unsafe_arena_release_add_target() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.ListenRequest.add_target)
  if (target_change_case() == kAddTarget) {
    clear_has_target_change();
    auto* temp = _impl_.target_change_.add_target_;
    _impl_.target_change_.add_target_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ListenRequest::unsafe_arena_set_allocated_add_target(::google::firestore::v1::Target* 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_target_change();
  if (value) {
    set_has_add_target();
    _impl_.target_change_.add_target_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.ListenRequest.add_target)
}
inline ::google::firestore::v1::Target* ListenRequest::_internal_mutable_add_target() {
  if (target_change_case() != kAddTarget) {
    clear_target_change();
    set_has_add_target();
    _impl_.target_change_.add_target_ = CreateMaybeMessage<::google::firestore::v1::Target>(GetArena());
  }
  return _impl_.target_change_.add_target_;
}
inline ::google::firestore::v1::Target* ListenRequest::mutable_add_target() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Target* _msg = _internal_mutable_add_target();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListenRequest.add_target)
  return _msg;
}

// int32 remove_target = 3;
inline bool ListenRequest::has_remove_target() const {
  return target_change_case() == kRemoveTarget;
}
inline void ListenRequest::set_has_remove_target() {
  _impl_._oneof_case_[0] = kRemoveTarget;
}
inline void ListenRequest::clear_remove_target() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (target_change_case() == kRemoveTarget) {
    _impl_.target_change_.remove_target_ = 0;
    clear_has_target_change();
  }
}
inline ::int32_t ListenRequest::remove_target() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListenRequest.remove_target)
  return _internal_remove_target();
}
inline void ListenRequest::set_remove_target(::int32_t value) {
  _internal_set_remove_target(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListenRequest.remove_target)
}
inline ::int32_t ListenRequest::_internal_remove_target() const {
  if (target_change_case() == kRemoveTarget) {
    return _impl_.target_change_.remove_target_;
  }
  return 0;
}
inline void ListenRequest::_internal_set_remove_target(::int32_t value) {
  if (target_change_case() != kRemoveTarget) {
    clear_target_change();
    set_has_remove_target();
  }
  _impl_.target_change_.remove_target_ = value;
}

// map<string, string> labels = 4;
inline int ListenRequest::_internal_labels_size() const {
  return _internal_labels().size();
}
inline int ListenRequest::labels_size() const {
  return _internal_labels_size();
}
inline void ListenRequest::clear_labels() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.labels_.Clear();
}
inline const ::google::protobuf::Map<std::string, std::string>& ListenRequest::_internal_labels() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.labels_.GetMap();
}
inline const ::google::protobuf::Map<std::string, std::string>& ListenRequest::labels() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:google.firestore.v1.ListenRequest.labels)
  return _internal_labels();
}
inline ::google::protobuf::Map<std::string, std::string>* ListenRequest::_internal_mutable_labels() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.labels_.MutableMap();
}
inline ::google::protobuf::Map<std::string, std::string>* ListenRequest::mutable_labels() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_map:google.firestore.v1.ListenRequest.labels)
  return _internal_mutable_labels();
}

inline bool ListenRequest::has_target_change() const {
  return target_change_case() != TARGET_CHANGE_NOT_SET;
}
inline void ListenRequest::clear_has_target_change() {
  _impl_._oneof_case_[0] = TARGET_CHANGE_NOT_SET;
}
inline ListenRequest::TargetChangeCase ListenRequest::target_change_case() const {
  return ListenRequest::TargetChangeCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// ListenResponse

// .google.firestore.v1.TargetChange target_change = 2;
inline bool ListenResponse::has_target_change() const {
  return response_type_case() == kTargetChange;
}
inline bool ListenResponse::_internal_has_target_change() const {
  return response_type_case() == kTargetChange;
}
inline void ListenResponse::set_has_target_change() {
  _impl_._oneof_case_[0] = kTargetChange;
}
inline void ListenResponse::clear_target_change() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (response_type_case() == kTargetChange) {
    if (GetArena() == nullptr) {
      delete _impl_.response_type_.target_change_;
    }
    clear_has_response_type();
  }
}
inline ::google::firestore::v1::TargetChange* ListenResponse::release_target_change() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListenResponse.target_change)
  if (response_type_case() == kTargetChange) {
    clear_has_response_type();
    auto* temp = _impl_.response_type_.target_change_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.response_type_.target_change_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::TargetChange& ListenResponse::_internal_target_change() const {
  return response_type_case() == kTargetChange ? *_impl_.response_type_.target_change_ : reinterpret_cast<::google::firestore::v1::TargetChange&>(::google::firestore::v1::_TargetChange_default_instance_);
}
inline const ::google::firestore::v1::TargetChange& ListenResponse::target_change() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListenResponse.target_change)
  return _internal_target_change();
}
inline ::google::firestore::v1::TargetChange* ListenResponse::unsafe_arena_release_target_change() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.ListenResponse.target_change)
  if (response_type_case() == kTargetChange) {
    clear_has_response_type();
    auto* temp = _impl_.response_type_.target_change_;
    _impl_.response_type_.target_change_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ListenResponse::unsafe_arena_set_allocated_target_change(::google::firestore::v1::TargetChange* 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_response_type();
  if (value) {
    set_has_target_change();
    _impl_.response_type_.target_change_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.ListenResponse.target_change)
}
inline ::google::firestore::v1::TargetChange* ListenResponse::_internal_mutable_target_change() {
  if (response_type_case() != kTargetChange) {
    clear_response_type();
    set_has_target_change();
    _impl_.response_type_.target_change_ = CreateMaybeMessage<::google::firestore::v1::TargetChange>(GetArena());
  }
  return _impl_.response_type_.target_change_;
}
inline ::google::firestore::v1::TargetChange* ListenResponse::mutable_target_change() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::TargetChange* _msg = _internal_mutable_target_change();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListenResponse.target_change)
  return _msg;
}

// .google.firestore.v1.DocumentChange document_change = 3;
inline bool ListenResponse::has_document_change() const {
  return response_type_case() == kDocumentChange;
}
inline bool ListenResponse::_internal_has_document_change() const {
  return response_type_case() == kDocumentChange;
}
inline void ListenResponse::set_has_document_change() {
  _impl_._oneof_case_[0] = kDocumentChange;
}
inline ::google::firestore::v1::DocumentChange* ListenResponse::release_document_change() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListenResponse.document_change)
  if (response_type_case() == kDocumentChange) {
    clear_has_response_type();
    auto* temp = _impl_.response_type_.document_change_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.response_type_.document_change_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::DocumentChange& ListenResponse::_internal_document_change() const {
  return response_type_case() == kDocumentChange ? *_impl_.response_type_.document_change_ : reinterpret_cast<::google::firestore::v1::DocumentChange&>(::google::firestore::v1::_DocumentChange_default_instance_);
}
inline const ::google::firestore::v1::DocumentChange& ListenResponse::document_change() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListenResponse.document_change)
  return _internal_document_change();
}
inline ::google::firestore::v1::DocumentChange* ListenResponse::unsafe_arena_release_document_change() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.ListenResponse.document_change)
  if (response_type_case() == kDocumentChange) {
    clear_has_response_type();
    auto* temp = _impl_.response_type_.document_change_;
    _impl_.response_type_.document_change_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ListenResponse::unsafe_arena_set_allocated_document_change(::google::firestore::v1::DocumentChange* 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_response_type();
  if (value) {
    set_has_document_change();
    _impl_.response_type_.document_change_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.ListenResponse.document_change)
}
inline ::google::firestore::v1::DocumentChange* ListenResponse::_internal_mutable_document_change() {
  if (response_type_case() != kDocumentChange) {
    clear_response_type();
    set_has_document_change();
    _impl_.response_type_.document_change_ = CreateMaybeMessage<::google::firestore::v1::DocumentChange>(GetArena());
  }
  return _impl_.response_type_.document_change_;
}
inline ::google::firestore::v1::DocumentChange* ListenResponse::mutable_document_change() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::DocumentChange* _msg = _internal_mutable_document_change();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListenResponse.document_change)
  return _msg;
}

// .google.firestore.v1.DocumentDelete document_delete = 4;
inline bool ListenResponse::has_document_delete() const {
  return response_type_case() == kDocumentDelete;
}
inline bool ListenResponse::_internal_has_document_delete() const {
  return response_type_case() == kDocumentDelete;
}
inline void ListenResponse::set_has_document_delete() {
  _impl_._oneof_case_[0] = kDocumentDelete;
}
inline ::google::firestore::v1::DocumentDelete* ListenResponse::release_document_delete() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListenResponse.document_delete)
  if (response_type_case() == kDocumentDelete) {
    clear_has_response_type();
    auto* temp = _impl_.response_type_.document_delete_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.response_type_.document_delete_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::DocumentDelete& ListenResponse::_internal_document_delete() const {
  return response_type_case() == kDocumentDelete ? *_impl_.response_type_.document_delete_ : reinterpret_cast<::google::firestore::v1::DocumentDelete&>(::google::firestore::v1::_DocumentDelete_default_instance_);
}
inline const ::google::firestore::v1::DocumentDelete& ListenResponse::document_delete() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListenResponse.document_delete)
  return _internal_document_delete();
}
inline ::google::firestore::v1::DocumentDelete* ListenResponse::unsafe_arena_release_document_delete() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.ListenResponse.document_delete)
  if (response_type_case() == kDocumentDelete) {
    clear_has_response_type();
    auto* temp = _impl_.response_type_.document_delete_;
    _impl_.response_type_.document_delete_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ListenResponse::unsafe_arena_set_allocated_document_delete(::google::firestore::v1::DocumentDelete* 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_response_type();
  if (value) {
    set_has_document_delete();
    _impl_.response_type_.document_delete_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.ListenResponse.document_delete)
}
inline ::google::firestore::v1::DocumentDelete* ListenResponse::_internal_mutable_document_delete() {
  if (response_type_case() != kDocumentDelete) {
    clear_response_type();
    set_has_document_delete();
    _impl_.response_type_.document_delete_ = CreateMaybeMessage<::google::firestore::v1::DocumentDelete>(GetArena());
  }
  return _impl_.response_type_.document_delete_;
}
inline ::google::firestore::v1::DocumentDelete* ListenResponse::mutable_document_delete() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::DocumentDelete* _msg = _internal_mutable_document_delete();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListenResponse.document_delete)
  return _msg;
}

// .google.firestore.v1.DocumentRemove document_remove = 6;
inline bool ListenResponse::has_document_remove() const {
  return response_type_case() == kDocumentRemove;
}
inline bool ListenResponse::_internal_has_document_remove() const {
  return response_type_case() == kDocumentRemove;
}
inline void ListenResponse::set_has_document_remove() {
  _impl_._oneof_case_[0] = kDocumentRemove;
}
inline ::google::firestore::v1::DocumentRemove* ListenResponse::release_document_remove() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListenResponse.document_remove)
  if (response_type_case() == kDocumentRemove) {
    clear_has_response_type();
    auto* temp = _impl_.response_type_.document_remove_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.response_type_.document_remove_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::DocumentRemove& ListenResponse::_internal_document_remove() const {
  return response_type_case() == kDocumentRemove ? *_impl_.response_type_.document_remove_ : reinterpret_cast<::google::firestore::v1::DocumentRemove&>(::google::firestore::v1::_DocumentRemove_default_instance_);
}
inline const ::google::firestore::v1::DocumentRemove& ListenResponse::document_remove() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListenResponse.document_remove)
  return _internal_document_remove();
}
inline ::google::firestore::v1::DocumentRemove* ListenResponse::unsafe_arena_release_document_remove() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.ListenResponse.document_remove)
  if (response_type_case() == kDocumentRemove) {
    clear_has_response_type();
    auto* temp = _impl_.response_type_.document_remove_;
    _impl_.response_type_.document_remove_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ListenResponse::unsafe_arena_set_allocated_document_remove(::google::firestore::v1::DocumentRemove* 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_response_type();
  if (value) {
    set_has_document_remove();
    _impl_.response_type_.document_remove_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.ListenResponse.document_remove)
}
inline ::google::firestore::v1::DocumentRemove* ListenResponse::_internal_mutable_document_remove() {
  if (response_type_case() != kDocumentRemove) {
    clear_response_type();
    set_has_document_remove();
    _impl_.response_type_.document_remove_ = CreateMaybeMessage<::google::firestore::v1::DocumentRemove>(GetArena());
  }
  return _impl_.response_type_.document_remove_;
}
inline ::google::firestore::v1::DocumentRemove* ListenResponse::mutable_document_remove() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::DocumentRemove* _msg = _internal_mutable_document_remove();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListenResponse.document_remove)
  return _msg;
}

// .google.firestore.v1.ExistenceFilter filter = 5;
inline bool ListenResponse::has_filter() const {
  return response_type_case() == kFilter;
}
inline bool ListenResponse::_internal_has_filter() const {
  return response_type_case() == kFilter;
}
inline void ListenResponse::set_has_filter() {
  _impl_._oneof_case_[0] = kFilter;
}
inline ::google::firestore::v1::ExistenceFilter* ListenResponse::release_filter() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListenResponse.filter)
  if (response_type_case() == kFilter) {
    clear_has_response_type();
    auto* temp = _impl_.response_type_.filter_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.response_type_.filter_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::ExistenceFilter& ListenResponse::_internal_filter() const {
  return response_type_case() == kFilter ? *_impl_.response_type_.filter_ : reinterpret_cast<::google::firestore::v1::ExistenceFilter&>(::google::firestore::v1::_ExistenceFilter_default_instance_);
}
inline const ::google::firestore::v1::ExistenceFilter& ListenResponse::filter() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListenResponse.filter)
  return _internal_filter();
}
inline ::google::firestore::v1::ExistenceFilter* ListenResponse::unsafe_arena_release_filter() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.ListenResponse.filter)
  if (response_type_case() == kFilter) {
    clear_has_response_type();
    auto* temp = _impl_.response_type_.filter_;
    _impl_.response_type_.filter_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ListenResponse::unsafe_arena_set_allocated_filter(::google::firestore::v1::ExistenceFilter* 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_response_type();
  if (value) {
    set_has_filter();
    _impl_.response_type_.filter_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.ListenResponse.filter)
}
inline ::google::firestore::v1::ExistenceFilter* ListenResponse::_internal_mutable_filter() {
  if (response_type_case() != kFilter) {
    clear_response_type();
    set_has_filter();
    _impl_.response_type_.filter_ = CreateMaybeMessage<::google::firestore::v1::ExistenceFilter>(GetArena());
  }
  return _impl_.response_type_.filter_;
}
inline ::google::firestore::v1::ExistenceFilter* ListenResponse::mutable_filter() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::ExistenceFilter* _msg = _internal_mutable_filter();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListenResponse.filter)
  return _msg;
}

inline bool ListenResponse::has_response_type() const {
  return response_type_case() != RESPONSE_TYPE_NOT_SET;
}
inline void ListenResponse::clear_has_response_type() {
  _impl_._oneof_case_[0] = RESPONSE_TYPE_NOT_SET;
}
inline ListenResponse::ResponseTypeCase ListenResponse::response_type_case() const {
  return ListenResponse::ResponseTypeCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// Target_DocumentsTarget

// repeated string documents = 2;
inline int Target_DocumentsTarget::_internal_documents_size() const {
  return _internal_documents().size();
}
inline int Target_DocumentsTarget::documents_size() const {
  return _internal_documents_size();
}
inline void Target_DocumentsTarget::clear_documents() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.documents_.Clear();
}
inline std::string* Target_DocumentsTarget::add_documents()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  std::string* _s = _internal_mutable_documents()->Add();
  // @@protoc_insertion_point(field_add_mutable:google.firestore.v1.Target.DocumentsTarget.documents)
  return _s;
}
inline const std::string& Target_DocumentsTarget::documents(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Target.DocumentsTarget.documents)
  return _internal_documents().Get(index);
}
inline std::string* Target_DocumentsTarget::mutable_documents(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Target.DocumentsTarget.documents)
  return _internal_mutable_documents()->Mutable(index);
}
inline void Target_DocumentsTarget::set_documents(int index, const std::string& value) {
  _internal_mutable_documents()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.Target.DocumentsTarget.documents)
}
inline void Target_DocumentsTarget::set_documents(int index, std::string&& value) {
  _internal_mutable_documents()->Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:google.firestore.v1.Target.DocumentsTarget.documents)
}
inline void Target_DocumentsTarget::set_documents(int index, const char* value) {
  ABSL_DCHECK(value != nullptr);
  _internal_mutable_documents()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:google.firestore.v1.Target.DocumentsTarget.documents)
}
inline void Target_DocumentsTarget::set_documents(int index, const char* value,
                              std::size_t size) {
  _internal_mutable_documents()->Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:google.firestore.v1.Target.DocumentsTarget.documents)
}
inline void Target_DocumentsTarget::set_documents(int index, absl::string_view value) {
  _internal_mutable_documents()->Mutable(index)->assign(value.data(),
                                                     value.size());
  // @@protoc_insertion_point(field_set_string_piece:google.firestore.v1.Target.DocumentsTarget.documents)
}
inline void Target_DocumentsTarget::add_documents(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_documents()->Add()->assign(value);
  // @@protoc_insertion_point(field_add:google.firestore.v1.Target.DocumentsTarget.documents)
}
inline void Target_DocumentsTarget::add_documents(std::string&& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_documents()->Add(std::move(value));
  // @@protoc_insertion_point(field_add:google.firestore.v1.Target.DocumentsTarget.documents)
}
inline void Target_DocumentsTarget::add_documents(const char* value) {
  ABSL_DCHECK(value != nullptr);
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_documents()->Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:google.firestore.v1.Target.DocumentsTarget.documents)
}
inline void Target_DocumentsTarget::add_documents(const char* value, std::size_t size) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_documents()->Add()->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:google.firestore.v1.Target.DocumentsTarget.documents)
}
inline void Target_DocumentsTarget::add_documents(absl::string_view value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_documents()->Add()->assign(value.data(), value.size());
  // @@protoc_insertion_point(field_add_string_piece:google.firestore.v1.Target.DocumentsTarget.documents)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
Target_DocumentsTarget::documents() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.Target.DocumentsTarget.documents)
  return _internal_documents();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
Target_DocumentsTarget::mutable_documents() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.Target.DocumentsTarget.documents)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_documents();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
Target_DocumentsTarget::_internal_documents() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.documents_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
Target_DocumentsTarget::_internal_mutable_documents() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.documents_;
}

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

// Target_QueryTarget

// string parent = 1;
inline void Target_QueryTarget::clear_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.parent_.ClearToEmpty();
}
inline const std::string& Target_QueryTarget::parent() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Target.QueryTarget.parent)
  return _internal_parent();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Target_QueryTarget::set_parent(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.parent_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.Target.QueryTarget.parent)
}
inline std::string* Target_QueryTarget::mutable_parent() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_parent();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Target.QueryTarget.parent)
  return _s;
}
inline const std::string& Target_QueryTarget::_internal_parent() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.parent_.Get();
}
inline void Target_QueryTarget::_internal_set_parent(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.parent_.Set(value, GetArena());
}
inline std::string* Target_QueryTarget::_internal_mutable_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.parent_.Mutable( GetArena());
}
inline std::string* Target_QueryTarget::release_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.Target.QueryTarget.parent)
  return _impl_.parent_.Release();
}
inline void Target_QueryTarget::set_allocated_parent(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.parent_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.parent_.IsDefault()) {
          _impl_.parent_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.Target.QueryTarget.parent)
}

// .google.firestore.v1.StructuredQuery structured_query = 2;
inline bool Target_QueryTarget::has_structured_query() const {
  return query_type_case() == kStructuredQuery;
}
inline bool Target_QueryTarget::_internal_has_structured_query() const {
  return query_type_case() == kStructuredQuery;
}
inline void Target_QueryTarget::set_has_structured_query() {
  _impl_._oneof_case_[0] = kStructuredQuery;
}
inline ::google::firestore::v1::StructuredQuery* Target_QueryTarget::release_structured_query() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.Target.QueryTarget.structured_query)
  if (query_type_case() == kStructuredQuery) {
    clear_has_query_type();
    auto* temp = _impl_.query_type_.structured_query_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.query_type_.structured_query_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::StructuredQuery& Target_QueryTarget::_internal_structured_query() const {
  return query_type_case() == kStructuredQuery ? *_impl_.query_type_.structured_query_ : reinterpret_cast<::google::firestore::v1::StructuredQuery&>(::google::firestore::v1::_StructuredQuery_default_instance_);
}
inline const ::google::firestore::v1::StructuredQuery& Target_QueryTarget::structured_query() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Target.QueryTarget.structured_query)
  return _internal_structured_query();
}
inline ::google::firestore::v1::StructuredQuery* Target_QueryTarget::unsafe_arena_release_structured_query() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.Target.QueryTarget.structured_query)
  if (query_type_case() == kStructuredQuery) {
    clear_has_query_type();
    auto* temp = _impl_.query_type_.structured_query_;
    _impl_.query_type_.structured_query_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Target_QueryTarget::unsafe_arena_set_allocated_structured_query(::google::firestore::v1::StructuredQuery* 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_query_type();
  if (value) {
    set_has_structured_query();
    _impl_.query_type_.structured_query_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.Target.QueryTarget.structured_query)
}
inline ::google::firestore::v1::StructuredQuery* Target_QueryTarget::_internal_mutable_structured_query() {
  if (query_type_case() != kStructuredQuery) {
    clear_query_type();
    set_has_structured_query();
    _impl_.query_type_.structured_query_ = CreateMaybeMessage<::google::firestore::v1::StructuredQuery>(GetArena());
  }
  return _impl_.query_type_.structured_query_;
}
inline ::google::firestore::v1::StructuredQuery* Target_QueryTarget::mutable_structured_query() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::StructuredQuery* _msg = _internal_mutable_structured_query();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Target.QueryTarget.structured_query)
  return _msg;
}

inline bool Target_QueryTarget::has_query_type() const {
  return query_type_case() != QUERY_TYPE_NOT_SET;
}
inline void Target_QueryTarget::clear_has_query_type() {
  _impl_._oneof_case_[0] = QUERY_TYPE_NOT_SET;
}
inline Target_QueryTarget::QueryTypeCase Target_QueryTarget::query_type_case() const {
  return Target_QueryTarget::QueryTypeCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// Target

// .google.firestore.v1.Target.QueryTarget query = 2;
inline bool Target::has_query() const {
  return target_type_case() == kQuery;
}
inline bool Target::_internal_has_query() const {
  return target_type_case() == kQuery;
}
inline void Target::set_has_query() {
  _impl_._oneof_case_[0] = kQuery;
}
inline void Target::clear_query() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (target_type_case() == kQuery) {
    if (GetArena() == nullptr) {
      delete _impl_.target_type_.query_;
    }
    clear_has_target_type();
  }
}
inline ::google::firestore::v1::Target_QueryTarget* Target::release_query() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.Target.query)
  if (target_type_case() == kQuery) {
    clear_has_target_type();
    auto* temp = _impl_.target_type_.query_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.target_type_.query_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::Target_QueryTarget& Target::_internal_query() const {
  return target_type_case() == kQuery ? *_impl_.target_type_.query_ : reinterpret_cast<::google::firestore::v1::Target_QueryTarget&>(::google::firestore::v1::_Target_QueryTarget_default_instance_);
}
inline const ::google::firestore::v1::Target_QueryTarget& Target::query() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Target.query)
  return _internal_query();
}
inline ::google::firestore::v1::Target_QueryTarget* Target::unsafe_arena_release_query() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.Target.query)
  if (target_type_case() == kQuery) {
    clear_has_target_type();
    auto* temp = _impl_.target_type_.query_;
    _impl_.target_type_.query_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Target::unsafe_arena_set_allocated_query(::google::firestore::v1::Target_QueryTarget* 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_target_type();
  if (value) {
    set_has_query();
    _impl_.target_type_.query_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.Target.query)
}
inline ::google::firestore::v1::Target_QueryTarget* Target::_internal_mutable_query() {
  if (target_type_case() != kQuery) {
    clear_target_type();
    set_has_query();
    _impl_.target_type_.query_ = CreateMaybeMessage<::google::firestore::v1::Target_QueryTarget>(GetArena());
  }
  return _impl_.target_type_.query_;
}
inline ::google::firestore::v1::Target_QueryTarget* Target::mutable_query() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Target_QueryTarget* _msg = _internal_mutable_query();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Target.query)
  return _msg;
}

// .google.firestore.v1.Target.DocumentsTarget documents = 3;
inline bool Target::has_documents() const {
  return target_type_case() == kDocuments;
}
inline bool Target::_internal_has_documents() const {
  return target_type_case() == kDocuments;
}
inline void Target::set_has_documents() {
  _impl_._oneof_case_[0] = kDocuments;
}
inline void Target::clear_documents() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (target_type_case() == kDocuments) {
    if (GetArena() == nullptr) {
      delete _impl_.target_type_.documents_;
    }
    clear_has_target_type();
  }
}
inline ::google::firestore::v1::Target_DocumentsTarget* Target::release_documents() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.Target.documents)
  if (target_type_case() == kDocuments) {
    clear_has_target_type();
    auto* temp = _impl_.target_type_.documents_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.target_type_.documents_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::Target_DocumentsTarget& Target::_internal_documents() const {
  return target_type_case() == kDocuments ? *_impl_.target_type_.documents_ : reinterpret_cast<::google::firestore::v1::Target_DocumentsTarget&>(::google::firestore::v1::_Target_DocumentsTarget_default_instance_);
}
inline const ::google::firestore::v1::Target_DocumentsTarget& Target::documents() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Target.documents)
  return _internal_documents();
}
inline ::google::firestore::v1::Target_DocumentsTarget* Target::unsafe_arena_release_documents() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.Target.documents)
  if (target_type_case() == kDocuments) {
    clear_has_target_type();
    auto* temp = _impl_.target_type_.documents_;
    _impl_.target_type_.documents_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Target::unsafe_arena_set_allocated_documents(::google::firestore::v1::Target_DocumentsTarget* 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_target_type();
  if (value) {
    set_has_documents();
    _impl_.target_type_.documents_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.Target.documents)
}
inline ::google::firestore::v1::Target_DocumentsTarget* Target::_internal_mutable_documents() {
  if (target_type_case() != kDocuments) {
    clear_target_type();
    set_has_documents();
    _impl_.target_type_.documents_ = CreateMaybeMessage<::google::firestore::v1::Target_DocumentsTarget>(GetArena());
  }
  return _impl_.target_type_.documents_;
}
inline ::google::firestore::v1::Target_DocumentsTarget* Target::mutable_documents() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Target_DocumentsTarget* _msg = _internal_mutable_documents();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Target.documents)
  return _msg;
}

// bytes resume_token = 4;
inline bool Target::has_resume_token() const {
  return resume_type_case() == kResumeToken;
}
inline void Target::set_has_resume_token() {
  _impl_._oneof_case_[1] = kResumeToken;
}
inline void Target::clear_resume_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (resume_type_case() == kResumeToken) {
    _impl_.resume_type_.resume_token_.Destroy();
    clear_has_resume_type();
  }
}
inline const std::string& Target::resume_token() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Target.resume_token)
  return _internal_resume_token();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Target::set_resume_token(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (resume_type_case() != kResumeToken) {
    clear_resume_type();

    set_has_resume_token();
    _impl_.resume_type_.resume_token_.InitDefault();
  }
  _impl_.resume_type_.resume_token_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.Target.resume_token)
}
inline std::string* Target::mutable_resume_token() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_resume_token();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Target.resume_token)
  return _s;
}
inline const std::string& Target::_internal_resume_token() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  if (resume_type_case() != kResumeToken) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.resume_type_.resume_token_.Get();
}
inline void Target::_internal_set_resume_token(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (resume_type_case() != kResumeToken) {
    clear_resume_type();

    set_has_resume_token();
    _impl_.resume_type_.resume_token_.InitDefault();
  }
  _impl_.resume_type_.resume_token_.Set(value, GetArena());
}
inline std::string* Target::_internal_mutable_resume_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (resume_type_case() != kResumeToken) {
    clear_resume_type();

    set_has_resume_token();
    _impl_.resume_type_.resume_token_.InitDefault();
  }
  return _impl_.resume_type_.resume_token_.Mutable( GetArena());
}
inline std::string* Target::release_resume_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.Target.resume_token)
  if (resume_type_case() != kResumeToken) {
    return nullptr;
  }
  clear_has_resume_type();
  return _impl_.resume_type_.resume_token_.Release();
}
inline void Target::set_allocated_resume_token(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (has_resume_type()) {
    clear_resume_type();
  }
  if (value != nullptr) {
    set_has_resume_token();
    _impl_.resume_type_.resume_token_.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.Target.resume_token)
}

// .google.protobuf.Timestamp read_time = 11;
inline bool Target::has_read_time() const {
  return resume_type_case() == kReadTime;
}
inline bool Target::_internal_has_read_time() const {
  return resume_type_case() == kReadTime;
}
inline void Target::set_has_read_time() {
  _impl_._oneof_case_[1] = kReadTime;
}
inline ::google::protobuf::Timestamp* Target::release_read_time() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.Target.read_time)
  if (resume_type_case() == kReadTime) {
    clear_has_resume_type();
    auto* temp = _impl_.resume_type_.read_time_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.resume_type_.read_time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::protobuf::Timestamp& Target::_internal_read_time() const {
  return resume_type_case() == kReadTime ? *_impl_.resume_type_.read_time_ : reinterpret_cast<::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& Target::read_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Target.read_time)
  return _internal_read_time();
}
inline ::google::protobuf::Timestamp* Target::unsafe_arena_release_read_time() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.Target.read_time)
  if (resume_type_case() == kReadTime) {
    clear_has_resume_type();
    auto* temp = _impl_.resume_type_.read_time_;
    _impl_.resume_type_.read_time_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Target::unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* 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_resume_type();
  if (value) {
    set_has_read_time();
    _impl_.resume_type_.read_time_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.Target.read_time)
}
inline ::google::protobuf::Timestamp* Target::_internal_mutable_read_time() {
  if (resume_type_case() != kReadTime) {
    clear_resume_type();
    set_has_read_time();
    _impl_.resume_type_.read_time_ = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArena());
  }
  return _impl_.resume_type_.read_time_;
}
inline ::google::protobuf::Timestamp* Target::mutable_read_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_read_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Target.read_time)
  return _msg;
}

// int32 target_id = 5;
inline void Target::clear_target_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.target_id_ = 0;
}
inline ::int32_t Target::target_id() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Target.target_id)
  return _internal_target_id();
}
inline void Target::set_target_id(::int32_t value) {
  _internal_set_target_id(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.Target.target_id)
}
inline ::int32_t Target::_internal_target_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.target_id_;
}
inline void Target::_internal_set_target_id(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.target_id_ = value;
}

// bool once = 6;
inline void Target::clear_once() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.once_ = false;
}
inline bool Target::once() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Target.once)
  return _internal_once();
}
inline void Target::set_once(bool value) {
  _internal_set_once(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.Target.once)
}
inline bool Target::_internal_once() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.once_;
}
inline void Target::_internal_set_once(bool value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.once_ = value;
}

// .google.protobuf.Int32Value expected_count = 12;
inline bool Target::has_expected_count() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.expected_count_ != nullptr);
  return value;
}
inline const ::google::protobuf::Int32Value& Target::_internal_expected_count() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::protobuf::Int32Value* p = _impl_.expected_count_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::protobuf::Int32Value&>(::google::protobuf::_Int32Value_default_instance_);
}
inline const ::google::protobuf::Int32Value& Target::expected_count() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Target.expected_count)
  return _internal_expected_count();
}
inline void Target::unsafe_arena_set_allocated_expected_count(::google::protobuf::Int32Value* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expected_count_);
  }
  _impl_.expected_count_ = reinterpret_cast<::google::protobuf::Int32Value*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.Target.expected_count)
}
inline ::google::protobuf::Int32Value* Target::release_expected_count() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Int32Value* released = _impl_.expected_count_;
  _impl_.expected_count_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::protobuf::Int32Value* Target::unsafe_arena_release_expected_count() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.Target.expected_count)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Int32Value* temp = _impl_.expected_count_;
  _impl_.expected_count_ = nullptr;
  return temp;
}
inline ::google::protobuf::Int32Value* Target::_internal_mutable_expected_count() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.expected_count_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::protobuf::Int32Value>(GetArena());
    _impl_.expected_count_ = reinterpret_cast<::google::protobuf::Int32Value*>(p);
  }
  return _impl_.expected_count_;
}
inline ::google::protobuf::Int32Value* Target::mutable_expected_count() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Int32Value* _msg = _internal_mutable_expected_count();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Target.expected_count)
  return _msg;
}
inline void Target::set_allocated_expected_count(::google::protobuf::Int32Value* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.expected_count_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.expected_count_ = reinterpret_cast<::google::protobuf::Int32Value*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.Target.expected_count)
}

inline bool Target::has_target_type() const {
  return target_type_case() != TARGET_TYPE_NOT_SET;
}
inline void Target::clear_has_target_type() {
  _impl_._oneof_case_[0] = TARGET_TYPE_NOT_SET;
}
inline bool Target::has_resume_type() const {
  return resume_type_case() != RESUME_TYPE_NOT_SET;
}
inline void Target::clear_has_resume_type() {
  _impl_._oneof_case_[1] = RESUME_TYPE_NOT_SET;
}
inline Target::TargetTypeCase Target::target_type_case() const {
  return Target::TargetTypeCase(_impl_._oneof_case_[0]);
}
inline Target::ResumeTypeCase Target::resume_type_case() const {
  return Target::ResumeTypeCase(_impl_._oneof_case_[1]);
}
// -------------------------------------------------------------------

// TargetChange

// .google.firestore.v1.TargetChange.TargetChangeType target_change_type = 1;
inline void TargetChange::clear_target_change_type() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.target_change_type_ = 0;
}
inline ::google::firestore::v1::TargetChange_TargetChangeType TargetChange::target_change_type() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.TargetChange.target_change_type)
  return _internal_target_change_type();
}
inline void TargetChange::set_target_change_type(::google::firestore::v1::TargetChange_TargetChangeType value) {
  _internal_set_target_change_type(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.TargetChange.target_change_type)
}
inline ::google::firestore::v1::TargetChange_TargetChangeType TargetChange::_internal_target_change_type() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return static_cast<::google::firestore::v1::TargetChange_TargetChangeType>(_impl_.target_change_type_);
}
inline void TargetChange::_internal_set_target_change_type(::google::firestore::v1::TargetChange_TargetChangeType value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.target_change_type_ = value;
}

// repeated int32 target_ids = 2;
inline int TargetChange::_internal_target_ids_size() const {
  return _internal_target_ids().size();
}
inline int TargetChange::target_ids_size() const {
  return _internal_target_ids_size();
}
inline void TargetChange::clear_target_ids() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.target_ids_.Clear();
}
inline ::int32_t TargetChange::target_ids(int index) const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.TargetChange.target_ids)
  return _internal_target_ids().Get(index);
}
inline void TargetChange::set_target_ids(int index, ::int32_t value) {
  _internal_mutable_target_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.TargetChange.target_ids)
}
inline void TargetChange::add_target_ids(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_target_ids()->Add(value);
  // @@protoc_insertion_point(field_add:google.firestore.v1.TargetChange.target_ids)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& TargetChange::target_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.TargetChange.target_ids)
  return _internal_target_ids();
}
inline ::google::protobuf::RepeatedField<::int32_t>* TargetChange::mutable_target_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.TargetChange.target_ids)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_target_ids();
}
inline const ::google::protobuf::RepeatedField<::int32_t>& TargetChange::_internal_target_ids()
    const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.target_ids_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* TargetChange::_internal_mutable_target_ids() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.target_ids_;
}

// .google.rpc.Status cause = 3;
inline bool TargetChange::has_cause() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.cause_ != nullptr);
  return value;
}
inline const ::google::rpc::Status& TargetChange::_internal_cause() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::rpc::Status* p = _impl_.cause_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::rpc::Status&>(::google::rpc::_Status_default_instance_);
}
inline const ::google::rpc::Status& TargetChange::cause() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.TargetChange.cause)
  return _internal_cause();
}
inline void TargetChange::unsafe_arena_set_allocated_cause(::google::rpc::Status* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.cause_);
  }
  _impl_.cause_ = reinterpret_cast<::google::rpc::Status*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.TargetChange.cause)
}
inline ::google::rpc::Status* TargetChange::release_cause() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::rpc::Status* released = _impl_.cause_;
  _impl_.cause_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::rpc::Status* TargetChange::unsafe_arena_release_cause() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.TargetChange.cause)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::rpc::Status* temp = _impl_.cause_;
  _impl_.cause_ = nullptr;
  return temp;
}
inline ::google::rpc::Status* TargetChange::_internal_mutable_cause() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.cause_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::rpc::Status>(GetArena());
    _impl_.cause_ = reinterpret_cast<::google::rpc::Status*>(p);
  }
  return _impl_.cause_;
}
inline ::google::rpc::Status* TargetChange::mutable_cause() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::rpc::Status* _msg = _internal_mutable_cause();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.TargetChange.cause)
  return _msg;
}
inline void TargetChange::set_allocated_cause(::google::rpc::Status* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.cause_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.cause_ = reinterpret_cast<::google::rpc::Status*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.TargetChange.cause)
}

// bytes resume_token = 4;
inline void TargetChange::clear_resume_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.resume_token_.ClearToEmpty();
}
inline const std::string& TargetChange::resume_token() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.TargetChange.resume_token)
  return _internal_resume_token();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TargetChange::set_resume_token(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.resume_token_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.TargetChange.resume_token)
}
inline std::string* TargetChange::mutable_resume_token() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_resume_token();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.TargetChange.resume_token)
  return _s;
}
inline const std::string& TargetChange::_internal_resume_token() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.resume_token_.Get();
}
inline void TargetChange::_internal_set_resume_token(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.resume_token_.Set(value, GetArena());
}
inline std::string* TargetChange::_internal_mutable_resume_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.resume_token_.Mutable( GetArena());
}
inline std::string* TargetChange::release_resume_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.TargetChange.resume_token)
  return _impl_.resume_token_.Release();
}
inline void TargetChange::set_allocated_resume_token(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.resume_token_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.resume_token_.IsDefault()) {
          _impl_.resume_token_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.TargetChange.resume_token)
}

// .google.protobuf.Timestamp read_time = 6;
inline bool TargetChange::has_read_time() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.read_time_ != nullptr);
  return value;
}
inline const ::google::protobuf::Timestamp& TargetChange::_internal_read_time() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::protobuf::Timestamp* p = _impl_.read_time_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& TargetChange::read_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.TargetChange.read_time)
  return _internal_read_time();
}
inline void TargetChange::unsafe_arena_set_allocated_read_time(::google::protobuf::Timestamp* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.read_time_);
  }
  _impl_.read_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.TargetChange.read_time)
}
inline ::google::protobuf::Timestamp* TargetChange::release_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::protobuf::Timestamp* released = _impl_.read_time_;
  _impl_.read_time_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::google::protobuf::Timestamp* TargetChange::unsafe_arena_release_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.TargetChange.read_time)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::protobuf::Timestamp* temp = _impl_.read_time_;
  _impl_.read_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* TargetChange::_internal_mutable_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000002u;
  if (_impl_.read_time_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArena());
    _impl_.read_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(p);
  }
  return _impl_.read_time_;
}
inline ::google::protobuf::Timestamp* TargetChange::mutable_read_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_read_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.TargetChange.read_time)
  return _msg;
}
inline void TargetChange::set_allocated_read_time(::google::protobuf::Timestamp* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.read_time_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.read_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.TargetChange.read_time)
}

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

// ListCollectionIdsRequest

// string parent = 1;
inline void ListCollectionIdsRequest::clear_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.parent_.ClearToEmpty();
}
inline const std::string& ListCollectionIdsRequest::parent() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListCollectionIdsRequest.parent)
  return _internal_parent();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListCollectionIdsRequest::set_parent(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.parent_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListCollectionIdsRequest.parent)
}
inline std::string* ListCollectionIdsRequest::mutable_parent() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_parent();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListCollectionIdsRequest.parent)
  return _s;
}
inline const std::string& ListCollectionIdsRequest::_internal_parent() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.parent_.Get();
}
inline void ListCollectionIdsRequest::_internal_set_parent(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.parent_.Set(value, GetArena());
}
inline std::string* ListCollectionIdsRequest::_internal_mutable_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.parent_.Mutable( GetArena());
}
inline std::string* ListCollectionIdsRequest::release_parent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListCollectionIdsRequest.parent)
  return _impl_.parent_.Release();
}
inline void ListCollectionIdsRequest::set_allocated_parent(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.parent_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.parent_.IsDefault()) {
          _impl_.parent_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.ListCollectionIdsRequest.parent)
}

// int32 page_size = 2;
inline void ListCollectionIdsRequest::clear_page_size() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.page_size_ = 0;
}
inline ::int32_t ListCollectionIdsRequest::page_size() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListCollectionIdsRequest.page_size)
  return _internal_page_size();
}
inline void ListCollectionIdsRequest::set_page_size(::int32_t value) {
  _internal_set_page_size(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListCollectionIdsRequest.page_size)
}
inline ::int32_t ListCollectionIdsRequest::_internal_page_size() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.page_size_;
}
inline void ListCollectionIdsRequest::_internal_set_page_size(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.page_size_ = value;
}

// string page_token = 3;
inline void ListCollectionIdsRequest::clear_page_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.page_token_.ClearToEmpty();
}
inline const std::string& ListCollectionIdsRequest::page_token() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListCollectionIdsRequest.page_token)
  return _internal_page_token();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListCollectionIdsRequest::set_page_token(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.page_token_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListCollectionIdsRequest.page_token)
}
inline std::string* ListCollectionIdsRequest::mutable_page_token() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_page_token();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListCollectionIdsRequest.page_token)
  return _s;
}
inline const std::string& ListCollectionIdsRequest::_internal_page_token() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.page_token_.Get();
}
inline void ListCollectionIdsRequest::_internal_set_page_token(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.page_token_.Set(value, GetArena());
}
inline std::string* ListCollectionIdsRequest::_internal_mutable_page_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.page_token_.Mutable( GetArena());
}
inline std::string* ListCollectionIdsRequest::release_page_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListCollectionIdsRequest.page_token)
  return _impl_.page_token_.Release();
}
inline void ListCollectionIdsRequest::set_allocated_page_token(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.page_token_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.page_token_.IsDefault()) {
          _impl_.page_token_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.ListCollectionIdsRequest.page_token)
}

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

// ListCollectionIdsResponse

// repeated string collection_ids = 1;
inline int ListCollectionIdsResponse::_internal_collection_ids_size() const {
  return _internal_collection_ids().size();
}
inline int ListCollectionIdsResponse::collection_ids_size() const {
  return _internal_collection_ids_size();
}
inline void ListCollectionIdsResponse::clear_collection_ids() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.collection_ids_.Clear();
}
inline std::string* ListCollectionIdsResponse::add_collection_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  std::string* _s = _internal_mutable_collection_ids()->Add();
  // @@protoc_insertion_point(field_add_mutable:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
  return _s;
}
inline const std::string& ListCollectionIdsResponse::collection_ids(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
  return _internal_collection_ids().Get(index);
}
inline std::string* ListCollectionIdsResponse::mutable_collection_ids(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
  return _internal_mutable_collection_ids()->Mutable(index);
}
inline void ListCollectionIdsResponse::set_collection_ids(int index, const std::string& value) {
  _internal_mutable_collection_ids()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
}
inline void ListCollectionIdsResponse::set_collection_ids(int index, std::string&& value) {
  _internal_mutable_collection_ids()->Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
}
inline void ListCollectionIdsResponse::set_collection_ids(int index, const char* value) {
  ABSL_DCHECK(value != nullptr);
  _internal_mutable_collection_ids()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
}
inline void ListCollectionIdsResponse::set_collection_ids(int index, const char* value,
                              std::size_t size) {
  _internal_mutable_collection_ids()->Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
}
inline void ListCollectionIdsResponse::set_collection_ids(int index, absl::string_view value) {
  _internal_mutable_collection_ids()->Mutable(index)->assign(value.data(),
                                                     value.size());
  // @@protoc_insertion_point(field_set_string_piece:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
}
inline void ListCollectionIdsResponse::add_collection_ids(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_collection_ids()->Add()->assign(value);
  // @@protoc_insertion_point(field_add:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
}
inline void ListCollectionIdsResponse::add_collection_ids(std::string&& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_collection_ids()->Add(std::move(value));
  // @@protoc_insertion_point(field_add:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
}
inline void ListCollectionIdsResponse::add_collection_ids(const char* value) {
  ABSL_DCHECK(value != nullptr);
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_collection_ids()->Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
}
inline void ListCollectionIdsResponse::add_collection_ids(const char* value, std::size_t size) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_collection_ids()->Add()->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
}
inline void ListCollectionIdsResponse::add_collection_ids(absl::string_view value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_collection_ids()->Add()->assign(value.data(), value.size());
  // @@protoc_insertion_point(field_add_string_piece:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
ListCollectionIdsResponse::collection_ids() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
  return _internal_collection_ids();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
ListCollectionIdsResponse::mutable_collection_ids() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.ListCollectionIdsResponse.collection_ids)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_collection_ids();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
ListCollectionIdsResponse::_internal_collection_ids() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.collection_ids_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
ListCollectionIdsResponse::_internal_mutable_collection_ids() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.collection_ids_;
}

// string next_page_token = 2;
inline void ListCollectionIdsResponse::clear_next_page_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.next_page_token_.ClearToEmpty();
}
inline const std::string& ListCollectionIdsResponse::next_page_token() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ListCollectionIdsResponse.next_page_token)
  return _internal_next_page_token();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListCollectionIdsResponse::set_next_page_token(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.next_page_token_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.ListCollectionIdsResponse.next_page_token)
}
inline std::string* ListCollectionIdsResponse::mutable_next_page_token() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_next_page_token();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ListCollectionIdsResponse.next_page_token)
  return _s;
}
inline const std::string& ListCollectionIdsResponse::_internal_next_page_token() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.next_page_token_.Get();
}
inline void ListCollectionIdsResponse::_internal_set_next_page_token(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.next_page_token_.Set(value, GetArena());
}
inline std::string* ListCollectionIdsResponse::_internal_mutable_next_page_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.next_page_token_.Mutable( GetArena());
}
inline std::string* ListCollectionIdsResponse::release_next_page_token() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.ListCollectionIdsResponse.next_page_token)
  return _impl_.next_page_token_.Release();
}
inline void ListCollectionIdsResponse::set_allocated_next_page_token(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.next_page_token_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.next_page_token_.IsDefault()) {
          _impl_.next_page_token_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.ListCollectionIdsResponse.next_page_token)
}

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

// @@protoc_insertion_point(namespace_scope)
}  // namespace v1
}  // namespace firestore
}  // namespace google


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::google::firestore::v1::TargetChange_TargetChangeType> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::google::firestore::v1::TargetChange_TargetChangeType>() {
  return ::google::firestore::v1::TargetChange_TargetChangeType_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_google_2ffirestore_2fv1_2ffirestore_2eproto_2epb_2eh
