/*
 * 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/write.proto
// Protobuf C++ Version: 4.25.1

#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2ffirestore_2fv1_2fwrite_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_google_2ffirestore_2fv1_2fwrite_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/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
#include "google/firestore/v1/bloom_filter.pb.h"
#include "google/firestore/v1/common.pb.h"
#include "google/firestore/v1/document.pb.h"
#include "google/protobuf/timestamp.pb.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_google_2ffirestore_2fv1_2fwrite_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_2fwrite_2eproto {
  static const ::uint32_t offsets[];
};
extern const ::google::protobuf::internal::DescriptorTable
    descriptor_table_google_2ffirestore_2fv1_2fwrite_2eproto;
namespace google {
namespace firestore {
namespace v1 {
class DocumentChange;
struct DocumentChangeDefaultTypeInternal;
extern DocumentChangeDefaultTypeInternal _DocumentChange_default_instance_;
class DocumentDelete;
struct DocumentDeleteDefaultTypeInternal;
extern DocumentDeleteDefaultTypeInternal _DocumentDelete_default_instance_;
class DocumentRemove;
struct DocumentRemoveDefaultTypeInternal;
extern DocumentRemoveDefaultTypeInternal _DocumentRemove_default_instance_;
class DocumentTransform;
struct DocumentTransformDefaultTypeInternal;
extern DocumentTransformDefaultTypeInternal _DocumentTransform_default_instance_;
class DocumentTransform_FieldTransform;
struct DocumentTransform_FieldTransformDefaultTypeInternal;
extern DocumentTransform_FieldTransformDefaultTypeInternal _DocumentTransform_FieldTransform_default_instance_;
class ExistenceFilter;
struct ExistenceFilterDefaultTypeInternal;
extern ExistenceFilterDefaultTypeInternal _ExistenceFilter_default_instance_;
class Write;
struct WriteDefaultTypeInternal;
extern WriteDefaultTypeInternal _Write_default_instance_;
class WriteResult;
struct WriteResultDefaultTypeInternal;
extern WriteResultDefaultTypeInternal _WriteResult_default_instance_;
}  // namespace v1
}  // namespace firestore
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace google {
namespace firestore {
namespace v1 {
enum DocumentTransform_FieldTransform_ServerValue : int {
  DocumentTransform_FieldTransform_ServerValue_SERVER_VALUE_UNSPECIFIED = 0,
  DocumentTransform_FieldTransform_ServerValue_REQUEST_TIME = 1,
  DocumentTransform_FieldTransform_ServerValue_DocumentTransform_FieldTransform_ServerValue_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  DocumentTransform_FieldTransform_ServerValue_DocumentTransform_FieldTransform_ServerValue_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

bool DocumentTransform_FieldTransform_ServerValue_IsValid(int value);
extern const uint32_t DocumentTransform_FieldTransform_ServerValue_internal_data_[];
constexpr DocumentTransform_FieldTransform_ServerValue DocumentTransform_FieldTransform_ServerValue_ServerValue_MIN = static_cast<DocumentTransform_FieldTransform_ServerValue>(0);
constexpr DocumentTransform_FieldTransform_ServerValue DocumentTransform_FieldTransform_ServerValue_ServerValue_MAX = static_cast<DocumentTransform_FieldTransform_ServerValue>(1);
constexpr int DocumentTransform_FieldTransform_ServerValue_ServerValue_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor*
DocumentTransform_FieldTransform_ServerValue_descriptor();
template <typename T>
const std::string& DocumentTransform_FieldTransform_ServerValue_Name(T value) {
  static_assert(std::is_same<T, DocumentTransform_FieldTransform_ServerValue>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to ServerValue_Name().");
  return DocumentTransform_FieldTransform_ServerValue_Name(static_cast<DocumentTransform_FieldTransform_ServerValue>(value));
}
template <>
inline const std::string& DocumentTransform_FieldTransform_ServerValue_Name(DocumentTransform_FieldTransform_ServerValue value) {
  return ::google::protobuf::internal::NameOfDenseEnum<DocumentTransform_FieldTransform_ServerValue_descriptor,
                                                 0, 1>(
      static_cast<int>(value));
}
inline bool DocumentTransform_FieldTransform_ServerValue_Parse(absl::string_view name, DocumentTransform_FieldTransform_ServerValue* value) {
  return ::google::protobuf::internal::ParseNamedEnum<DocumentTransform_FieldTransform_ServerValue>(
      DocumentTransform_FieldTransform_ServerValue_descriptor(), name, value);
}

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


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

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

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

  inline DocumentRemove& operator=(const DocumentRemove& from) {
    CopyFrom(from);
    return *this;
  }
  inline DocumentRemove& operator=(DocumentRemove&& 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 DocumentRemove& default_instance() {
    return *internal_default_instance();
  }
  static inline const DocumentRemove* internal_default_instance() {
    return reinterpret_cast<const DocumentRemove*>(
               &_DocumentRemove_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

  friend void swap(DocumentRemove& a, DocumentRemove& b) {
    a.Swap(&b);
  }
  inline void Swap(DocumentRemove* 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(DocumentRemove* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  DocumentRemove* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<DocumentRemove>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const DocumentRemove& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const DocumentRemove& from) {
    DocumentRemove::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(DocumentRemove* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.DocumentRemove";
  }
  protected:
  explicit DocumentRemove(::google::protobuf::Arena* arena);
  DocumentRemove(::google::protobuf::Arena* arena, const DocumentRemove& 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 {
    kRemovedTargetIdsFieldNumber = 2,
    kDocumentFieldNumber = 1,
    kReadTimeFieldNumber = 4,
  };
  // repeated int32 removed_target_ids = 2;
  int removed_target_ids_size() const;
  private:
  int _internal_removed_target_ids_size() const;

  public:
  void clear_removed_target_ids() ;
  ::int32_t removed_target_ids(int index) const;
  void set_removed_target_ids(int index, ::int32_t value);
  void add_removed_target_ids(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& removed_target_ids() const;
  ::google::protobuf::RepeatedField<::int32_t>* mutable_removed_target_ids();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_removed_target_ids() const;
  ::google::protobuf::RepeatedField<::int32_t>* _internal_mutable_removed_target_ids();

  public:
  // string document = 1;
  void clear_document() ;
  const std::string& document() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_document(Arg_&& arg, Args_... args);
  std::string* mutable_document();
  PROTOBUF_NODISCARD std::string* release_document();
  void set_allocated_document(std::string* value);

  private:
  const std::string& _internal_document() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_document(
      const std::string& value);
  std::string* _internal_mutable_document();

  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:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.DocumentRemove)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 1,
      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::RepeatedField<::int32_t> removed_target_ids_;
    mutable ::google::protobuf::internal::CachedSize _removed_target_ids_cached_byte_size_;
    ::google::protobuf::internal::ArenaStringPtr document_;
    ::google::protobuf::Timestamp* read_time_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fwrite_2eproto;
};// -------------------------------------------------------------------

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

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

  inline DocumentDelete& operator=(const DocumentDelete& from) {
    CopyFrom(from);
    return *this;
  }
  inline DocumentDelete& operator=(DocumentDelete&& 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 DocumentDelete& default_instance() {
    return *internal_default_instance();
  }
  static inline const DocumentDelete* internal_default_instance() {
    return reinterpret_cast<const DocumentDelete*>(
               &_DocumentDelete_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(DocumentDelete& a, DocumentDelete& b) {
    a.Swap(&b);
  }
  inline void Swap(DocumentDelete* 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(DocumentDelete* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  DocumentDelete* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<DocumentDelete>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const DocumentDelete& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const DocumentDelete& from) {
    DocumentDelete::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(DocumentDelete* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.DocumentDelete";
  }
  protected:
  explicit DocumentDelete(::google::protobuf::Arena* arena);
  DocumentDelete(::google::protobuf::Arena* arena, const DocumentDelete& 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 {
    kRemovedTargetIdsFieldNumber = 6,
    kDocumentFieldNumber = 1,
    kReadTimeFieldNumber = 4,
  };
  // repeated int32 removed_target_ids = 6;
  int removed_target_ids_size() const;
  private:
  int _internal_removed_target_ids_size() const;

  public:
  void clear_removed_target_ids() ;
  ::int32_t removed_target_ids(int index) const;
  void set_removed_target_ids(int index, ::int32_t value);
  void add_removed_target_ids(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& removed_target_ids() const;
  ::google::protobuf::RepeatedField<::int32_t>* mutable_removed_target_ids();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_removed_target_ids() const;
  ::google::protobuf::RepeatedField<::int32_t>* _internal_mutable_removed_target_ids();

  public:
  // string document = 1;
  void clear_document() ;
  const std::string& document() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_document(Arg_&& arg, Args_... args);
  std::string* mutable_document();
  PROTOBUF_NODISCARD std::string* release_document();
  void set_allocated_document(std::string* value);

  private:
  const std::string& _internal_document() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_document(
      const std::string& value);
  std::string* _internal_mutable_document();

  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:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.DocumentDelete)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 1,
      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::RepeatedField<::int32_t> removed_target_ids_;
    mutable ::google::protobuf::internal::CachedSize _removed_target_ids_cached_byte_size_;
    ::google::protobuf::internal::ArenaStringPtr document_;
    ::google::protobuf::Timestamp* read_time_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fwrite_2eproto;
};// -------------------------------------------------------------------

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

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

  inline WriteResult& operator=(const WriteResult& from) {
    CopyFrom(from);
    return *this;
  }
  inline WriteResult& operator=(WriteResult&& 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 WriteResult& default_instance() {
    return *internal_default_instance();
  }
  static inline const WriteResult* internal_default_instance() {
    return reinterpret_cast<const WriteResult*>(
               &_WriteResult_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(WriteResult& a, WriteResult& b) {
    a.Swap(&b);
  }
  inline void Swap(WriteResult* 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(WriteResult* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  WriteResult* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<WriteResult>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const WriteResult& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const WriteResult& from) {
    WriteResult::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(WriteResult* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.WriteResult";
  }
  protected:
  explicit WriteResult(::google::protobuf::Arena* arena);
  WriteResult(::google::protobuf::Arena* arena, const WriteResult& 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 {
    kTransformResultsFieldNumber = 2,
    kUpdateTimeFieldNumber = 1,
  };
  // repeated .google.firestore.v1.Value transform_results = 2;
  int transform_results_size() const;
  private:
  int _internal_transform_results_size() const;

  public:
  void clear_transform_results() ;
  ::google::firestore::v1::Value* mutable_transform_results(int index);
  ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::Value >*
      mutable_transform_results();
  private:
  const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Value>& _internal_transform_results() const;
  ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Value>* _internal_mutable_transform_results();
  public:
  const ::google::firestore::v1::Value& transform_results(int index) const;
  ::google::firestore::v1::Value* add_transform_results();
  const ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::Value >&
      transform_results() const;
  // .google.protobuf.Timestamp update_time = 1;
  bool has_update_time() const;
  void clear_update_time() ;
  const ::google::protobuf::Timestamp& update_time() const;
  PROTOBUF_NODISCARD ::google::protobuf::Timestamp* release_update_time();
  ::google::protobuf::Timestamp* mutable_update_time();
  void set_allocated_update_time(::google::protobuf::Timestamp* value);
  void unsafe_arena_set_allocated_update_time(::google::protobuf::Timestamp* value);
  ::google::protobuf::Timestamp* unsafe_arena_release_update_time();

  private:
  const ::google::protobuf::Timestamp& _internal_update_time() const;
  ::google::protobuf::Timestamp* _internal_mutable_update_time();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.WriteResult)
 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::Value > transform_results_;
    ::google::protobuf::Timestamp* update_time_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fwrite_2eproto;
};// -------------------------------------------------------------------

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

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

  inline ExistenceFilter& operator=(const ExistenceFilter& from) {
    CopyFrom(from);
    return *this;
  }
  inline ExistenceFilter& operator=(ExistenceFilter&& 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 ExistenceFilter& default_instance() {
    return *internal_default_instance();
  }
  static inline const ExistenceFilter* internal_default_instance() {
    return reinterpret_cast<const ExistenceFilter*>(
               &_ExistenceFilter_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

  friend void swap(ExistenceFilter& a, ExistenceFilter& b) {
    a.Swap(&b);
  }
  inline void Swap(ExistenceFilter* 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(ExistenceFilter* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ExistenceFilter* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ExistenceFilter>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ExistenceFilter& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const ExistenceFilter& from) {
    ExistenceFilter::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(ExistenceFilter* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.ExistenceFilter";
  }
  protected:
  explicit ExistenceFilter(::google::protobuf::Arena* arena);
  ExistenceFilter(::google::protobuf::Arena* arena, const ExistenceFilter& 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 {
    kUnchangedNamesFieldNumber = 3,
    kTargetIdFieldNumber = 1,
    kCountFieldNumber = 2,
  };
  // .google.firestore.v1.BloomFilter unchanged_names = 3;
  bool has_unchanged_names() const;
  void clear_unchanged_names() ;
  const ::google::firestore::v1::BloomFilter& unchanged_names() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::BloomFilter* release_unchanged_names();
  ::google::firestore::v1::BloomFilter* mutable_unchanged_names();
  void set_allocated_unchanged_names(::google::firestore::v1::BloomFilter* value);
  void unsafe_arena_set_allocated_unchanged_names(::google::firestore::v1::BloomFilter* value);
  ::google::firestore::v1::BloomFilter* unsafe_arena_release_unchanged_names();

  private:
  const ::google::firestore::v1::BloomFilter& _internal_unchanged_names() const;
  ::google::firestore::v1::BloomFilter* _internal_mutable_unchanged_names();

  public:
  // int32 target_id = 1;
  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:
  // int32 count = 2;
  void clear_count() ;
  ::int32_t count() const;
  void set_count(::int32_t value);

  private:
  ::int32_t _internal_count() const;
  void _internal_set_count(::int32_t value);

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

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 1,
      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::BloomFilter* unchanged_names_;
    ::int32_t target_id_;
    ::int32_t count_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fwrite_2eproto;
};// -------------------------------------------------------------------

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

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

  inline DocumentTransform_FieldTransform& operator=(const DocumentTransform_FieldTransform& from) {
    CopyFrom(from);
    return *this;
  }
  inline DocumentTransform_FieldTransform& operator=(DocumentTransform_FieldTransform&& 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 DocumentTransform_FieldTransform& default_instance() {
    return *internal_default_instance();
  }
  enum TransformTypeCase {
    kSetToServerValue = 2,
    kIncrement = 3,
    kMaximum = 4,
    kMinimum = 5,
    kAppendMissingElements = 6,
    kRemoveAllFromArray = 7,
    TRANSFORM_TYPE_NOT_SET = 0,
  };

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

  friend void swap(DocumentTransform_FieldTransform& a, DocumentTransform_FieldTransform& b) {
    a.Swap(&b);
  }
  inline void Swap(DocumentTransform_FieldTransform* 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(DocumentTransform_FieldTransform* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  DocumentTransform_FieldTransform* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<DocumentTransform_FieldTransform>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const DocumentTransform_FieldTransform& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const DocumentTransform_FieldTransform& from) {
    DocumentTransform_FieldTransform::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(DocumentTransform_FieldTransform* other);

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

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

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

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

  using ServerValue = DocumentTransform_FieldTransform_ServerValue;
  static constexpr ServerValue SERVER_VALUE_UNSPECIFIED = DocumentTransform_FieldTransform_ServerValue_SERVER_VALUE_UNSPECIFIED;
  static constexpr ServerValue REQUEST_TIME = DocumentTransform_FieldTransform_ServerValue_REQUEST_TIME;
  static inline bool ServerValue_IsValid(int value) {
    return DocumentTransform_FieldTransform_ServerValue_IsValid(value);
  }
  static constexpr ServerValue ServerValue_MIN = DocumentTransform_FieldTransform_ServerValue_ServerValue_MIN;
  static constexpr ServerValue ServerValue_MAX = DocumentTransform_FieldTransform_ServerValue_ServerValue_MAX;
  static constexpr int ServerValue_ARRAYSIZE = DocumentTransform_FieldTransform_ServerValue_ServerValue_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* ServerValue_descriptor() {
    return DocumentTransform_FieldTransform_ServerValue_descriptor();
  }
  template <typename T>
  static inline const std::string& ServerValue_Name(T value) {
    return DocumentTransform_FieldTransform_ServerValue_Name(value);
  }
  static inline bool ServerValue_Parse(absl::string_view name, ServerValue* value) {
    return DocumentTransform_FieldTransform_ServerValue_Parse(name, value);
  }

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

  enum : int {
    kFieldPathFieldNumber = 1,
    kSetToServerValueFieldNumber = 2,
    kIncrementFieldNumber = 3,
    kMaximumFieldNumber = 4,
    kMinimumFieldNumber = 5,
    kAppendMissingElementsFieldNumber = 6,
    kRemoveAllFromArrayFieldNumber = 7,
  };
  // string field_path = 1;
  void clear_field_path() ;
  const std::string& field_path() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_field_path(Arg_&& arg, Args_... args);
  std::string* mutable_field_path();
  PROTOBUF_NODISCARD std::string* release_field_path();
  void set_allocated_field_path(std::string* value);

  private:
  const std::string& _internal_field_path() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_field_path(
      const std::string& value);
  std::string* _internal_mutable_field_path();

  public:
  // .google.firestore.v1.DocumentTransform.FieldTransform.ServerValue set_to_server_value = 2;
  bool has_set_to_server_value() const;
  void clear_set_to_server_value() ;
  ::google::firestore::v1::DocumentTransform_FieldTransform_ServerValue set_to_server_value() const;
  void set_set_to_server_value(::google::firestore::v1::DocumentTransform_FieldTransform_ServerValue value);

  private:
  ::google::firestore::v1::DocumentTransform_FieldTransform_ServerValue _internal_set_to_server_value() const;
  void _internal_set_set_to_server_value(::google::firestore::v1::DocumentTransform_FieldTransform_ServerValue value);

  public:
  // .google.firestore.v1.Value increment = 3;
  bool has_increment() const;
  private:
  bool _internal_has_increment() const;

  public:
  void clear_increment() ;
  const ::google::firestore::v1::Value& increment() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::Value* release_increment();
  ::google::firestore::v1::Value* mutable_increment();
  void set_allocated_increment(::google::firestore::v1::Value* value);
  void unsafe_arena_set_allocated_increment(::google::firestore::v1::Value* value);
  ::google::firestore::v1::Value* unsafe_arena_release_increment();

  private:
  const ::google::firestore::v1::Value& _internal_increment() const;
  ::google::firestore::v1::Value* _internal_mutable_increment();

  public:
  // .google.firestore.v1.Value maximum = 4;
  bool has_maximum() const;
  private:
  bool _internal_has_maximum() const;

  public:
  void clear_maximum() ;
  const ::google::firestore::v1::Value& maximum() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::Value* release_maximum();
  ::google::firestore::v1::Value* mutable_maximum();
  void set_allocated_maximum(::google::firestore::v1::Value* value);
  void unsafe_arena_set_allocated_maximum(::google::firestore::v1::Value* value);
  ::google::firestore::v1::Value* unsafe_arena_release_maximum();

  private:
  const ::google::firestore::v1::Value& _internal_maximum() const;
  ::google::firestore::v1::Value* _internal_mutable_maximum();

  public:
  // .google.firestore.v1.Value minimum = 5;
  bool has_minimum() const;
  private:
  bool _internal_has_minimum() const;

  public:
  void clear_minimum() ;
  const ::google::firestore::v1::Value& minimum() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::Value* release_minimum();
  ::google::firestore::v1::Value* mutable_minimum();
  void set_allocated_minimum(::google::firestore::v1::Value* value);
  void unsafe_arena_set_allocated_minimum(::google::firestore::v1::Value* value);
  ::google::firestore::v1::Value* unsafe_arena_release_minimum();

  private:
  const ::google::firestore::v1::Value& _internal_minimum() const;
  ::google::firestore::v1::Value* _internal_mutable_minimum();

  public:
  // .google.firestore.v1.ArrayValue append_missing_elements = 6;
  bool has_append_missing_elements() const;
  private:
  bool _internal_has_append_missing_elements() const;

  public:
  void clear_append_missing_elements() ;
  const ::google::firestore::v1::ArrayValue& append_missing_elements() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::ArrayValue* release_append_missing_elements();
  ::google::firestore::v1::ArrayValue* mutable_append_missing_elements();
  void set_allocated_append_missing_elements(::google::firestore::v1::ArrayValue* value);
  void unsafe_arena_set_allocated_append_missing_elements(::google::firestore::v1::ArrayValue* value);
  ::google::firestore::v1::ArrayValue* unsafe_arena_release_append_missing_elements();

  private:
  const ::google::firestore::v1::ArrayValue& _internal_append_missing_elements() const;
  ::google::firestore::v1::ArrayValue* _internal_mutable_append_missing_elements();

  public:
  // .google.firestore.v1.ArrayValue remove_all_from_array = 7;
  bool has_remove_all_from_array() const;
  private:
  bool _internal_has_remove_all_from_array() const;

  public:
  void clear_remove_all_from_array() ;
  const ::google::firestore::v1::ArrayValue& remove_all_from_array() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::ArrayValue* release_remove_all_from_array();
  ::google::firestore::v1::ArrayValue* mutable_remove_all_from_array();
  void set_allocated_remove_all_from_array(::google::firestore::v1::ArrayValue* value);
  void unsafe_arena_set_allocated_remove_all_from_array(::google::firestore::v1::ArrayValue* value);
  ::google::firestore::v1::ArrayValue* unsafe_arena_release_remove_all_from_array();

  private:
  const ::google::firestore::v1::ArrayValue& _internal_remove_all_from_array() const;
  ::google::firestore::v1::ArrayValue* _internal_mutable_remove_all_from_array();

  public:
  void clear_transform_type();
  TransformTypeCase transform_type_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.DocumentTransform.FieldTransform)
 private:
  class _Internal;
  void set_has_set_to_server_value();
  void set_has_increment();
  void set_has_maximum();
  void set_has_minimum();
  void set_has_append_missing_elements();
  void set_has_remove_all_from_array();

  inline bool has_transform_type() const;
  inline void clear_has_transform_type();

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 7, 5,
      71, 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 field_path_;
    union TransformTypeUnion {
      constexpr TransformTypeUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      int set_to_server_value_;
      ::google::firestore::v1::Value* increment_;
      ::google::firestore::v1::Value* maximum_;
      ::google::firestore::v1::Value* minimum_;
      ::google::firestore::v1::ArrayValue* append_missing_elements_;
      ::google::firestore::v1::ArrayValue* remove_all_from_array_;
    } transform_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_2fwrite_2eproto;
};// -------------------------------------------------------------------

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

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

  inline DocumentTransform& operator=(const DocumentTransform& from) {
    CopyFrom(from);
    return *this;
  }
  inline DocumentTransform& operator=(DocumentTransform&& 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 DocumentTransform& default_instance() {
    return *internal_default_instance();
  }
  static inline const DocumentTransform* internal_default_instance() {
    return reinterpret_cast<const DocumentTransform*>(
               &_DocumentTransform_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(DocumentTransform& a, DocumentTransform& b) {
    a.Swap(&b);
  }
  inline void Swap(DocumentTransform* 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(DocumentTransform* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  DocumentTransform* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<DocumentTransform>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const DocumentTransform& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const DocumentTransform& from) {
    DocumentTransform::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(DocumentTransform* other);

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

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

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

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

  using FieldTransform = DocumentTransform_FieldTransform;

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

  enum : int {
    kFieldTransformsFieldNumber = 2,
    kDocumentFieldNumber = 1,
  };
  // repeated .google.firestore.v1.DocumentTransform.FieldTransform field_transforms = 2;
  int field_transforms_size() const;
  private:
  int _internal_field_transforms_size() const;

  public:
  void clear_field_transforms() ;
  ::google::firestore::v1::DocumentTransform_FieldTransform* mutable_field_transforms(int index);
  ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::DocumentTransform_FieldTransform >*
      mutable_field_transforms();
  private:
  const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::DocumentTransform_FieldTransform>& _internal_field_transforms() const;
  ::google::protobuf::RepeatedPtrField<::google::firestore::v1::DocumentTransform_FieldTransform>* _internal_mutable_field_transforms();
  public:
  const ::google::firestore::v1::DocumentTransform_FieldTransform& field_transforms(int index) const;
  ::google::firestore::v1::DocumentTransform_FieldTransform* add_field_transforms();
  const ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::DocumentTransform_FieldTransform >&
      field_transforms() const;
  // string document = 1;
  void clear_document() ;
  const std::string& document() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_document(Arg_&& arg, Args_... args);
  std::string* mutable_document();
  PROTOBUF_NODISCARD std::string* release_document();
  void set_allocated_document(std::string* value);

  private:
  const std::string& _internal_document() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_document(
      const std::string& value);
  std::string* _internal_mutable_document();

  public:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.DocumentTransform)
 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::RepeatedPtrField< ::google::firestore::v1::DocumentTransform_FieldTransform > field_transforms_;
    ::google::protobuf::internal::ArenaStringPtr document_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fwrite_2eproto;
};// -------------------------------------------------------------------

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

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

  inline Write& operator=(const Write& from) {
    CopyFrom(from);
    return *this;
  }
  inline Write& operator=(Write&& 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 Write& default_instance() {
    return *internal_default_instance();
  }
  enum OperationCase {
    kUpdate = 1,
    kDelete = 2,
    kVerify = 5,
    kTransform = 6,
    OPERATION_NOT_SET = 0,
  };

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

  friend void swap(Write& a, Write& b) {
    a.Swap(&b);
  }
  inline void Swap(Write* 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(Write* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  Write* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<Write>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Write& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const Write& from) {
    Write::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(Write* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.Write";
  }
  protected:
  explicit Write(::google::protobuf::Arena* arena);
  Write(::google::protobuf::Arena* arena, const Write& 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 {
    kUpdateTransformsFieldNumber = 7,
    kUpdateMaskFieldNumber = 3,
    kCurrentDocumentFieldNumber = 4,
    kUpdateFieldNumber = 1,
    kDeleteFieldNumber = 2,
    kVerifyFieldNumber = 5,
    kTransformFieldNumber = 6,
  };
  // repeated .google.firestore.v1.DocumentTransform.FieldTransform update_transforms = 7;
  int update_transforms_size() const;
  private:
  int _internal_update_transforms_size() const;

  public:
  void clear_update_transforms() ;
  ::google::firestore::v1::DocumentTransform_FieldTransform* mutable_update_transforms(int index);
  ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::DocumentTransform_FieldTransform >*
      mutable_update_transforms();
  private:
  const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::DocumentTransform_FieldTransform>& _internal_update_transforms() const;
  ::google::protobuf::RepeatedPtrField<::google::firestore::v1::DocumentTransform_FieldTransform>* _internal_mutable_update_transforms();
  public:
  const ::google::firestore::v1::DocumentTransform_FieldTransform& update_transforms(int index) const;
  ::google::firestore::v1::DocumentTransform_FieldTransform* add_update_transforms();
  const ::google::protobuf::RepeatedPtrField< ::google::firestore::v1::DocumentTransform_FieldTransform >&
      update_transforms() const;
  // .google.firestore.v1.DocumentMask update_mask = 3;
  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.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:
  // .google.firestore.v1.Document update = 1;
  bool has_update() const;
  private:
  bool _internal_has_update() const;

  public:
  void clear_update() ;
  const ::google::firestore::v1::Document& update() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::Document* release_update();
  ::google::firestore::v1::Document* mutable_update();
  void set_allocated_update(::google::firestore::v1::Document* value);
  void unsafe_arena_set_allocated_update(::google::firestore::v1::Document* value);
  ::google::firestore::v1::Document* unsafe_arena_release_update();

  private:
  const ::google::firestore::v1::Document& _internal_update() const;
  ::google::firestore::v1::Document* _internal_mutable_update();

  public:
  // string delete = 2;
  bool has_delete_() const;
  void clear_delete_() ;
  const std::string& delete_() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_delete_(Arg_&& arg, Args_... args);
  std::string* mutable_delete_();
  PROTOBUF_NODISCARD std::string* release_delete_();
  void set_allocated_delete_(std::string* value);

  private:
  const std::string& _internal_delete_() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_delete_(
      const std::string& value);
  std::string* _internal_mutable_delete_();

  public:
  // string verify = 5;
  bool has_verify() const;
  void clear_verify() ;
  const std::string& verify() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_verify(Arg_&& arg, Args_... args);
  std::string* mutable_verify();
  PROTOBUF_NODISCARD std::string* release_verify();
  void set_allocated_verify(std::string* value);

  private:
  const std::string& _internal_verify() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_verify(
      const std::string& value);
  std::string* _internal_mutable_verify();

  public:
  // .google.firestore.v1.DocumentTransform transform = 6;
  bool has_transform() const;
  private:
  bool _internal_has_transform() const;

  public:
  void clear_transform() ;
  const ::google::firestore::v1::DocumentTransform& transform() const;
  PROTOBUF_NODISCARD ::google::firestore::v1::DocumentTransform* release_transform();
  ::google::firestore::v1::DocumentTransform* mutable_transform();
  void set_allocated_transform(::google::firestore::v1::DocumentTransform* value);
  void unsafe_arena_set_allocated_transform(::google::firestore::v1::DocumentTransform* value);
  ::google::firestore::v1::DocumentTransform* unsafe_arena_release_transform();

  private:
  const ::google::firestore::v1::DocumentTransform& _internal_transform() const;
  ::google::firestore::v1::DocumentTransform* _internal_mutable_transform();

  public:
  void clear_operation();
  OperationCase operation_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.Write)
 private:
  class _Internal;
  void set_has_update();
  void set_has_delete_();
  void set_has_verify();
  void set_has_transform();

  inline bool has_operation() const;
  inline void clear_has_operation();

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 7, 5,
      46, 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::DocumentTransform_FieldTransform > update_transforms_;
    ::google::firestore::v1::DocumentMask* update_mask_;
    ::google::firestore::v1::Precondition* current_document_;
    union OperationUnion {
      constexpr OperationUnion() : _constinit_{} {}
        ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::firestore::v1::Document* update_;
      ::google::protobuf::internal::ArenaStringPtr delete__;
      ::google::protobuf::internal::ArenaStringPtr verify_;
      ::google::firestore::v1::DocumentTransform* transform_;
    } operation_;
    ::uint32_t _oneof_case_[1];

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

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

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

  inline DocumentChange& operator=(const DocumentChange& from) {
    CopyFrom(from);
    return *this;
  }
  inline DocumentChange& operator=(DocumentChange&& 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 DocumentChange& default_instance() {
    return *internal_default_instance();
  }
  static inline const DocumentChange* internal_default_instance() {
    return reinterpret_cast<const DocumentChange*>(
               &_DocumentChange_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(DocumentChange& a, DocumentChange& b) {
    a.Swap(&b);
  }
  inline void Swap(DocumentChange* 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(DocumentChange* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  DocumentChange* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<DocumentChange>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const DocumentChange& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const DocumentChange& from) {
    DocumentChange::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(DocumentChange* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "google.firestore.v1.DocumentChange";
  }
  protected:
  explicit DocumentChange(::google::protobuf::Arena* arena);
  DocumentChange(::google::protobuf::Arena* arena, const DocumentChange& 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 {
    kTargetIdsFieldNumber = 5,
    kRemovedTargetIdsFieldNumber = 6,
    kDocumentFieldNumber = 1,
  };
  // repeated int32 target_ids = 5;
  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:
  // repeated int32 removed_target_ids = 6;
  int removed_target_ids_size() const;
  private:
  int _internal_removed_target_ids_size() const;

  public:
  void clear_removed_target_ids() ;
  ::int32_t removed_target_ids(int index) const;
  void set_removed_target_ids(int index, ::int32_t value);
  void add_removed_target_ids(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& removed_target_ids() const;
  ::google::protobuf::RepeatedField<::int32_t>* mutable_removed_target_ids();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_removed_target_ids() const;
  ::google::protobuf::RepeatedField<::int32_t>* _internal_mutable_removed_target_ids();

  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:
  // @@protoc_insertion_point(class_scope:google.firestore.v1.DocumentChange)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 3, 1,
      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::RepeatedField<::int32_t> removed_target_ids_;
    mutable ::google::protobuf::internal::CachedSize _removed_target_ids_cached_byte_size_;
    ::google::firestore::v1::Document* document_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fwrite_2eproto;
};

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




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


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

// Write

// .google.firestore.v1.Document update = 1;
inline bool Write::has_update() const {
  return operation_case() == kUpdate;
}
inline bool Write::_internal_has_update() const {
  return operation_case() == kUpdate;
}
inline void Write::set_has_update() {
  _impl_._oneof_case_[0] = kUpdate;
}
inline ::google::firestore::v1::Document* Write::release_update() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.Write.update)
  if (operation_case() == kUpdate) {
    clear_has_operation();
    auto* temp = _impl_.operation_.update_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.operation_.update_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::Document& Write::_internal_update() const {
  return operation_case() == kUpdate ? *_impl_.operation_.update_ : reinterpret_cast<::google::firestore::v1::Document&>(::google::firestore::v1::_Document_default_instance_);
}
inline const ::google::firestore::v1::Document& Write::update() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Write.update)
  return _internal_update();
}
inline ::google::firestore::v1::Document* Write::unsafe_arena_release_update() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.Write.update)
  if (operation_case() == kUpdate) {
    clear_has_operation();
    auto* temp = _impl_.operation_.update_;
    _impl_.operation_.update_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Write::unsafe_arena_set_allocated_update(::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_operation();
  if (value) {
    set_has_update();
    _impl_.operation_.update_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.Write.update)
}
inline ::google::firestore::v1::Document* Write::_internal_mutable_update() {
  if (operation_case() != kUpdate) {
    clear_operation();
    set_has_update();
    _impl_.operation_.update_ = CreateMaybeMessage<::google::firestore::v1::Document>(GetArena());
  }
  return _impl_.operation_.update_;
}
inline ::google::firestore::v1::Document* Write::mutable_update() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Document* _msg = _internal_mutable_update();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Write.update)
  return _msg;
}

// string delete = 2;
inline bool Write::has_delete_() const {
  return operation_case() == kDelete;
}
inline void Write::set_has_delete_() {
  _impl_._oneof_case_[0] = kDelete;
}
inline void Write::clear_delete_() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (operation_case() == kDelete) {
    _impl_.operation_.delete__.Destroy();
    clear_has_operation();
  }
}
inline const std::string& Write::delete_() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Write.delete)
  return _internal_delete_();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Write::set_delete_(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (operation_case() != kDelete) {
    clear_operation();

    set_has_delete_();
    _impl_.operation_.delete__.InitDefault();
  }
  _impl_.operation_.delete__.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.Write.delete)
}
inline std::string* Write::mutable_delete_() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_delete_();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Write.delete)
  return _s;
}
inline const std::string& Write::_internal_delete_() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  if (operation_case() != kDelete) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.operation_.delete__.Get();
}
inline void Write::_internal_set_delete_(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (operation_case() != kDelete) {
    clear_operation();

    set_has_delete_();
    _impl_.operation_.delete__.InitDefault();
  }
  _impl_.operation_.delete__.Set(value, GetArena());
}
inline std::string* Write::_internal_mutable_delete_() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (operation_case() != kDelete) {
    clear_operation();

    set_has_delete_();
    _impl_.operation_.delete__.InitDefault();
  }
  return _impl_.operation_.delete__.Mutable( GetArena());
}
inline std::string* Write::release_delete_() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.Write.delete)
  if (operation_case() != kDelete) {
    return nullptr;
  }
  clear_has_operation();
  return _impl_.operation_.delete__.Release();
}
inline void Write::set_allocated_delete_(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (has_operation()) {
    clear_operation();
  }
  if (value != nullptr) {
    set_has_delete_();
    _impl_.operation_.delete__.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.Write.delete)
}

// string verify = 5;
inline bool Write::has_verify() const {
  return operation_case() == kVerify;
}
inline void Write::set_has_verify() {
  _impl_._oneof_case_[0] = kVerify;
}
inline void Write::clear_verify() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (operation_case() == kVerify) {
    _impl_.operation_.verify_.Destroy();
    clear_has_operation();
  }
}
inline const std::string& Write::verify() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Write.verify)
  return _internal_verify();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Write::set_verify(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (operation_case() != kVerify) {
    clear_operation();

    set_has_verify();
    _impl_.operation_.verify_.InitDefault();
  }
  _impl_.operation_.verify_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.Write.verify)
}
inline std::string* Write::mutable_verify() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_verify();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Write.verify)
  return _s;
}
inline const std::string& Write::_internal_verify() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  if (operation_case() != kVerify) {
    return ::google::protobuf::internal::GetEmptyStringAlreadyInited();
  }
  return _impl_.operation_.verify_.Get();
}
inline void Write::_internal_set_verify(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (operation_case() != kVerify) {
    clear_operation();

    set_has_verify();
    _impl_.operation_.verify_.InitDefault();
  }
  _impl_.operation_.verify_.Set(value, GetArena());
}
inline std::string* Write::_internal_mutable_verify() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (operation_case() != kVerify) {
    clear_operation();

    set_has_verify();
    _impl_.operation_.verify_.InitDefault();
  }
  return _impl_.operation_.verify_.Mutable( GetArena());
}
inline std::string* Write::release_verify() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.Write.verify)
  if (operation_case() != kVerify) {
    return nullptr;
  }
  clear_has_operation();
  return _impl_.operation_.verify_.Release();
}
inline void Write::set_allocated_verify(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (has_operation()) {
    clear_operation();
  }
  if (value != nullptr) {
    set_has_verify();
    _impl_.operation_.verify_.InitAllocated(value, GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.Write.verify)
}

// .google.firestore.v1.DocumentTransform transform = 6;
inline bool Write::has_transform() const {
  return operation_case() == kTransform;
}
inline bool Write::_internal_has_transform() const {
  return operation_case() == kTransform;
}
inline void Write::set_has_transform() {
  _impl_._oneof_case_[0] = kTransform;
}
inline void Write::clear_transform() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (operation_case() == kTransform) {
    if (GetArena() == nullptr) {
      delete _impl_.operation_.transform_;
    }
    clear_has_operation();
  }
}
inline ::google::firestore::v1::DocumentTransform* Write::release_transform() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.Write.transform)
  if (operation_case() == kTransform) {
    clear_has_operation();
    auto* temp = _impl_.operation_.transform_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.operation_.transform_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::DocumentTransform& Write::_internal_transform() const {
  return operation_case() == kTransform ? *_impl_.operation_.transform_ : reinterpret_cast<::google::firestore::v1::DocumentTransform&>(::google::firestore::v1::_DocumentTransform_default_instance_);
}
inline const ::google::firestore::v1::DocumentTransform& Write::transform() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Write.transform)
  return _internal_transform();
}
inline ::google::firestore::v1::DocumentTransform* Write::unsafe_arena_release_transform() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.Write.transform)
  if (operation_case() == kTransform) {
    clear_has_operation();
    auto* temp = _impl_.operation_.transform_;
    _impl_.operation_.transform_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Write::unsafe_arena_set_allocated_transform(::google::firestore::v1::DocumentTransform* 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_operation();
  if (value) {
    set_has_transform();
    _impl_.operation_.transform_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.Write.transform)
}
inline ::google::firestore::v1::DocumentTransform* Write::_internal_mutable_transform() {
  if (operation_case() != kTransform) {
    clear_operation();
    set_has_transform();
    _impl_.operation_.transform_ = CreateMaybeMessage<::google::firestore::v1::DocumentTransform>(GetArena());
  }
  return _impl_.operation_.transform_;
}
inline ::google::firestore::v1::DocumentTransform* Write::mutable_transform() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::DocumentTransform* _msg = _internal_mutable_transform();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Write.transform)
  return _msg;
}

// .google.firestore.v1.DocumentMask update_mask = 3;
inline bool Write::has_update_mask() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.update_mask_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::DocumentMask& Write::_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& Write::update_mask() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Write.update_mask)
  return _internal_update_mask();
}
inline void Write::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] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.Write.update_mask)
}
inline ::google::firestore::v1::DocumentMask* Write::release_update_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::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* Write::unsafe_arena_release_update_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.Write.update_mask)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::DocumentMask* temp = _impl_.update_mask_;
  _impl_.update_mask_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::DocumentMask* Write::_internal_mutable_update_mask() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  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* Write::mutable_update_mask() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::DocumentMask* _msg = _internal_mutable_update_mask();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Write.update_mask)
  return _msg;
}
inline void Write::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] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.update_mask_ = reinterpret_cast<::google::firestore::v1::DocumentMask*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.Write.update_mask)
}

// repeated .google.firestore.v1.DocumentTransform.FieldTransform update_transforms = 7;
inline int Write::_internal_update_transforms_size() const {
  return _internal_update_transforms().size();
}
inline int Write::update_transforms_size() const {
  return _internal_update_transforms_size();
}
inline void Write::clear_update_transforms() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.update_transforms_.Clear();
}
inline ::google::firestore::v1::DocumentTransform_FieldTransform* Write::mutable_update_transforms(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Write.update_transforms)
  return _internal_mutable_update_transforms()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::DocumentTransform_FieldTransform>* Write::mutable_update_transforms()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.Write.update_transforms)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_update_transforms();
}
inline const ::google::firestore::v1::DocumentTransform_FieldTransform& Write::update_transforms(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Write.update_transforms)
  return _internal_update_transforms().Get(index);
}
inline ::google::firestore::v1::DocumentTransform_FieldTransform* Write::add_update_transforms() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::google::firestore::v1::DocumentTransform_FieldTransform* _add = _internal_mutable_update_transforms()->Add();
  // @@protoc_insertion_point(field_add:google.firestore.v1.Write.update_transforms)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::DocumentTransform_FieldTransform>& Write::update_transforms() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.Write.update_transforms)
  return _internal_update_transforms();
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::DocumentTransform_FieldTransform>&
Write::_internal_update_transforms() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.update_transforms_;
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::DocumentTransform_FieldTransform>*
Write::_internal_mutable_update_transforms() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.update_transforms_;
}

// .google.firestore.v1.Precondition current_document = 4;
inline bool Write::has_current_document() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.current_document_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::Precondition& Write::_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& Write::current_document() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Write.current_document)
  return _internal_current_document();
}
inline void Write::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] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.Write.current_document)
}
inline ::google::firestore::v1::Precondition* Write::release_current_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::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* Write::unsafe_arena_release_current_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.Write.current_document)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::google::firestore::v1::Precondition* temp = _impl_.current_document_;
  _impl_.current_document_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::Precondition* Write::_internal_mutable_current_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000002u;
  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* Write::mutable_current_document() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Precondition* _msg = _internal_mutable_current_document();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Write.current_document)
  return _msg;
}
inline void Write::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] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.current_document_ = reinterpret_cast<::google::firestore::v1::Precondition*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.Write.current_document)
}

inline bool Write::has_operation() const {
  return operation_case() != OPERATION_NOT_SET;
}
inline void Write::clear_has_operation() {
  _impl_._oneof_case_[0] = OPERATION_NOT_SET;
}
inline Write::OperationCase Write::operation_case() const {
  return Write::OperationCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// DocumentTransform_FieldTransform

// string field_path = 1;
inline void DocumentTransform_FieldTransform::clear_field_path() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.field_path_.ClearToEmpty();
}
inline const std::string& DocumentTransform_FieldTransform::field_path() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentTransform.FieldTransform.field_path)
  return _internal_field_path();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void DocumentTransform_FieldTransform::set_field_path(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.field_path_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.DocumentTransform.FieldTransform.field_path)
}
inline std::string* DocumentTransform_FieldTransform::mutable_field_path() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_field_path();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DocumentTransform.FieldTransform.field_path)
  return _s;
}
inline const std::string& DocumentTransform_FieldTransform::_internal_field_path() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.field_path_.Get();
}
inline void DocumentTransform_FieldTransform::_internal_set_field_path(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.field_path_.Set(value, GetArena());
}
inline std::string* DocumentTransform_FieldTransform::_internal_mutable_field_path() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.field_path_.Mutable( GetArena());
}
inline std::string* DocumentTransform_FieldTransform::release_field_path() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.DocumentTransform.FieldTransform.field_path)
  return _impl_.field_path_.Release();
}
inline void DocumentTransform_FieldTransform::set_allocated_field_path(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.field_path_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.field_path_.IsDefault()) {
          _impl_.field_path_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.DocumentTransform.FieldTransform.field_path)
}

// .google.firestore.v1.DocumentTransform.FieldTransform.ServerValue set_to_server_value = 2;
inline bool DocumentTransform_FieldTransform::has_set_to_server_value() const {
  return transform_type_case() == kSetToServerValue;
}
inline void DocumentTransform_FieldTransform::set_has_set_to_server_value() {
  _impl_._oneof_case_[0] = kSetToServerValue;
}
inline void DocumentTransform_FieldTransform::clear_set_to_server_value() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (transform_type_case() == kSetToServerValue) {
    _impl_.transform_type_.set_to_server_value_ = 0;
    clear_has_transform_type();
  }
}
inline ::google::firestore::v1::DocumentTransform_FieldTransform_ServerValue DocumentTransform_FieldTransform::set_to_server_value() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentTransform.FieldTransform.set_to_server_value)
  return _internal_set_to_server_value();
}
inline void DocumentTransform_FieldTransform::set_set_to_server_value(::google::firestore::v1::DocumentTransform_FieldTransform_ServerValue value) {
  _internal_set_set_to_server_value(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.DocumentTransform.FieldTransform.set_to_server_value)
}
inline ::google::firestore::v1::DocumentTransform_FieldTransform_ServerValue DocumentTransform_FieldTransform::_internal_set_to_server_value() const {
  if (transform_type_case() == kSetToServerValue) {
    return static_cast<::google::firestore::v1::DocumentTransform_FieldTransform_ServerValue>(_impl_.transform_type_.set_to_server_value_);
  }
  return static_cast<::google::firestore::v1::DocumentTransform_FieldTransform_ServerValue>(0);
}
inline void DocumentTransform_FieldTransform::_internal_set_set_to_server_value(::google::firestore::v1::DocumentTransform_FieldTransform_ServerValue value) {
  if (transform_type_case() != kSetToServerValue) {
    clear_transform_type();
    set_has_set_to_server_value();
  }
  _impl_.transform_type_.set_to_server_value_ = value;
}

// .google.firestore.v1.Value increment = 3;
inline bool DocumentTransform_FieldTransform::has_increment() const {
  return transform_type_case() == kIncrement;
}
inline bool DocumentTransform_FieldTransform::_internal_has_increment() const {
  return transform_type_case() == kIncrement;
}
inline void DocumentTransform_FieldTransform::set_has_increment() {
  _impl_._oneof_case_[0] = kIncrement;
}
inline ::google::firestore::v1::Value* DocumentTransform_FieldTransform::release_increment() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.DocumentTransform.FieldTransform.increment)
  if (transform_type_case() == kIncrement) {
    clear_has_transform_type();
    auto* temp = _impl_.transform_type_.increment_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.transform_type_.increment_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::Value& DocumentTransform_FieldTransform::_internal_increment() const {
  return transform_type_case() == kIncrement ? *_impl_.transform_type_.increment_ : reinterpret_cast<::google::firestore::v1::Value&>(::google::firestore::v1::_Value_default_instance_);
}
inline const ::google::firestore::v1::Value& DocumentTransform_FieldTransform::increment() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentTransform.FieldTransform.increment)
  return _internal_increment();
}
inline ::google::firestore::v1::Value* DocumentTransform_FieldTransform::unsafe_arena_release_increment() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.DocumentTransform.FieldTransform.increment)
  if (transform_type_case() == kIncrement) {
    clear_has_transform_type();
    auto* temp = _impl_.transform_type_.increment_;
    _impl_.transform_type_.increment_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void DocumentTransform_FieldTransform::unsafe_arena_set_allocated_increment(::google::firestore::v1::Value* 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_transform_type();
  if (value) {
    set_has_increment();
    _impl_.transform_type_.increment_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.DocumentTransform.FieldTransform.increment)
}
inline ::google::firestore::v1::Value* DocumentTransform_FieldTransform::_internal_mutable_increment() {
  if (transform_type_case() != kIncrement) {
    clear_transform_type();
    set_has_increment();
    _impl_.transform_type_.increment_ = CreateMaybeMessage<::google::firestore::v1::Value>(GetArena());
  }
  return _impl_.transform_type_.increment_;
}
inline ::google::firestore::v1::Value* DocumentTransform_FieldTransform::mutable_increment() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Value* _msg = _internal_mutable_increment();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DocumentTransform.FieldTransform.increment)
  return _msg;
}

// .google.firestore.v1.Value maximum = 4;
inline bool DocumentTransform_FieldTransform::has_maximum() const {
  return transform_type_case() == kMaximum;
}
inline bool DocumentTransform_FieldTransform::_internal_has_maximum() const {
  return transform_type_case() == kMaximum;
}
inline void DocumentTransform_FieldTransform::set_has_maximum() {
  _impl_._oneof_case_[0] = kMaximum;
}
inline ::google::firestore::v1::Value* DocumentTransform_FieldTransform::release_maximum() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.DocumentTransform.FieldTransform.maximum)
  if (transform_type_case() == kMaximum) {
    clear_has_transform_type();
    auto* temp = _impl_.transform_type_.maximum_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.transform_type_.maximum_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::Value& DocumentTransform_FieldTransform::_internal_maximum() const {
  return transform_type_case() == kMaximum ? *_impl_.transform_type_.maximum_ : reinterpret_cast<::google::firestore::v1::Value&>(::google::firestore::v1::_Value_default_instance_);
}
inline const ::google::firestore::v1::Value& DocumentTransform_FieldTransform::maximum() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentTransform.FieldTransform.maximum)
  return _internal_maximum();
}
inline ::google::firestore::v1::Value* DocumentTransform_FieldTransform::unsafe_arena_release_maximum() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.DocumentTransform.FieldTransform.maximum)
  if (transform_type_case() == kMaximum) {
    clear_has_transform_type();
    auto* temp = _impl_.transform_type_.maximum_;
    _impl_.transform_type_.maximum_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void DocumentTransform_FieldTransform::unsafe_arena_set_allocated_maximum(::google::firestore::v1::Value* 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_transform_type();
  if (value) {
    set_has_maximum();
    _impl_.transform_type_.maximum_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.DocumentTransform.FieldTransform.maximum)
}
inline ::google::firestore::v1::Value* DocumentTransform_FieldTransform::_internal_mutable_maximum() {
  if (transform_type_case() != kMaximum) {
    clear_transform_type();
    set_has_maximum();
    _impl_.transform_type_.maximum_ = CreateMaybeMessage<::google::firestore::v1::Value>(GetArena());
  }
  return _impl_.transform_type_.maximum_;
}
inline ::google::firestore::v1::Value* DocumentTransform_FieldTransform::mutable_maximum() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Value* _msg = _internal_mutable_maximum();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DocumentTransform.FieldTransform.maximum)
  return _msg;
}

// .google.firestore.v1.Value minimum = 5;
inline bool DocumentTransform_FieldTransform::has_minimum() const {
  return transform_type_case() == kMinimum;
}
inline bool DocumentTransform_FieldTransform::_internal_has_minimum() const {
  return transform_type_case() == kMinimum;
}
inline void DocumentTransform_FieldTransform::set_has_minimum() {
  _impl_._oneof_case_[0] = kMinimum;
}
inline ::google::firestore::v1::Value* DocumentTransform_FieldTransform::release_minimum() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.DocumentTransform.FieldTransform.minimum)
  if (transform_type_case() == kMinimum) {
    clear_has_transform_type();
    auto* temp = _impl_.transform_type_.minimum_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.transform_type_.minimum_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::Value& DocumentTransform_FieldTransform::_internal_minimum() const {
  return transform_type_case() == kMinimum ? *_impl_.transform_type_.minimum_ : reinterpret_cast<::google::firestore::v1::Value&>(::google::firestore::v1::_Value_default_instance_);
}
inline const ::google::firestore::v1::Value& DocumentTransform_FieldTransform::minimum() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentTransform.FieldTransform.minimum)
  return _internal_minimum();
}
inline ::google::firestore::v1::Value* DocumentTransform_FieldTransform::unsafe_arena_release_minimum() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.DocumentTransform.FieldTransform.minimum)
  if (transform_type_case() == kMinimum) {
    clear_has_transform_type();
    auto* temp = _impl_.transform_type_.minimum_;
    _impl_.transform_type_.minimum_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void DocumentTransform_FieldTransform::unsafe_arena_set_allocated_minimum(::google::firestore::v1::Value* 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_transform_type();
  if (value) {
    set_has_minimum();
    _impl_.transform_type_.minimum_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.DocumentTransform.FieldTransform.minimum)
}
inline ::google::firestore::v1::Value* DocumentTransform_FieldTransform::_internal_mutable_minimum() {
  if (transform_type_case() != kMinimum) {
    clear_transform_type();
    set_has_minimum();
    _impl_.transform_type_.minimum_ = CreateMaybeMessage<::google::firestore::v1::Value>(GetArena());
  }
  return _impl_.transform_type_.minimum_;
}
inline ::google::firestore::v1::Value* DocumentTransform_FieldTransform::mutable_minimum() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Value* _msg = _internal_mutable_minimum();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DocumentTransform.FieldTransform.minimum)
  return _msg;
}

// .google.firestore.v1.ArrayValue append_missing_elements = 6;
inline bool DocumentTransform_FieldTransform::has_append_missing_elements() const {
  return transform_type_case() == kAppendMissingElements;
}
inline bool DocumentTransform_FieldTransform::_internal_has_append_missing_elements() const {
  return transform_type_case() == kAppendMissingElements;
}
inline void DocumentTransform_FieldTransform::set_has_append_missing_elements() {
  _impl_._oneof_case_[0] = kAppendMissingElements;
}
inline ::google::firestore::v1::ArrayValue* DocumentTransform_FieldTransform::release_append_missing_elements() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.DocumentTransform.FieldTransform.append_missing_elements)
  if (transform_type_case() == kAppendMissingElements) {
    clear_has_transform_type();
    auto* temp = _impl_.transform_type_.append_missing_elements_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.transform_type_.append_missing_elements_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::ArrayValue& DocumentTransform_FieldTransform::_internal_append_missing_elements() const {
  return transform_type_case() == kAppendMissingElements ? *_impl_.transform_type_.append_missing_elements_ : reinterpret_cast<::google::firestore::v1::ArrayValue&>(::google::firestore::v1::_ArrayValue_default_instance_);
}
inline const ::google::firestore::v1::ArrayValue& DocumentTransform_FieldTransform::append_missing_elements() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentTransform.FieldTransform.append_missing_elements)
  return _internal_append_missing_elements();
}
inline ::google::firestore::v1::ArrayValue* DocumentTransform_FieldTransform::unsafe_arena_release_append_missing_elements() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.DocumentTransform.FieldTransform.append_missing_elements)
  if (transform_type_case() == kAppendMissingElements) {
    clear_has_transform_type();
    auto* temp = _impl_.transform_type_.append_missing_elements_;
    _impl_.transform_type_.append_missing_elements_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void DocumentTransform_FieldTransform::unsafe_arena_set_allocated_append_missing_elements(::google::firestore::v1::ArrayValue* 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_transform_type();
  if (value) {
    set_has_append_missing_elements();
    _impl_.transform_type_.append_missing_elements_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.DocumentTransform.FieldTransform.append_missing_elements)
}
inline ::google::firestore::v1::ArrayValue* DocumentTransform_FieldTransform::_internal_mutable_append_missing_elements() {
  if (transform_type_case() != kAppendMissingElements) {
    clear_transform_type();
    set_has_append_missing_elements();
    _impl_.transform_type_.append_missing_elements_ = CreateMaybeMessage<::google::firestore::v1::ArrayValue>(GetArena());
  }
  return _impl_.transform_type_.append_missing_elements_;
}
inline ::google::firestore::v1::ArrayValue* DocumentTransform_FieldTransform::mutable_append_missing_elements() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::ArrayValue* _msg = _internal_mutable_append_missing_elements();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DocumentTransform.FieldTransform.append_missing_elements)
  return _msg;
}

// .google.firestore.v1.ArrayValue remove_all_from_array = 7;
inline bool DocumentTransform_FieldTransform::has_remove_all_from_array() const {
  return transform_type_case() == kRemoveAllFromArray;
}
inline bool DocumentTransform_FieldTransform::_internal_has_remove_all_from_array() const {
  return transform_type_case() == kRemoveAllFromArray;
}
inline void DocumentTransform_FieldTransform::set_has_remove_all_from_array() {
  _impl_._oneof_case_[0] = kRemoveAllFromArray;
}
inline ::google::firestore::v1::ArrayValue* DocumentTransform_FieldTransform::release_remove_all_from_array() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.DocumentTransform.FieldTransform.remove_all_from_array)
  if (transform_type_case() == kRemoveAllFromArray) {
    clear_has_transform_type();
    auto* temp = _impl_.transform_type_.remove_all_from_array_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.transform_type_.remove_all_from_array_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::ArrayValue& DocumentTransform_FieldTransform::_internal_remove_all_from_array() const {
  return transform_type_case() == kRemoveAllFromArray ? *_impl_.transform_type_.remove_all_from_array_ : reinterpret_cast<::google::firestore::v1::ArrayValue&>(::google::firestore::v1::_ArrayValue_default_instance_);
}
inline const ::google::firestore::v1::ArrayValue& DocumentTransform_FieldTransform::remove_all_from_array() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentTransform.FieldTransform.remove_all_from_array)
  return _internal_remove_all_from_array();
}
inline ::google::firestore::v1::ArrayValue* DocumentTransform_FieldTransform::unsafe_arena_release_remove_all_from_array() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.firestore.v1.DocumentTransform.FieldTransform.remove_all_from_array)
  if (transform_type_case() == kRemoveAllFromArray) {
    clear_has_transform_type();
    auto* temp = _impl_.transform_type_.remove_all_from_array_;
    _impl_.transform_type_.remove_all_from_array_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void DocumentTransform_FieldTransform::unsafe_arena_set_allocated_remove_all_from_array(::google::firestore::v1::ArrayValue* 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_transform_type();
  if (value) {
    set_has_remove_all_from_array();
    _impl_.transform_type_.remove_all_from_array_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.firestore.v1.DocumentTransform.FieldTransform.remove_all_from_array)
}
inline ::google::firestore::v1::ArrayValue* DocumentTransform_FieldTransform::_internal_mutable_remove_all_from_array() {
  if (transform_type_case() != kRemoveAllFromArray) {
    clear_transform_type();
    set_has_remove_all_from_array();
    _impl_.transform_type_.remove_all_from_array_ = CreateMaybeMessage<::google::firestore::v1::ArrayValue>(GetArena());
  }
  return _impl_.transform_type_.remove_all_from_array_;
}
inline ::google::firestore::v1::ArrayValue* DocumentTransform_FieldTransform::mutable_remove_all_from_array() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::ArrayValue* _msg = _internal_mutable_remove_all_from_array();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DocumentTransform.FieldTransform.remove_all_from_array)
  return _msg;
}

inline bool DocumentTransform_FieldTransform::has_transform_type() const {
  return transform_type_case() != TRANSFORM_TYPE_NOT_SET;
}
inline void DocumentTransform_FieldTransform::clear_has_transform_type() {
  _impl_._oneof_case_[0] = TRANSFORM_TYPE_NOT_SET;
}
inline DocumentTransform_FieldTransform::TransformTypeCase DocumentTransform_FieldTransform::transform_type_case() const {
  return DocumentTransform_FieldTransform::TransformTypeCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// DocumentTransform

// string document = 1;
inline void DocumentTransform::clear_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.document_.ClearToEmpty();
}
inline const std::string& DocumentTransform::document() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentTransform.document)
  return _internal_document();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void DocumentTransform::set_document(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.document_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.DocumentTransform.document)
}
inline std::string* DocumentTransform::mutable_document() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_document();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DocumentTransform.document)
  return _s;
}
inline const std::string& DocumentTransform::_internal_document() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.document_.Get();
}
inline void DocumentTransform::_internal_set_document(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.document_.Set(value, GetArena());
}
inline std::string* DocumentTransform::_internal_mutable_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.document_.Mutable( GetArena());
}
inline std::string* DocumentTransform::release_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.DocumentTransform.document)
  return _impl_.document_.Release();
}
inline void DocumentTransform::set_allocated_document(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.document_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.document_.IsDefault()) {
          _impl_.document_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.DocumentTransform.document)
}

// repeated .google.firestore.v1.DocumentTransform.FieldTransform field_transforms = 2;
inline int DocumentTransform::_internal_field_transforms_size() const {
  return _internal_field_transforms().size();
}
inline int DocumentTransform::field_transforms_size() const {
  return _internal_field_transforms_size();
}
inline void DocumentTransform::clear_field_transforms() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.field_transforms_.Clear();
}
inline ::google::firestore::v1::DocumentTransform_FieldTransform* DocumentTransform::mutable_field_transforms(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DocumentTransform.field_transforms)
  return _internal_mutable_field_transforms()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::DocumentTransform_FieldTransform>* DocumentTransform::mutable_field_transforms()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.DocumentTransform.field_transforms)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_field_transforms();
}
inline const ::google::firestore::v1::DocumentTransform_FieldTransform& DocumentTransform::field_transforms(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentTransform.field_transforms)
  return _internal_field_transforms().Get(index);
}
inline ::google::firestore::v1::DocumentTransform_FieldTransform* DocumentTransform::add_field_transforms() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::google::firestore::v1::DocumentTransform_FieldTransform* _add = _internal_mutable_field_transforms()->Add();
  // @@protoc_insertion_point(field_add:google.firestore.v1.DocumentTransform.field_transforms)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::DocumentTransform_FieldTransform>& DocumentTransform::field_transforms() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.DocumentTransform.field_transforms)
  return _internal_field_transforms();
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::DocumentTransform_FieldTransform>&
DocumentTransform::_internal_field_transforms() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.field_transforms_;
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::DocumentTransform_FieldTransform>*
DocumentTransform::_internal_mutable_field_transforms() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.field_transforms_;
}

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

// WriteResult

// .google.protobuf.Timestamp update_time = 1;
inline bool WriteResult::has_update_time() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.update_time_ != nullptr);
  return value;
}
inline const ::google::protobuf::Timestamp& WriteResult::_internal_update_time() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::protobuf::Timestamp* p = _impl_.update_time_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& WriteResult::update_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.WriteResult.update_time)
  return _internal_update_time();
}
inline void WriteResult::unsafe_arena_set_allocated_update_time(::google::protobuf::Timestamp* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.update_time_);
  }
  _impl_.update_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.WriteResult.update_time)
}
inline ::google::protobuf::Timestamp* WriteResult::release_update_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Timestamp* released = _impl_.update_time_;
  _impl_.update_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* WriteResult::unsafe_arena_release_update_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.WriteResult.update_time)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Timestamp* temp = _impl_.update_time_;
  _impl_.update_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* WriteResult::_internal_mutable_update_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.update_time_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::protobuf::Timestamp>(GetArena());
    _impl_.update_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(p);
  }
  return _impl_.update_time_;
}
inline ::google::protobuf::Timestamp* WriteResult::mutable_update_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_update_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.WriteResult.update_time)
  return _msg;
}
inline void WriteResult::set_allocated_update_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_.update_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_.update_time_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.WriteResult.update_time)
}

// repeated .google.firestore.v1.Value transform_results = 2;
inline int WriteResult::_internal_transform_results_size() const {
  return _internal_transform_results().size();
}
inline int WriteResult::transform_results_size() const {
  return _internal_transform_results_size();
}
inline ::google::firestore::v1::Value* WriteResult::mutable_transform_results(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.WriteResult.transform_results)
  return _internal_mutable_transform_results()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Value>* WriteResult::mutable_transform_results()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.WriteResult.transform_results)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_transform_results();
}
inline const ::google::firestore::v1::Value& WriteResult::transform_results(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.WriteResult.transform_results)
  return _internal_transform_results().Get(index);
}
inline ::google::firestore::v1::Value* WriteResult::add_transform_results() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::google::firestore::v1::Value* _add = _internal_mutable_transform_results()->Add();
  // @@protoc_insertion_point(field_add:google.firestore.v1.WriteResult.transform_results)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Value>& WriteResult::transform_results() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.WriteResult.transform_results)
  return _internal_transform_results();
}
inline const ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Value>&
WriteResult::_internal_transform_results() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.transform_results_;
}
inline ::google::protobuf::RepeatedPtrField<::google::firestore::v1::Value>*
WriteResult::_internal_mutable_transform_results() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.transform_results_;
}

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

// DocumentChange

// .google.firestore.v1.Document document = 1;
inline bool DocumentChange::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& DocumentChange::_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& DocumentChange::document() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentChange.document)
  return _internal_document();
}
inline void DocumentChange::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.DocumentChange.document)
}
inline ::google::firestore::v1::Document* DocumentChange::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* DocumentChange::unsafe_arena_release_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.DocumentChange.document)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::Document* temp = _impl_.document_;
  _impl_.document_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::Document* DocumentChange::_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* DocumentChange::mutable_document() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::Document* _msg = _internal_mutable_document();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DocumentChange.document)
  return _msg;
}
inline void DocumentChange::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.DocumentChange.document)
}

// repeated int32 target_ids = 5;
inline int DocumentChange::_internal_target_ids_size() const {
  return _internal_target_ids().size();
}
inline int DocumentChange::target_ids_size() const {
  return _internal_target_ids_size();
}
inline void DocumentChange::clear_target_ids() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.target_ids_.Clear();
}
inline ::int32_t DocumentChange::target_ids(int index) const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentChange.target_ids)
  return _internal_target_ids().Get(index);
}
inline void DocumentChange::set_target_ids(int index, ::int32_t value) {
  _internal_mutable_target_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.DocumentChange.target_ids)
}
inline void DocumentChange::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.DocumentChange.target_ids)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& DocumentChange::target_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.DocumentChange.target_ids)
  return _internal_target_ids();
}
inline ::google::protobuf::RepeatedField<::int32_t>* DocumentChange::mutable_target_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.DocumentChange.target_ids)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_target_ids();
}
inline const ::google::protobuf::RepeatedField<::int32_t>& DocumentChange::_internal_target_ids()
    const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.target_ids_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* DocumentChange::_internal_mutable_target_ids() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.target_ids_;
}

// repeated int32 removed_target_ids = 6;
inline int DocumentChange::_internal_removed_target_ids_size() const {
  return _internal_removed_target_ids().size();
}
inline int DocumentChange::removed_target_ids_size() const {
  return _internal_removed_target_ids_size();
}
inline void DocumentChange::clear_removed_target_ids() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.removed_target_ids_.Clear();
}
inline ::int32_t DocumentChange::removed_target_ids(int index) const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentChange.removed_target_ids)
  return _internal_removed_target_ids().Get(index);
}
inline void DocumentChange::set_removed_target_ids(int index, ::int32_t value) {
  _internal_mutable_removed_target_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.DocumentChange.removed_target_ids)
}
inline void DocumentChange::add_removed_target_ids(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_removed_target_ids()->Add(value);
  // @@protoc_insertion_point(field_add:google.firestore.v1.DocumentChange.removed_target_ids)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& DocumentChange::removed_target_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.DocumentChange.removed_target_ids)
  return _internal_removed_target_ids();
}
inline ::google::protobuf::RepeatedField<::int32_t>* DocumentChange::mutable_removed_target_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.DocumentChange.removed_target_ids)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_removed_target_ids();
}
inline const ::google::protobuf::RepeatedField<::int32_t>& DocumentChange::_internal_removed_target_ids()
    const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.removed_target_ids_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* DocumentChange::_internal_mutable_removed_target_ids() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.removed_target_ids_;
}

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

// DocumentDelete

// string document = 1;
inline void DocumentDelete::clear_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.document_.ClearToEmpty();
}
inline const std::string& DocumentDelete::document() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentDelete.document)
  return _internal_document();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void DocumentDelete::set_document(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.document_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.DocumentDelete.document)
}
inline std::string* DocumentDelete::mutable_document() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_document();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DocumentDelete.document)
  return _s;
}
inline const std::string& DocumentDelete::_internal_document() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.document_.Get();
}
inline void DocumentDelete::_internal_set_document(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.document_.Set(value, GetArena());
}
inline std::string* DocumentDelete::_internal_mutable_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.document_.Mutable( GetArena());
}
inline std::string* DocumentDelete::release_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.DocumentDelete.document)
  return _impl_.document_.Release();
}
inline void DocumentDelete::set_allocated_document(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.document_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.document_.IsDefault()) {
          _impl_.document_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.DocumentDelete.document)
}

// repeated int32 removed_target_ids = 6;
inline int DocumentDelete::_internal_removed_target_ids_size() const {
  return _internal_removed_target_ids().size();
}
inline int DocumentDelete::removed_target_ids_size() const {
  return _internal_removed_target_ids_size();
}
inline void DocumentDelete::clear_removed_target_ids() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.removed_target_ids_.Clear();
}
inline ::int32_t DocumentDelete::removed_target_ids(int index) const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentDelete.removed_target_ids)
  return _internal_removed_target_ids().Get(index);
}
inline void DocumentDelete::set_removed_target_ids(int index, ::int32_t value) {
  _internal_mutable_removed_target_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.DocumentDelete.removed_target_ids)
}
inline void DocumentDelete::add_removed_target_ids(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_removed_target_ids()->Add(value);
  // @@protoc_insertion_point(field_add:google.firestore.v1.DocumentDelete.removed_target_ids)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& DocumentDelete::removed_target_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.DocumentDelete.removed_target_ids)
  return _internal_removed_target_ids();
}
inline ::google::protobuf::RepeatedField<::int32_t>* DocumentDelete::mutable_removed_target_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.DocumentDelete.removed_target_ids)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_removed_target_ids();
}
inline const ::google::protobuf::RepeatedField<::int32_t>& DocumentDelete::_internal_removed_target_ids()
    const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.removed_target_ids_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* DocumentDelete::_internal_mutable_removed_target_ids() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.removed_target_ids_;
}

// .google.protobuf.Timestamp read_time = 4;
inline bool DocumentDelete::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& DocumentDelete::_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& DocumentDelete::read_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentDelete.read_time)
  return _internal_read_time();
}
inline void DocumentDelete::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.DocumentDelete.read_time)
}
inline ::google::protobuf::Timestamp* DocumentDelete::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* DocumentDelete::unsafe_arena_release_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.DocumentDelete.read_time)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Timestamp* temp = _impl_.read_time_;
  _impl_.read_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* DocumentDelete::_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* DocumentDelete::mutable_read_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_read_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DocumentDelete.read_time)
  return _msg;
}
inline void DocumentDelete::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.DocumentDelete.read_time)
}

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

// DocumentRemove

// string document = 1;
inline void DocumentRemove::clear_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.document_.ClearToEmpty();
}
inline const std::string& DocumentRemove::document() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentRemove.document)
  return _internal_document();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void DocumentRemove::set_document(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.document_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:google.firestore.v1.DocumentRemove.document)
}
inline std::string* DocumentRemove::mutable_document() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_document();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DocumentRemove.document)
  return _s;
}
inline const std::string& DocumentRemove::_internal_document() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.document_.Get();
}
inline void DocumentRemove::_internal_set_document(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.document_.Set(value, GetArena());
}
inline std::string* DocumentRemove::_internal_mutable_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.document_.Mutable( GetArena());
}
inline std::string* DocumentRemove::release_document() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.DocumentRemove.document)
  return _impl_.document_.Release();
}
inline void DocumentRemove::set_allocated_document(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.document_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.document_.IsDefault()) {
          _impl_.document_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.DocumentRemove.document)
}

// repeated int32 removed_target_ids = 2;
inline int DocumentRemove::_internal_removed_target_ids_size() const {
  return _internal_removed_target_ids().size();
}
inline int DocumentRemove::removed_target_ids_size() const {
  return _internal_removed_target_ids_size();
}
inline void DocumentRemove::clear_removed_target_ids() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.removed_target_ids_.Clear();
}
inline ::int32_t DocumentRemove::removed_target_ids(int index) const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentRemove.removed_target_ids)
  return _internal_removed_target_ids().Get(index);
}
inline void DocumentRemove::set_removed_target_ids(int index, ::int32_t value) {
  _internal_mutable_removed_target_ids()->Set(index, value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.DocumentRemove.removed_target_ids)
}
inline void DocumentRemove::add_removed_target_ids(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_removed_target_ids()->Add(value);
  // @@protoc_insertion_point(field_add:google.firestore.v1.DocumentRemove.removed_target_ids)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& DocumentRemove::removed_target_ids() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:google.firestore.v1.DocumentRemove.removed_target_ids)
  return _internal_removed_target_ids();
}
inline ::google::protobuf::RepeatedField<::int32_t>* DocumentRemove::mutable_removed_target_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.DocumentRemove.removed_target_ids)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_removed_target_ids();
}
inline const ::google::protobuf::RepeatedField<::int32_t>& DocumentRemove::_internal_removed_target_ids()
    const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.removed_target_ids_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* DocumentRemove::_internal_mutable_removed_target_ids() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.removed_target_ids_;
}

// .google.protobuf.Timestamp read_time = 4;
inline bool DocumentRemove::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& DocumentRemove::_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& DocumentRemove::read_time() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.DocumentRemove.read_time)
  return _internal_read_time();
}
inline void DocumentRemove::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.DocumentRemove.read_time)
}
inline ::google::protobuf::Timestamp* DocumentRemove::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* DocumentRemove::unsafe_arena_release_read_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.DocumentRemove.read_time)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::protobuf::Timestamp* temp = _impl_.read_time_;
  _impl_.read_time_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* DocumentRemove::_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* DocumentRemove::mutable_read_time() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::Timestamp* _msg = _internal_mutable_read_time();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.DocumentRemove.read_time)
  return _msg;
}
inline void DocumentRemove::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.DocumentRemove.read_time)
}

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

// ExistenceFilter

// int32 target_id = 1;
inline void ExistenceFilter::clear_target_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.target_id_ = 0;
}
inline ::int32_t ExistenceFilter::target_id() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ExistenceFilter.target_id)
  return _internal_target_id();
}
inline void ExistenceFilter::set_target_id(::int32_t value) {
  _internal_set_target_id(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.ExistenceFilter.target_id)
}
inline ::int32_t ExistenceFilter::_internal_target_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.target_id_;
}
inline void ExistenceFilter::_internal_set_target_id(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.target_id_ = value;
}

// int32 count = 2;
inline void ExistenceFilter::clear_count() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.count_ = 0;
}
inline ::int32_t ExistenceFilter::count() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ExistenceFilter.count)
  return _internal_count();
}
inline void ExistenceFilter::set_count(::int32_t value) {
  _internal_set_count(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.ExistenceFilter.count)
}
inline ::int32_t ExistenceFilter::_internal_count() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.count_;
}
inline void ExistenceFilter::_internal_set_count(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.count_ = value;
}

// .google.firestore.v1.BloomFilter unchanged_names = 3;
inline bool ExistenceFilter::has_unchanged_names() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.unchanged_names_ != nullptr);
  return value;
}
inline const ::google::firestore::v1::BloomFilter& ExistenceFilter::_internal_unchanged_names() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::google::firestore::v1::BloomFilter* p = _impl_.unchanged_names_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::firestore::v1::BloomFilter&>(::google::firestore::v1::_BloomFilter_default_instance_);
}
inline const ::google::firestore::v1::BloomFilter& ExistenceFilter::unchanged_names() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:google.firestore.v1.ExistenceFilter.unchanged_names)
  return _internal_unchanged_names();
}
inline void ExistenceFilter::unsafe_arena_set_allocated_unchanged_names(::google::firestore::v1::BloomFilter* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.unchanged_names_);
  }
  _impl_.unchanged_names_ = reinterpret_cast<::google::firestore::v1::BloomFilter*>(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.ExistenceFilter.unchanged_names)
}
inline ::google::firestore::v1::BloomFilter* ExistenceFilter::release_unchanged_names() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::BloomFilter* released = _impl_.unchanged_names_;
  _impl_.unchanged_names_ = 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::BloomFilter* ExistenceFilter::unsafe_arena_release_unchanged_names() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:google.firestore.v1.ExistenceFilter.unchanged_names)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::google::firestore::v1::BloomFilter* temp = _impl_.unchanged_names_;
  _impl_.unchanged_names_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::BloomFilter* ExistenceFilter::_internal_mutable_unchanged_names() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.unchanged_names_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::BloomFilter>(GetArena());
    _impl_.unchanged_names_ = reinterpret_cast<::google::firestore::v1::BloomFilter*>(p);
  }
  return _impl_.unchanged_names_;
}
inline ::google::firestore::v1::BloomFilter* ExistenceFilter::mutable_unchanged_names() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::firestore::v1::BloomFilter* _msg = _internal_mutable_unchanged_names();
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.ExistenceFilter.unchanged_names)
  return _msg;
}
inline void ExistenceFilter::set_allocated_unchanged_names(::google::firestore::v1::BloomFilter* 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_.unchanged_names_);
  }

  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_.unchanged_names_ = reinterpret_cast<::google::firestore::v1::BloomFilter*>(value);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.ExistenceFilter.unchanged_names)
}

#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::DocumentTransform_FieldTransform_ServerValue> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::google::firestore::v1::DocumentTransform_FieldTransform_ServerValue>() {
  return ::google::firestore::v1::DocumentTransform_FieldTransform_ServerValue_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_google_2ffirestore_2fv1_2fwrite_2eproto_2epb_2eh
