/*
 * Copyright 2022 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/query.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_google_2ffirestore_2fv1_2fquery_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_google_2ffirestore_2fv1_2fquery_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3011000
#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
#if 3011002 < 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

#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_table_driven.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/inlined_string_field.h>
#include <google/protobuf/metadata.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/document.pb.h"
#include <google/protobuf/wrappers.pb.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_google_2ffirestore_2fv1_2fquery_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_google_2ffirestore_2fv1_2fquery_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[13]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
  static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
  static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto;
namespace google {
namespace firestore {
namespace v1 {
class Cursor;
class CursorDefaultTypeInternal;
extern CursorDefaultTypeInternal _Cursor_default_instance_;
class StructuredAggregationQuery;
class StructuredAggregationQueryDefaultTypeInternal;
extern StructuredAggregationQueryDefaultTypeInternal _StructuredAggregationQuery_default_instance_;
class StructuredAggregationQuery_Aggregation;
class StructuredAggregationQuery_AggregationDefaultTypeInternal;
extern StructuredAggregationQuery_AggregationDefaultTypeInternal _StructuredAggregationQuery_Aggregation_default_instance_;
class StructuredAggregationQuery_Aggregation_Count;
class StructuredAggregationQuery_Aggregation_CountDefaultTypeInternal;
extern StructuredAggregationQuery_Aggregation_CountDefaultTypeInternal _StructuredAggregationQuery_Aggregation_Count_default_instance_;
class StructuredQuery;
class StructuredQueryDefaultTypeInternal;
extern StructuredQueryDefaultTypeInternal _StructuredQuery_default_instance_;
class StructuredQuery_CollectionSelector;
class StructuredQuery_CollectionSelectorDefaultTypeInternal;
extern StructuredQuery_CollectionSelectorDefaultTypeInternal _StructuredQuery_CollectionSelector_default_instance_;
class StructuredQuery_CompositeFilter;
class StructuredQuery_CompositeFilterDefaultTypeInternal;
extern StructuredQuery_CompositeFilterDefaultTypeInternal _StructuredQuery_CompositeFilter_default_instance_;
class StructuredQuery_FieldFilter;
class StructuredQuery_FieldFilterDefaultTypeInternal;
extern StructuredQuery_FieldFilterDefaultTypeInternal _StructuredQuery_FieldFilter_default_instance_;
class StructuredQuery_FieldReference;
class StructuredQuery_FieldReferenceDefaultTypeInternal;
extern StructuredQuery_FieldReferenceDefaultTypeInternal _StructuredQuery_FieldReference_default_instance_;
class StructuredQuery_Filter;
class StructuredQuery_FilterDefaultTypeInternal;
extern StructuredQuery_FilterDefaultTypeInternal _StructuredQuery_Filter_default_instance_;
class StructuredQuery_Order;
class StructuredQuery_OrderDefaultTypeInternal;
extern StructuredQuery_OrderDefaultTypeInternal _StructuredQuery_Order_default_instance_;
class StructuredQuery_Projection;
class StructuredQuery_ProjectionDefaultTypeInternal;
extern StructuredQuery_ProjectionDefaultTypeInternal _StructuredQuery_Projection_default_instance_;
class StructuredQuery_UnaryFilter;
class StructuredQuery_UnaryFilterDefaultTypeInternal;
extern StructuredQuery_UnaryFilterDefaultTypeInternal _StructuredQuery_UnaryFilter_default_instance_;
}  // namespace v1
}  // namespace firestore
}  // namespace google
PROTOBUF_NAMESPACE_OPEN
template<> ::google::firestore::v1::Cursor* Arena::CreateMaybeMessage<::google::firestore::v1::Cursor>(Arena*);
template<> ::google::firestore::v1::StructuredAggregationQuery* Arena::CreateMaybeMessage<::google::firestore::v1::StructuredAggregationQuery>(Arena*);
template<> ::google::firestore::v1::StructuredAggregationQuery_Aggregation* Arena::CreateMaybeMessage<::google::firestore::v1::StructuredAggregationQuery_Aggregation>(Arena*);
template<> ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count* Arena::CreateMaybeMessage<::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count>(Arena*);
template<> ::google::firestore::v1::StructuredQuery* Arena::CreateMaybeMessage<::google::firestore::v1::StructuredQuery>(Arena*);
template<> ::google::firestore::v1::StructuredQuery_CollectionSelector* Arena::CreateMaybeMessage<::google::firestore::v1::StructuredQuery_CollectionSelector>(Arena*);
template<> ::google::firestore::v1::StructuredQuery_CompositeFilter* Arena::CreateMaybeMessage<::google::firestore::v1::StructuredQuery_CompositeFilter>(Arena*);
template<> ::google::firestore::v1::StructuredQuery_FieldFilter* Arena::CreateMaybeMessage<::google::firestore::v1::StructuredQuery_FieldFilter>(Arena*);
template<> ::google::firestore::v1::StructuredQuery_FieldReference* Arena::CreateMaybeMessage<::google::firestore::v1::StructuredQuery_FieldReference>(Arena*);
template<> ::google::firestore::v1::StructuredQuery_Filter* Arena::CreateMaybeMessage<::google::firestore::v1::StructuredQuery_Filter>(Arena*);
template<> ::google::firestore::v1::StructuredQuery_Order* Arena::CreateMaybeMessage<::google::firestore::v1::StructuredQuery_Order>(Arena*);
template<> ::google::firestore::v1::StructuredQuery_Projection* Arena::CreateMaybeMessage<::google::firestore::v1::StructuredQuery_Projection>(Arena*);
template<> ::google::firestore::v1::StructuredQuery_UnaryFilter* Arena::CreateMaybeMessage<::google::firestore::v1::StructuredQuery_UnaryFilter>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace google {
namespace firestore {
namespace v1 {

enum StructuredQuery_CompositeFilter_Operator : int {
  StructuredQuery_CompositeFilter_Operator_OPERATOR_UNSPECIFIED = 0,
  StructuredQuery_CompositeFilter_Operator_AND = 1,
  StructuredQuery_CompositeFilter_Operator_OR = 2,
  StructuredQuery_CompositeFilter_Operator_StructuredQuery_CompositeFilter_Operator_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  StructuredQuery_CompositeFilter_Operator_StructuredQuery_CompositeFilter_Operator_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool StructuredQuery_CompositeFilter_Operator_IsValid(int value);
constexpr StructuredQuery_CompositeFilter_Operator StructuredQuery_CompositeFilter_Operator_Operator_MIN = StructuredQuery_CompositeFilter_Operator_OPERATOR_UNSPECIFIED;
constexpr StructuredQuery_CompositeFilter_Operator StructuredQuery_CompositeFilter_Operator_Operator_MAX = StructuredQuery_CompositeFilter_Operator_OR;
constexpr int StructuredQuery_CompositeFilter_Operator_Operator_ARRAYSIZE = StructuredQuery_CompositeFilter_Operator_Operator_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* StructuredQuery_CompositeFilter_Operator_descriptor();
template<typename T>
inline const std::string& StructuredQuery_CompositeFilter_Operator_Name(T enum_t_value) {
  static_assert(::std::is_same<T, StructuredQuery_CompositeFilter_Operator>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function StructuredQuery_CompositeFilter_Operator_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    StructuredQuery_CompositeFilter_Operator_descriptor(), enum_t_value);
}
inline bool StructuredQuery_CompositeFilter_Operator_Parse(
    const std::string& name, StructuredQuery_CompositeFilter_Operator* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<StructuredQuery_CompositeFilter_Operator>(
    StructuredQuery_CompositeFilter_Operator_descriptor(), name, value);
}
enum StructuredQuery_FieldFilter_Operator : int {
  StructuredQuery_FieldFilter_Operator_OPERATOR_UNSPECIFIED = 0,
  StructuredQuery_FieldFilter_Operator_LESS_THAN = 1,
  StructuredQuery_FieldFilter_Operator_LESS_THAN_OR_EQUAL = 2,
  StructuredQuery_FieldFilter_Operator_GREATER_THAN = 3,
  StructuredQuery_FieldFilter_Operator_GREATER_THAN_OR_EQUAL = 4,
  StructuredQuery_FieldFilter_Operator_EQUAL = 5,
  StructuredQuery_FieldFilter_Operator_NOT_EQUAL = 6,
  StructuredQuery_FieldFilter_Operator_ARRAY_CONTAINS = 7,
  StructuredQuery_FieldFilter_Operator_IN = 8,
  StructuredQuery_FieldFilter_Operator_ARRAY_CONTAINS_ANY = 9,
  StructuredQuery_FieldFilter_Operator_NOT_IN = 10,
  StructuredQuery_FieldFilter_Operator_StructuredQuery_FieldFilter_Operator_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  StructuredQuery_FieldFilter_Operator_StructuredQuery_FieldFilter_Operator_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool StructuredQuery_FieldFilter_Operator_IsValid(int value);
constexpr StructuredQuery_FieldFilter_Operator StructuredQuery_FieldFilter_Operator_Operator_MIN = StructuredQuery_FieldFilter_Operator_OPERATOR_UNSPECIFIED;
constexpr StructuredQuery_FieldFilter_Operator StructuredQuery_FieldFilter_Operator_Operator_MAX = StructuredQuery_FieldFilter_Operator_NOT_IN;
constexpr int StructuredQuery_FieldFilter_Operator_Operator_ARRAYSIZE = StructuredQuery_FieldFilter_Operator_Operator_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* StructuredQuery_FieldFilter_Operator_descriptor();
template<typename T>
inline const std::string& StructuredQuery_FieldFilter_Operator_Name(T enum_t_value) {
  static_assert(::std::is_same<T, StructuredQuery_FieldFilter_Operator>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function StructuredQuery_FieldFilter_Operator_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    StructuredQuery_FieldFilter_Operator_descriptor(), enum_t_value);
}
inline bool StructuredQuery_FieldFilter_Operator_Parse(
    const std::string& name, StructuredQuery_FieldFilter_Operator* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<StructuredQuery_FieldFilter_Operator>(
    StructuredQuery_FieldFilter_Operator_descriptor(), name, value);
}
enum StructuredQuery_UnaryFilter_Operator : int {
  StructuredQuery_UnaryFilter_Operator_OPERATOR_UNSPECIFIED = 0,
  StructuredQuery_UnaryFilter_Operator_IS_NAN = 2,
  StructuredQuery_UnaryFilter_Operator_IS_NULL = 3,
  StructuredQuery_UnaryFilter_Operator_IS_NOT_NAN = 4,
  StructuredQuery_UnaryFilter_Operator_IS_NOT_NULL = 5,
  StructuredQuery_UnaryFilter_Operator_StructuredQuery_UnaryFilter_Operator_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  StructuredQuery_UnaryFilter_Operator_StructuredQuery_UnaryFilter_Operator_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool StructuredQuery_UnaryFilter_Operator_IsValid(int value);
constexpr StructuredQuery_UnaryFilter_Operator StructuredQuery_UnaryFilter_Operator_Operator_MIN = StructuredQuery_UnaryFilter_Operator_OPERATOR_UNSPECIFIED;
constexpr StructuredQuery_UnaryFilter_Operator StructuredQuery_UnaryFilter_Operator_Operator_MAX = StructuredQuery_UnaryFilter_Operator_IS_NOT_NULL;
constexpr int StructuredQuery_UnaryFilter_Operator_Operator_ARRAYSIZE = StructuredQuery_UnaryFilter_Operator_Operator_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* StructuredQuery_UnaryFilter_Operator_descriptor();
template<typename T>
inline const std::string& StructuredQuery_UnaryFilter_Operator_Name(T enum_t_value) {
  static_assert(::std::is_same<T, StructuredQuery_UnaryFilter_Operator>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function StructuredQuery_UnaryFilter_Operator_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    StructuredQuery_UnaryFilter_Operator_descriptor(), enum_t_value);
}
inline bool StructuredQuery_UnaryFilter_Operator_Parse(
    const std::string& name, StructuredQuery_UnaryFilter_Operator* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<StructuredQuery_UnaryFilter_Operator>(
    StructuredQuery_UnaryFilter_Operator_descriptor(), name, value);
}
enum StructuredQuery_Direction : int {
  StructuredQuery_Direction_DIRECTION_UNSPECIFIED = 0,
  StructuredQuery_Direction_ASCENDING = 1,
  StructuredQuery_Direction_DESCENDING = 2,
  StructuredQuery_Direction_StructuredQuery_Direction_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  StructuredQuery_Direction_StructuredQuery_Direction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool StructuredQuery_Direction_IsValid(int value);
constexpr StructuredQuery_Direction StructuredQuery_Direction_Direction_MIN = StructuredQuery_Direction_DIRECTION_UNSPECIFIED;
constexpr StructuredQuery_Direction StructuredQuery_Direction_Direction_MAX = StructuredQuery_Direction_DESCENDING;
constexpr int StructuredQuery_Direction_Direction_ARRAYSIZE = StructuredQuery_Direction_Direction_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* StructuredQuery_Direction_descriptor();
template<typename T>
inline const std::string& StructuredQuery_Direction_Name(T enum_t_value) {
  static_assert(::std::is_same<T, StructuredQuery_Direction>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function StructuredQuery_Direction_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    StructuredQuery_Direction_descriptor(), enum_t_value);
}
inline bool StructuredQuery_Direction_Parse(
    const std::string& name, StructuredQuery_Direction* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<StructuredQuery_Direction>(
    StructuredQuery_Direction_descriptor(), name, value);
}
// ===================================================================

class StructuredQuery_CollectionSelector :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.StructuredQuery.CollectionSelector) */ {
 public:
  StructuredQuery_CollectionSelector();
  virtual ~StructuredQuery_CollectionSelector();

  StructuredQuery_CollectionSelector(const StructuredQuery_CollectionSelector& from);
  StructuredQuery_CollectionSelector(StructuredQuery_CollectionSelector&& from) noexcept
    : StructuredQuery_CollectionSelector() {
    *this = ::std::move(from);
  }

  inline StructuredQuery_CollectionSelector& operator=(const StructuredQuery_CollectionSelector& from) {
    CopyFrom(from);
    return *this;
  }
  inline StructuredQuery_CollectionSelector& operator=(StructuredQuery_CollectionSelector&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const StructuredQuery_CollectionSelector& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const StructuredQuery_CollectionSelector* internal_default_instance() {
    return reinterpret_cast<const StructuredQuery_CollectionSelector*>(
               &_StructuredQuery_CollectionSelector_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(StructuredQuery_CollectionSelector& a, StructuredQuery_CollectionSelector& b) {
    a.Swap(&b);
  }
  inline void Swap(StructuredQuery_CollectionSelector* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline StructuredQuery_CollectionSelector* New() const final {
    return CreateMaybeMessage<StructuredQuery_CollectionSelector>(nullptr);
  }

  StructuredQuery_CollectionSelector* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<StructuredQuery_CollectionSelector>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const StructuredQuery_CollectionSelector& from);
  void MergeFrom(const StructuredQuery_CollectionSelector& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StructuredQuery_CollectionSelector* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "google.firestore.v1.StructuredQuery.CollectionSelector";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto);
    return ::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kCollectionIdFieldNumber = 2,
    kAllDescendantsFieldNumber = 3,
  };
  // string collection_id = 2;
  void clear_collection_id();
  const std::string& collection_id() const;
  void set_collection_id(const std::string& value);
  void set_collection_id(std::string&& value);
  void set_collection_id(const char* value);
  void set_collection_id(const char* value, size_t size);
  std::string* mutable_collection_id();
  std::string* release_collection_id();
  void set_allocated_collection_id(std::string* collection_id);
  private:
  const std::string& _internal_collection_id() const;
  void _internal_set_collection_id(const std::string& value);
  std::string* _internal_mutable_collection_id();
  public:

  // bool all_descendants = 3;
  void clear_all_descendants();
  bool all_descendants() const;
  void set_all_descendants(bool value);
  private:
  bool _internal_all_descendants() const;
  void _internal_set_all_descendants(bool value);
  public:

  // @@protoc_insertion_point(class_scope:google.firestore.v1.StructuredQuery.CollectionSelector)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr collection_id_;
  bool all_descendants_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fquery_2eproto;
};
// -------------------------------------------------------------------

class StructuredQuery_Filter :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.StructuredQuery.Filter) */ {
 public:
  StructuredQuery_Filter();
  virtual ~StructuredQuery_Filter();

  StructuredQuery_Filter(const StructuredQuery_Filter& from);
  StructuredQuery_Filter(StructuredQuery_Filter&& from) noexcept
    : StructuredQuery_Filter() {
    *this = ::std::move(from);
  }

  inline StructuredQuery_Filter& operator=(const StructuredQuery_Filter& from) {
    CopyFrom(from);
    return *this;
  }
  inline StructuredQuery_Filter& operator=(StructuredQuery_Filter&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const StructuredQuery_Filter& default_instance();

  enum FilterTypeCase {
    kCompositeFilter = 1,
    kFieldFilter = 2,
    kUnaryFilter = 3,
    FILTER_TYPE_NOT_SET = 0,
  };

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const StructuredQuery_Filter* internal_default_instance() {
    return reinterpret_cast<const StructuredQuery_Filter*>(
               &_StructuredQuery_Filter_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(StructuredQuery_Filter& a, StructuredQuery_Filter& b) {
    a.Swap(&b);
  }
  inline void Swap(StructuredQuery_Filter* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline StructuredQuery_Filter* New() const final {
    return CreateMaybeMessage<StructuredQuery_Filter>(nullptr);
  }

  StructuredQuery_Filter* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<StructuredQuery_Filter>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const StructuredQuery_Filter& from);
  void MergeFrom(const StructuredQuery_Filter& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StructuredQuery_Filter* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "google.firestore.v1.StructuredQuery.Filter";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto);
    return ::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kCompositeFilterFieldNumber = 1,
    kFieldFilterFieldNumber = 2,
    kUnaryFilterFieldNumber = 3,
  };
  // .google.firestore.v1.StructuredQuery.CompositeFilter composite_filter = 1;
  bool has_composite_filter() const;
  private:
  bool _internal_has_composite_filter() const;
  public:
  void clear_composite_filter();
  const ::google::firestore::v1::StructuredQuery_CompositeFilter& composite_filter() const;
  ::google::firestore::v1::StructuredQuery_CompositeFilter* release_composite_filter();
  ::google::firestore::v1::StructuredQuery_CompositeFilter* mutable_composite_filter();
  void set_allocated_composite_filter(::google::firestore::v1::StructuredQuery_CompositeFilter* composite_filter);
  private:
  const ::google::firestore::v1::StructuredQuery_CompositeFilter& _internal_composite_filter() const;
  ::google::firestore::v1::StructuredQuery_CompositeFilter* _internal_mutable_composite_filter();
  public:

  // .google.firestore.v1.StructuredQuery.FieldFilter field_filter = 2;
  bool has_field_filter() const;
  private:
  bool _internal_has_field_filter() const;
  public:
  void clear_field_filter();
  const ::google::firestore::v1::StructuredQuery_FieldFilter& field_filter() const;
  ::google::firestore::v1::StructuredQuery_FieldFilter* release_field_filter();
  ::google::firestore::v1::StructuredQuery_FieldFilter* mutable_field_filter();
  void set_allocated_field_filter(::google::firestore::v1::StructuredQuery_FieldFilter* field_filter);
  private:
  const ::google::firestore::v1::StructuredQuery_FieldFilter& _internal_field_filter() const;
  ::google::firestore::v1::StructuredQuery_FieldFilter* _internal_mutable_field_filter();
  public:

  // .google.firestore.v1.StructuredQuery.UnaryFilter unary_filter = 3;
  bool has_unary_filter() const;
  private:
  bool _internal_has_unary_filter() const;
  public:
  void clear_unary_filter();
  const ::google::firestore::v1::StructuredQuery_UnaryFilter& unary_filter() const;
  ::google::firestore::v1::StructuredQuery_UnaryFilter* release_unary_filter();
  ::google::firestore::v1::StructuredQuery_UnaryFilter* mutable_unary_filter();
  void set_allocated_unary_filter(::google::firestore::v1::StructuredQuery_UnaryFilter* unary_filter);
  private:
  const ::google::firestore::v1::StructuredQuery_UnaryFilter& _internal_unary_filter() const;
  ::google::firestore::v1::StructuredQuery_UnaryFilter* _internal_mutable_unary_filter();
  public:

  void clear_filter_type();
  FilterTypeCase filter_type_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.StructuredQuery.Filter)
 private:
  class _Internal;
  void set_has_composite_filter();
  void set_has_field_filter();
  void set_has_unary_filter();

  inline bool has_filter_type() const;
  inline void clear_has_filter_type();

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  union FilterTypeUnion {
    FilterTypeUnion() {}
    ::google::firestore::v1::StructuredQuery_CompositeFilter* composite_filter_;
    ::google::firestore::v1::StructuredQuery_FieldFilter* field_filter_;
    ::google::firestore::v1::StructuredQuery_UnaryFilter* unary_filter_;
  } filter_type_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::uint32 _oneof_case_[1];

  friend struct ::TableStruct_google_2ffirestore_2fv1_2fquery_2eproto;
};
// -------------------------------------------------------------------

class StructuredQuery_CompositeFilter :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.StructuredQuery.CompositeFilter) */ {
 public:
  StructuredQuery_CompositeFilter();
  virtual ~StructuredQuery_CompositeFilter();

  StructuredQuery_CompositeFilter(const StructuredQuery_CompositeFilter& from);
  StructuredQuery_CompositeFilter(StructuredQuery_CompositeFilter&& from) noexcept
    : StructuredQuery_CompositeFilter() {
    *this = ::std::move(from);
  }

  inline StructuredQuery_CompositeFilter& operator=(const StructuredQuery_CompositeFilter& from) {
    CopyFrom(from);
    return *this;
  }
  inline StructuredQuery_CompositeFilter& operator=(StructuredQuery_CompositeFilter&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const StructuredQuery_CompositeFilter& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const StructuredQuery_CompositeFilter* internal_default_instance() {
    return reinterpret_cast<const StructuredQuery_CompositeFilter*>(
               &_StructuredQuery_CompositeFilter_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(StructuredQuery_CompositeFilter& a, StructuredQuery_CompositeFilter& b) {
    a.Swap(&b);
  }
  inline void Swap(StructuredQuery_CompositeFilter* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline StructuredQuery_CompositeFilter* New() const final {
    return CreateMaybeMessage<StructuredQuery_CompositeFilter>(nullptr);
  }

  StructuredQuery_CompositeFilter* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<StructuredQuery_CompositeFilter>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const StructuredQuery_CompositeFilter& from);
  void MergeFrom(const StructuredQuery_CompositeFilter& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StructuredQuery_CompositeFilter* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "google.firestore.v1.StructuredQuery.CompositeFilter";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto);
    return ::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

  typedef StructuredQuery_CompositeFilter_Operator Operator;
  static constexpr Operator OPERATOR_UNSPECIFIED =
    StructuredQuery_CompositeFilter_Operator_OPERATOR_UNSPECIFIED;
  static constexpr Operator AND =
    StructuredQuery_CompositeFilter_Operator_AND;
  static constexpr Operator OR =
    StructuredQuery_CompositeFilter_Operator_OR;
  static inline bool Operator_IsValid(int value) {
    return StructuredQuery_CompositeFilter_Operator_IsValid(value);
  }
  static constexpr Operator Operator_MIN =
    StructuredQuery_CompositeFilter_Operator_Operator_MIN;
  static constexpr Operator Operator_MAX =
    StructuredQuery_CompositeFilter_Operator_Operator_MAX;
  static constexpr int Operator_ARRAYSIZE =
    StructuredQuery_CompositeFilter_Operator_Operator_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Operator_descriptor() {
    return StructuredQuery_CompositeFilter_Operator_descriptor();
  }
  template<typename T>
  static inline const std::string& Operator_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Operator>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Operator_Name.");
    return StructuredQuery_CompositeFilter_Operator_Name(enum_t_value);
  }
  static inline bool Operator_Parse(const std::string& name,
      Operator* value) {
    return StructuredQuery_CompositeFilter_Operator_Parse(name, value);
  }

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

  enum : int {
    kFiltersFieldNumber = 2,
    kOpFieldNumber = 1,
  };
  // repeated .google.firestore.v1.StructuredQuery.Filter filters = 2;
  int filters_size() const;
  private:
  int _internal_filters_size() const;
  public:
  void clear_filters();
  ::google::firestore::v1::StructuredQuery_Filter* mutable_filters(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_Filter >*
      mutable_filters();
  private:
  const ::google::firestore::v1::StructuredQuery_Filter& _internal_filters(int index) const;
  ::google::firestore::v1::StructuredQuery_Filter* _internal_add_filters();
  public:
  const ::google::firestore::v1::StructuredQuery_Filter& filters(int index) const;
  ::google::firestore::v1::StructuredQuery_Filter* add_filters();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_Filter >&
      filters() const;

  // .google.firestore.v1.StructuredQuery.CompositeFilter.Operator op = 1;
  void clear_op();
  ::google::firestore::v1::StructuredQuery_CompositeFilter_Operator op() const;
  void set_op(::google::firestore::v1::StructuredQuery_CompositeFilter_Operator value);
  private:
  ::google::firestore::v1::StructuredQuery_CompositeFilter_Operator _internal_op() const;
  void _internal_set_op(::google::firestore::v1::StructuredQuery_CompositeFilter_Operator value);
  public:

  // @@protoc_insertion_point(class_scope:google.firestore.v1.StructuredQuery.CompositeFilter)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_Filter > filters_;
  int op_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fquery_2eproto;
};
// -------------------------------------------------------------------

class StructuredQuery_FieldFilter :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.StructuredQuery.FieldFilter) */ {
 public:
  StructuredQuery_FieldFilter();
  virtual ~StructuredQuery_FieldFilter();

  StructuredQuery_FieldFilter(const StructuredQuery_FieldFilter& from);
  StructuredQuery_FieldFilter(StructuredQuery_FieldFilter&& from) noexcept
    : StructuredQuery_FieldFilter() {
    *this = ::std::move(from);
  }

  inline StructuredQuery_FieldFilter& operator=(const StructuredQuery_FieldFilter& from) {
    CopyFrom(from);
    return *this;
  }
  inline StructuredQuery_FieldFilter& operator=(StructuredQuery_FieldFilter&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const StructuredQuery_FieldFilter& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const StructuredQuery_FieldFilter* internal_default_instance() {
    return reinterpret_cast<const StructuredQuery_FieldFilter*>(
               &_StructuredQuery_FieldFilter_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(StructuredQuery_FieldFilter& a, StructuredQuery_FieldFilter& b) {
    a.Swap(&b);
  }
  inline void Swap(StructuredQuery_FieldFilter* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline StructuredQuery_FieldFilter* New() const final {
    return CreateMaybeMessage<StructuredQuery_FieldFilter>(nullptr);
  }

  StructuredQuery_FieldFilter* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<StructuredQuery_FieldFilter>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const StructuredQuery_FieldFilter& from);
  void MergeFrom(const StructuredQuery_FieldFilter& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StructuredQuery_FieldFilter* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "google.firestore.v1.StructuredQuery.FieldFilter";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto);
    return ::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

  typedef StructuredQuery_FieldFilter_Operator Operator;
  static constexpr Operator OPERATOR_UNSPECIFIED =
    StructuredQuery_FieldFilter_Operator_OPERATOR_UNSPECIFIED;
  static constexpr Operator LESS_THAN =
    StructuredQuery_FieldFilter_Operator_LESS_THAN;
  static constexpr Operator LESS_THAN_OR_EQUAL =
    StructuredQuery_FieldFilter_Operator_LESS_THAN_OR_EQUAL;
  static constexpr Operator GREATER_THAN =
    StructuredQuery_FieldFilter_Operator_GREATER_THAN;
  static constexpr Operator GREATER_THAN_OR_EQUAL =
    StructuredQuery_FieldFilter_Operator_GREATER_THAN_OR_EQUAL;
  static constexpr Operator EQUAL =
    StructuredQuery_FieldFilter_Operator_EQUAL;
  static constexpr Operator NOT_EQUAL =
    StructuredQuery_FieldFilter_Operator_NOT_EQUAL;
  static constexpr Operator ARRAY_CONTAINS =
    StructuredQuery_FieldFilter_Operator_ARRAY_CONTAINS;
  static constexpr Operator IN_ =
    StructuredQuery_FieldFilter_Operator_IN;
  static constexpr Operator ARRAY_CONTAINS_ANY =
    StructuredQuery_FieldFilter_Operator_ARRAY_CONTAINS_ANY;
  static constexpr Operator NOT_IN =
    StructuredQuery_FieldFilter_Operator_NOT_IN;
  static inline bool Operator_IsValid(int value) {
    return StructuredQuery_FieldFilter_Operator_IsValid(value);
  }
  static constexpr Operator Operator_MIN =
    StructuredQuery_FieldFilter_Operator_Operator_MIN;
  static constexpr Operator Operator_MAX =
    StructuredQuery_FieldFilter_Operator_Operator_MAX;
  static constexpr int Operator_ARRAYSIZE =
    StructuredQuery_FieldFilter_Operator_Operator_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Operator_descriptor() {
    return StructuredQuery_FieldFilter_Operator_descriptor();
  }
  template<typename T>
  static inline const std::string& Operator_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Operator>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Operator_Name.");
    return StructuredQuery_FieldFilter_Operator_Name(enum_t_value);
  }
  static inline bool Operator_Parse(const std::string& name,
      Operator* value) {
    return StructuredQuery_FieldFilter_Operator_Parse(name, value);
  }

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

  enum : int {
    kFieldFieldNumber = 1,
    kValueFieldNumber = 3,
    kOpFieldNumber = 2,
  };
  // .google.firestore.v1.StructuredQuery.FieldReference field = 1;
  bool has_field() const;
  private:
  bool _internal_has_field() const;
  public:
  void clear_field();
  const ::google::firestore::v1::StructuredQuery_FieldReference& field() const;
  ::google::firestore::v1::StructuredQuery_FieldReference* release_field();
  ::google::firestore::v1::StructuredQuery_FieldReference* mutable_field();
  void set_allocated_field(::google::firestore::v1::StructuredQuery_FieldReference* field);
  private:
  const ::google::firestore::v1::StructuredQuery_FieldReference& _internal_field() const;
  ::google::firestore::v1::StructuredQuery_FieldReference* _internal_mutable_field();
  public:

  // .google.firestore.v1.Value value = 3;
  bool has_value() const;
  private:
  bool _internal_has_value() const;
  public:
  void clear_value();
  const ::google::firestore::v1::Value& value() const;
  ::google::firestore::v1::Value* release_value();
  ::google::firestore::v1::Value* mutable_value();
  void set_allocated_value(::google::firestore::v1::Value* value);
  private:
  const ::google::firestore::v1::Value& _internal_value() const;
  ::google::firestore::v1::Value* _internal_mutable_value();
  public:

  // .google.firestore.v1.StructuredQuery.FieldFilter.Operator op = 2;
  void clear_op();
  ::google::firestore::v1::StructuredQuery_FieldFilter_Operator op() const;
  void set_op(::google::firestore::v1::StructuredQuery_FieldFilter_Operator value);
  private:
  ::google::firestore::v1::StructuredQuery_FieldFilter_Operator _internal_op() const;
  void _internal_set_op(::google::firestore::v1::StructuredQuery_FieldFilter_Operator value);
  public:

  // @@protoc_insertion_point(class_scope:google.firestore.v1.StructuredQuery.FieldFilter)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::firestore::v1::StructuredQuery_FieldReference* field_;
  ::google::firestore::v1::Value* value_;
  int op_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fquery_2eproto;
};
// -------------------------------------------------------------------

class StructuredQuery_UnaryFilter :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.StructuredQuery.UnaryFilter) */ {
 public:
  StructuredQuery_UnaryFilter();
  virtual ~StructuredQuery_UnaryFilter();

  StructuredQuery_UnaryFilter(const StructuredQuery_UnaryFilter& from);
  StructuredQuery_UnaryFilter(StructuredQuery_UnaryFilter&& from) noexcept
    : StructuredQuery_UnaryFilter() {
    *this = ::std::move(from);
  }

  inline StructuredQuery_UnaryFilter& operator=(const StructuredQuery_UnaryFilter& from) {
    CopyFrom(from);
    return *this;
  }
  inline StructuredQuery_UnaryFilter& operator=(StructuredQuery_UnaryFilter&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const StructuredQuery_UnaryFilter& default_instance();

  enum OperandTypeCase {
    kField = 2,
    OPERAND_TYPE_NOT_SET = 0,
  };

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const StructuredQuery_UnaryFilter* internal_default_instance() {
    return reinterpret_cast<const StructuredQuery_UnaryFilter*>(
               &_StructuredQuery_UnaryFilter_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(StructuredQuery_UnaryFilter& a, StructuredQuery_UnaryFilter& b) {
    a.Swap(&b);
  }
  inline void Swap(StructuredQuery_UnaryFilter* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline StructuredQuery_UnaryFilter* New() const final {
    return CreateMaybeMessage<StructuredQuery_UnaryFilter>(nullptr);
  }

  StructuredQuery_UnaryFilter* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<StructuredQuery_UnaryFilter>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const StructuredQuery_UnaryFilter& from);
  void MergeFrom(const StructuredQuery_UnaryFilter& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StructuredQuery_UnaryFilter* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "google.firestore.v1.StructuredQuery.UnaryFilter";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto);
    return ::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

  typedef StructuredQuery_UnaryFilter_Operator Operator;
  static constexpr Operator OPERATOR_UNSPECIFIED =
    StructuredQuery_UnaryFilter_Operator_OPERATOR_UNSPECIFIED;
  static constexpr Operator IS_NAN =
    StructuredQuery_UnaryFilter_Operator_IS_NAN;
  static constexpr Operator IS_NULL =
    StructuredQuery_UnaryFilter_Operator_IS_NULL;
  static constexpr Operator IS_NOT_NAN =
    StructuredQuery_UnaryFilter_Operator_IS_NOT_NAN;
  static constexpr Operator IS_NOT_NULL =
    StructuredQuery_UnaryFilter_Operator_IS_NOT_NULL;
  static inline bool Operator_IsValid(int value) {
    return StructuredQuery_UnaryFilter_Operator_IsValid(value);
  }
  static constexpr Operator Operator_MIN =
    StructuredQuery_UnaryFilter_Operator_Operator_MIN;
  static constexpr Operator Operator_MAX =
    StructuredQuery_UnaryFilter_Operator_Operator_MAX;
  static constexpr int Operator_ARRAYSIZE =
    StructuredQuery_UnaryFilter_Operator_Operator_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Operator_descriptor() {
    return StructuredQuery_UnaryFilter_Operator_descriptor();
  }
  template<typename T>
  static inline const std::string& Operator_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Operator>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Operator_Name.");
    return StructuredQuery_UnaryFilter_Operator_Name(enum_t_value);
  }
  static inline bool Operator_Parse(const std::string& name,
      Operator* value) {
    return StructuredQuery_UnaryFilter_Operator_Parse(name, value);
  }

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

  enum : int {
    kOpFieldNumber = 1,
    kFieldFieldNumber = 2,
  };
  // .google.firestore.v1.StructuredQuery.UnaryFilter.Operator op = 1;
  void clear_op();
  ::google::firestore::v1::StructuredQuery_UnaryFilter_Operator op() const;
  void set_op(::google::firestore::v1::StructuredQuery_UnaryFilter_Operator value);
  private:
  ::google::firestore::v1::StructuredQuery_UnaryFilter_Operator _internal_op() const;
  void _internal_set_op(::google::firestore::v1::StructuredQuery_UnaryFilter_Operator value);
  public:

  // .google.firestore.v1.StructuredQuery.FieldReference field = 2;
  bool has_field() const;
  private:
  bool _internal_has_field() const;
  public:
  void clear_field();
  const ::google::firestore::v1::StructuredQuery_FieldReference& field() const;
  ::google::firestore::v1::StructuredQuery_FieldReference* release_field();
  ::google::firestore::v1::StructuredQuery_FieldReference* mutable_field();
  void set_allocated_field(::google::firestore::v1::StructuredQuery_FieldReference* field);
  private:
  const ::google::firestore::v1::StructuredQuery_FieldReference& _internal_field() const;
  ::google::firestore::v1::StructuredQuery_FieldReference* _internal_mutable_field();
  public:

  void clear_operand_type();
  OperandTypeCase operand_type_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.StructuredQuery.UnaryFilter)
 private:
  class _Internal;
  void set_has_field();

  inline bool has_operand_type() const;
  inline void clear_has_operand_type();

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  int op_;
  union OperandTypeUnion {
    OperandTypeUnion() {}
    ::google::firestore::v1::StructuredQuery_FieldReference* field_;
  } operand_type_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::uint32 _oneof_case_[1];

  friend struct ::TableStruct_google_2ffirestore_2fv1_2fquery_2eproto;
};
// -------------------------------------------------------------------

class StructuredQuery_Order :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.StructuredQuery.Order) */ {
 public:
  StructuredQuery_Order();
  virtual ~StructuredQuery_Order();

  StructuredQuery_Order(const StructuredQuery_Order& from);
  StructuredQuery_Order(StructuredQuery_Order&& from) noexcept
    : StructuredQuery_Order() {
    *this = ::std::move(from);
  }

  inline StructuredQuery_Order& operator=(const StructuredQuery_Order& from) {
    CopyFrom(from);
    return *this;
  }
  inline StructuredQuery_Order& operator=(StructuredQuery_Order&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const StructuredQuery_Order& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const StructuredQuery_Order* internal_default_instance() {
    return reinterpret_cast<const StructuredQuery_Order*>(
               &_StructuredQuery_Order_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(StructuredQuery_Order& a, StructuredQuery_Order& b) {
    a.Swap(&b);
  }
  inline void Swap(StructuredQuery_Order* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline StructuredQuery_Order* New() const final {
    return CreateMaybeMessage<StructuredQuery_Order>(nullptr);
  }

  StructuredQuery_Order* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<StructuredQuery_Order>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const StructuredQuery_Order& from);
  void MergeFrom(const StructuredQuery_Order& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StructuredQuery_Order* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "google.firestore.v1.StructuredQuery.Order";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto);
    return ::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kFieldFieldNumber = 1,
    kDirectionFieldNumber = 2,
  };
  // .google.firestore.v1.StructuredQuery.FieldReference field = 1;
  bool has_field() const;
  private:
  bool _internal_has_field() const;
  public:
  void clear_field();
  const ::google::firestore::v1::StructuredQuery_FieldReference& field() const;
  ::google::firestore::v1::StructuredQuery_FieldReference* release_field();
  ::google::firestore::v1::StructuredQuery_FieldReference* mutable_field();
  void set_allocated_field(::google::firestore::v1::StructuredQuery_FieldReference* field);
  private:
  const ::google::firestore::v1::StructuredQuery_FieldReference& _internal_field() const;
  ::google::firestore::v1::StructuredQuery_FieldReference* _internal_mutable_field();
  public:

  // .google.firestore.v1.StructuredQuery.Direction direction = 2;
  void clear_direction();
  ::google::firestore::v1::StructuredQuery_Direction direction() const;
  void set_direction(::google::firestore::v1::StructuredQuery_Direction value);
  private:
  ::google::firestore::v1::StructuredQuery_Direction _internal_direction() const;
  void _internal_set_direction(::google::firestore::v1::StructuredQuery_Direction value);
  public:

  // @@protoc_insertion_point(class_scope:google.firestore.v1.StructuredQuery.Order)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::firestore::v1::StructuredQuery_FieldReference* field_;
  int direction_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fquery_2eproto;
};
// -------------------------------------------------------------------

class StructuredQuery_FieldReference :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.StructuredQuery.FieldReference) */ {
 public:
  StructuredQuery_FieldReference();
  virtual ~StructuredQuery_FieldReference();

  StructuredQuery_FieldReference(const StructuredQuery_FieldReference& from);
  StructuredQuery_FieldReference(StructuredQuery_FieldReference&& from) noexcept
    : StructuredQuery_FieldReference() {
    *this = ::std::move(from);
  }

  inline StructuredQuery_FieldReference& operator=(const StructuredQuery_FieldReference& from) {
    CopyFrom(from);
    return *this;
  }
  inline StructuredQuery_FieldReference& operator=(StructuredQuery_FieldReference&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const StructuredQuery_FieldReference& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const StructuredQuery_FieldReference* internal_default_instance() {
    return reinterpret_cast<const StructuredQuery_FieldReference*>(
               &_StructuredQuery_FieldReference_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

  friend void swap(StructuredQuery_FieldReference& a, StructuredQuery_FieldReference& b) {
    a.Swap(&b);
  }
  inline void Swap(StructuredQuery_FieldReference* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline StructuredQuery_FieldReference* New() const final {
    return CreateMaybeMessage<StructuredQuery_FieldReference>(nullptr);
  }

  StructuredQuery_FieldReference* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<StructuredQuery_FieldReference>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const StructuredQuery_FieldReference& from);
  void MergeFrom(const StructuredQuery_FieldReference& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StructuredQuery_FieldReference* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "google.firestore.v1.StructuredQuery.FieldReference";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto);
    return ::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kFieldPathFieldNumber = 2,
  };
  // string field_path = 2;
  void clear_field_path();
  const std::string& field_path() const;
  void set_field_path(const std::string& value);
  void set_field_path(std::string&& value);
  void set_field_path(const char* value);
  void set_field_path(const char* value, size_t size);
  std::string* mutable_field_path();
  std::string* release_field_path();
  void set_allocated_field_path(std::string* field_path);
  private:
  const std::string& _internal_field_path() const;
  void _internal_set_field_path(const std::string& value);
  std::string* _internal_mutable_field_path();
  public:

  // @@protoc_insertion_point(class_scope:google.firestore.v1.StructuredQuery.FieldReference)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr field_path_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fquery_2eproto;
};
// -------------------------------------------------------------------

class StructuredQuery_Projection :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.StructuredQuery.Projection) */ {
 public:
  StructuredQuery_Projection();
  virtual ~StructuredQuery_Projection();

  StructuredQuery_Projection(const StructuredQuery_Projection& from);
  StructuredQuery_Projection(StructuredQuery_Projection&& from) noexcept
    : StructuredQuery_Projection() {
    *this = ::std::move(from);
  }

  inline StructuredQuery_Projection& operator=(const StructuredQuery_Projection& from) {
    CopyFrom(from);
    return *this;
  }
  inline StructuredQuery_Projection& operator=(StructuredQuery_Projection&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const StructuredQuery_Projection& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const StructuredQuery_Projection* internal_default_instance() {
    return reinterpret_cast<const StructuredQuery_Projection*>(
               &_StructuredQuery_Projection_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

  friend void swap(StructuredQuery_Projection& a, StructuredQuery_Projection& b) {
    a.Swap(&b);
  }
  inline void Swap(StructuredQuery_Projection* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline StructuredQuery_Projection* New() const final {
    return CreateMaybeMessage<StructuredQuery_Projection>(nullptr);
  }

  StructuredQuery_Projection* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<StructuredQuery_Projection>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const StructuredQuery_Projection& from);
  void MergeFrom(const StructuredQuery_Projection& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StructuredQuery_Projection* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "google.firestore.v1.StructuredQuery.Projection";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto);
    return ::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kFieldsFieldNumber = 2,
  };
  // repeated .google.firestore.v1.StructuredQuery.FieldReference fields = 2;
  int fields_size() const;
  private:
  int _internal_fields_size() const;
  public:
  void clear_fields();
  ::google::firestore::v1::StructuredQuery_FieldReference* mutable_fields(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_FieldReference >*
      mutable_fields();
  private:
  const ::google::firestore::v1::StructuredQuery_FieldReference& _internal_fields(int index) const;
  ::google::firestore::v1::StructuredQuery_FieldReference* _internal_add_fields();
  public:
  const ::google::firestore::v1::StructuredQuery_FieldReference& fields(int index) const;
  ::google::firestore::v1::StructuredQuery_FieldReference* add_fields();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_FieldReference >&
      fields() const;

  // @@protoc_insertion_point(class_scope:google.firestore.v1.StructuredQuery.Projection)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_FieldReference > fields_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fquery_2eproto;
};
// -------------------------------------------------------------------

class StructuredQuery :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.StructuredQuery) */ {
 public:
  StructuredQuery();
  virtual ~StructuredQuery();

  StructuredQuery(const StructuredQuery& from);
  StructuredQuery(StructuredQuery&& from) noexcept
    : StructuredQuery() {
    *this = ::std::move(from);
  }

  inline StructuredQuery& operator=(const StructuredQuery& from) {
    CopyFrom(from);
    return *this;
  }
  inline StructuredQuery& operator=(StructuredQuery&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const StructuredQuery& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const StructuredQuery* internal_default_instance() {
    return reinterpret_cast<const StructuredQuery*>(
               &_StructuredQuery_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    8;

  friend void swap(StructuredQuery& a, StructuredQuery& b) {
    a.Swap(&b);
  }
  inline void Swap(StructuredQuery* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline StructuredQuery* New() const final {
    return CreateMaybeMessage<StructuredQuery>(nullptr);
  }

  StructuredQuery* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<StructuredQuery>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const StructuredQuery& from);
  void MergeFrom(const StructuredQuery& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StructuredQuery* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "google.firestore.v1.StructuredQuery";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto);
    return ::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

  typedef StructuredQuery_CollectionSelector CollectionSelector;
  typedef StructuredQuery_Filter Filter;
  typedef StructuredQuery_CompositeFilter CompositeFilter;
  typedef StructuredQuery_FieldFilter FieldFilter;
  typedef StructuredQuery_UnaryFilter UnaryFilter;
  typedef StructuredQuery_Order Order;
  typedef StructuredQuery_FieldReference FieldReference;
  typedef StructuredQuery_Projection Projection;

  typedef StructuredQuery_Direction Direction;
  static constexpr Direction DIRECTION_UNSPECIFIED =
    StructuredQuery_Direction_DIRECTION_UNSPECIFIED;
  static constexpr Direction ASCENDING =
    StructuredQuery_Direction_ASCENDING;
  static constexpr Direction DESCENDING =
    StructuredQuery_Direction_DESCENDING;
  static inline bool Direction_IsValid(int value) {
    return StructuredQuery_Direction_IsValid(value);
  }
  static constexpr Direction Direction_MIN =
    StructuredQuery_Direction_Direction_MIN;
  static constexpr Direction Direction_MAX =
    StructuredQuery_Direction_Direction_MAX;
  static constexpr int Direction_ARRAYSIZE =
    StructuredQuery_Direction_Direction_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Direction_descriptor() {
    return StructuredQuery_Direction_descriptor();
  }
  template<typename T>
  static inline const std::string& Direction_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Direction>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Direction_Name.");
    return StructuredQuery_Direction_Name(enum_t_value);
  }
  static inline bool Direction_Parse(const std::string& name,
      Direction* value) {
    return StructuredQuery_Direction_Parse(name, value);
  }

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

  enum : int {
    kFromFieldNumber = 2,
    kOrderByFieldNumber = 4,
    kSelectFieldNumber = 1,
    kWhereFieldNumber = 3,
    kLimitFieldNumber = 5,
    kStartAtFieldNumber = 7,
    kEndAtFieldNumber = 8,
    kOffsetFieldNumber = 6,
  };
  // repeated .google.firestore.v1.StructuredQuery.CollectionSelector from = 2;
  int from_size() const;
  private:
  int _internal_from_size() const;
  public:
  void clear_from();
  ::google::firestore::v1::StructuredQuery_CollectionSelector* mutable_from(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_CollectionSelector >*
      mutable_from();
  private:
  const ::google::firestore::v1::StructuredQuery_CollectionSelector& _internal_from(int index) const;
  ::google::firestore::v1::StructuredQuery_CollectionSelector* _internal_add_from();
  public:
  const ::google::firestore::v1::StructuredQuery_CollectionSelector& from(int index) const;
  ::google::firestore::v1::StructuredQuery_CollectionSelector* add_from();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_CollectionSelector >&
      from() const;

  // repeated .google.firestore.v1.StructuredQuery.Order order_by = 4;
  int order_by_size() const;
  private:
  int _internal_order_by_size() const;
  public:
  void clear_order_by();
  ::google::firestore::v1::StructuredQuery_Order* mutable_order_by(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_Order >*
      mutable_order_by();
  private:
  const ::google::firestore::v1::StructuredQuery_Order& _internal_order_by(int index) const;
  ::google::firestore::v1::StructuredQuery_Order* _internal_add_order_by();
  public:
  const ::google::firestore::v1::StructuredQuery_Order& order_by(int index) const;
  ::google::firestore::v1::StructuredQuery_Order* add_order_by();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_Order >&
      order_by() const;

  // .google.firestore.v1.StructuredQuery.Projection select = 1;
  bool has_select() const;
  private:
  bool _internal_has_select() const;
  public:
  void clear_select();
  const ::google::firestore::v1::StructuredQuery_Projection& select() const;
  ::google::firestore::v1::StructuredQuery_Projection* release_select();
  ::google::firestore::v1::StructuredQuery_Projection* mutable_select();
  void set_allocated_select(::google::firestore::v1::StructuredQuery_Projection* select);
  private:
  const ::google::firestore::v1::StructuredQuery_Projection& _internal_select() const;
  ::google::firestore::v1::StructuredQuery_Projection* _internal_mutable_select();
  public:

  // .google.firestore.v1.StructuredQuery.Filter where = 3;
  bool has_where() const;
  private:
  bool _internal_has_where() const;
  public:
  void clear_where();
  const ::google::firestore::v1::StructuredQuery_Filter& where() const;
  ::google::firestore::v1::StructuredQuery_Filter* release_where();
  ::google::firestore::v1::StructuredQuery_Filter* mutable_where();
  void set_allocated_where(::google::firestore::v1::StructuredQuery_Filter* where);
  private:
  const ::google::firestore::v1::StructuredQuery_Filter& _internal_where() const;
  ::google::firestore::v1::StructuredQuery_Filter* _internal_mutable_where();
  public:

  // .google.protobuf.Int32Value limit = 5;
  bool has_limit() const;
  private:
  bool _internal_has_limit() const;
  public:
  void clear_limit();
  const PROTOBUF_NAMESPACE_ID::Int32Value& limit() const;
  PROTOBUF_NAMESPACE_ID::Int32Value* release_limit();
  PROTOBUF_NAMESPACE_ID::Int32Value* mutable_limit();
  void set_allocated_limit(PROTOBUF_NAMESPACE_ID::Int32Value* limit);
  private:
  const PROTOBUF_NAMESPACE_ID::Int32Value& _internal_limit() const;
  PROTOBUF_NAMESPACE_ID::Int32Value* _internal_mutable_limit();
  public:

  // .google.firestore.v1.Cursor start_at = 7;
  bool has_start_at() const;
  private:
  bool _internal_has_start_at() const;
  public:
  void clear_start_at();
  const ::google::firestore::v1::Cursor& start_at() const;
  ::google::firestore::v1::Cursor* release_start_at();
  ::google::firestore::v1::Cursor* mutable_start_at();
  void set_allocated_start_at(::google::firestore::v1::Cursor* start_at);
  private:
  const ::google::firestore::v1::Cursor& _internal_start_at() const;
  ::google::firestore::v1::Cursor* _internal_mutable_start_at();
  public:

  // .google.firestore.v1.Cursor end_at = 8;
  bool has_end_at() const;
  private:
  bool _internal_has_end_at() const;
  public:
  void clear_end_at();
  const ::google::firestore::v1::Cursor& end_at() const;
  ::google::firestore::v1::Cursor* release_end_at();
  ::google::firestore::v1::Cursor* mutable_end_at();
  void set_allocated_end_at(::google::firestore::v1::Cursor* end_at);
  private:
  const ::google::firestore::v1::Cursor& _internal_end_at() const;
  ::google::firestore::v1::Cursor* _internal_mutable_end_at();
  public:

  // int32 offset = 6;
  void clear_offset();
  ::PROTOBUF_NAMESPACE_ID::int32 offset() const;
  void set_offset(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_offset() const;
  void _internal_set_offset(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

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

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_CollectionSelector > from_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_Order > order_by_;
  ::google::firestore::v1::StructuredQuery_Projection* select_;
  ::google::firestore::v1::StructuredQuery_Filter* where_;
  PROTOBUF_NAMESPACE_ID::Int32Value* limit_;
  ::google::firestore::v1::Cursor* start_at_;
  ::google::firestore::v1::Cursor* end_at_;
  ::PROTOBUF_NAMESPACE_ID::int32 offset_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fquery_2eproto;
};
// -------------------------------------------------------------------

class StructuredAggregationQuery_Aggregation_Count :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.StructuredAggregationQuery.Aggregation.Count) */ {
 public:
  StructuredAggregationQuery_Aggregation_Count();
  virtual ~StructuredAggregationQuery_Aggregation_Count();

  StructuredAggregationQuery_Aggregation_Count(const StructuredAggregationQuery_Aggregation_Count& from);
  StructuredAggregationQuery_Aggregation_Count(StructuredAggregationQuery_Aggregation_Count&& from) noexcept
    : StructuredAggregationQuery_Aggregation_Count() {
    *this = ::std::move(from);
  }

  inline StructuredAggregationQuery_Aggregation_Count& operator=(const StructuredAggregationQuery_Aggregation_Count& from) {
    CopyFrom(from);
    return *this;
  }
  inline StructuredAggregationQuery_Aggregation_Count& operator=(StructuredAggregationQuery_Aggregation_Count&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const StructuredAggregationQuery_Aggregation_Count& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const StructuredAggregationQuery_Aggregation_Count* internal_default_instance() {
    return reinterpret_cast<const StructuredAggregationQuery_Aggregation_Count*>(
               &_StructuredAggregationQuery_Aggregation_Count_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    9;

  friend void swap(StructuredAggregationQuery_Aggregation_Count& a, StructuredAggregationQuery_Aggregation_Count& b) {
    a.Swap(&b);
  }
  inline void Swap(StructuredAggregationQuery_Aggregation_Count* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline StructuredAggregationQuery_Aggregation_Count* New() const final {
    return CreateMaybeMessage<StructuredAggregationQuery_Aggregation_Count>(nullptr);
  }

  StructuredAggregationQuery_Aggregation_Count* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<StructuredAggregationQuery_Aggregation_Count>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const StructuredAggregationQuery_Aggregation_Count& from);
  void MergeFrom(const StructuredAggregationQuery_Aggregation_Count& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StructuredAggregationQuery_Aggregation_Count* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "google.firestore.v1.StructuredAggregationQuery.Aggregation.Count";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto);
    return ::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kUpToFieldNumber = 1,
  };
  // .google.protobuf.Int64Value up_to = 1;
  bool has_up_to() const;
  private:
  bool _internal_has_up_to() const;
  public:
  void clear_up_to();
  const PROTOBUF_NAMESPACE_ID::Int64Value& up_to() const;
  PROTOBUF_NAMESPACE_ID::Int64Value* release_up_to();
  PROTOBUF_NAMESPACE_ID::Int64Value* mutable_up_to();
  void set_allocated_up_to(PROTOBUF_NAMESPACE_ID::Int64Value* up_to);
  private:
  const PROTOBUF_NAMESPACE_ID::Int64Value& _internal_up_to() const;
  PROTOBUF_NAMESPACE_ID::Int64Value* _internal_mutable_up_to();
  public:

  // @@protoc_insertion_point(class_scope:google.firestore.v1.StructuredAggregationQuery.Aggregation.Count)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  PROTOBUF_NAMESPACE_ID::Int64Value* up_to_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fquery_2eproto;
};
// -------------------------------------------------------------------

class StructuredAggregationQuery_Aggregation :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.StructuredAggregationQuery.Aggregation) */ {
 public:
  StructuredAggregationQuery_Aggregation();
  virtual ~StructuredAggregationQuery_Aggregation();

  StructuredAggregationQuery_Aggregation(const StructuredAggregationQuery_Aggregation& from);
  StructuredAggregationQuery_Aggregation(StructuredAggregationQuery_Aggregation&& from) noexcept
    : StructuredAggregationQuery_Aggregation() {
    *this = ::std::move(from);
  }

  inline StructuredAggregationQuery_Aggregation& operator=(const StructuredAggregationQuery_Aggregation& from) {
    CopyFrom(from);
    return *this;
  }
  inline StructuredAggregationQuery_Aggregation& operator=(StructuredAggregationQuery_Aggregation&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const StructuredAggregationQuery_Aggregation& default_instance();

  enum OperatorCase {
    kCount = 1,
    OPERATOR_NOT_SET = 0,
  };

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const StructuredAggregationQuery_Aggregation* internal_default_instance() {
    return reinterpret_cast<const StructuredAggregationQuery_Aggregation*>(
               &_StructuredAggregationQuery_Aggregation_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    10;

  friend void swap(StructuredAggregationQuery_Aggregation& a, StructuredAggregationQuery_Aggregation& b) {
    a.Swap(&b);
  }
  inline void Swap(StructuredAggregationQuery_Aggregation* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline StructuredAggregationQuery_Aggregation* New() const final {
    return CreateMaybeMessage<StructuredAggregationQuery_Aggregation>(nullptr);
  }

  StructuredAggregationQuery_Aggregation* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<StructuredAggregationQuery_Aggregation>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const StructuredAggregationQuery_Aggregation& from);
  void MergeFrom(const StructuredAggregationQuery_Aggregation& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StructuredAggregationQuery_Aggregation* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "google.firestore.v1.StructuredAggregationQuery.Aggregation";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto);
    return ::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

  typedef StructuredAggregationQuery_Aggregation_Count Count;

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

  enum : int {
    kAliasFieldNumber = 7,
    kCountFieldNumber = 1,
  };
  // string alias = 7;
  void clear_alias();
  const std::string& alias() const;
  void set_alias(const std::string& value);
  void set_alias(std::string&& value);
  void set_alias(const char* value);
  void set_alias(const char* value, size_t size);
  std::string* mutable_alias();
  std::string* release_alias();
  void set_allocated_alias(std::string* alias);
  private:
  const std::string& _internal_alias() const;
  void _internal_set_alias(const std::string& value);
  std::string* _internal_mutable_alias();
  public:

  // .google.firestore.v1.StructuredAggregationQuery.Aggregation.Count count = 1;
  bool has_count() const;
  private:
  bool _internal_has_count() const;
  public:
  void clear_count();
  const ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count& count() const;
  ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count* release_count();
  ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count* mutable_count();
  void set_allocated_count(::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count* count);
  private:
  const ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count& _internal_count() const;
  ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count* _internal_mutable_count();
  public:

  void clear_operator();
  OperatorCase operator_case() const;
  // @@protoc_insertion_point(class_scope:google.firestore.v1.StructuredAggregationQuery.Aggregation)
 private:
  class _Internal;
  void set_has_count();

  inline bool has_operator() const;
  inline void clear_has_operator();

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr alias_;
  union OperatorUnion {
    OperatorUnion() {}
    ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count* count_;
  } operator_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::uint32 _oneof_case_[1];

  friend struct ::TableStruct_google_2ffirestore_2fv1_2fquery_2eproto;
};
// -------------------------------------------------------------------

class StructuredAggregationQuery :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.StructuredAggregationQuery) */ {
 public:
  StructuredAggregationQuery();
  virtual ~StructuredAggregationQuery();

  StructuredAggregationQuery(const StructuredAggregationQuery& from);
  StructuredAggregationQuery(StructuredAggregationQuery&& from) noexcept
    : StructuredAggregationQuery() {
    *this = ::std::move(from);
  }

  inline StructuredAggregationQuery& operator=(const StructuredAggregationQuery& from) {
    CopyFrom(from);
    return *this;
  }
  inline StructuredAggregationQuery& operator=(StructuredAggregationQuery&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const StructuredAggregationQuery& default_instance();

  enum QueryTypeCase {
    kStructuredQuery = 1,
    QUERY_TYPE_NOT_SET = 0,
  };

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const StructuredAggregationQuery* internal_default_instance() {
    return reinterpret_cast<const StructuredAggregationQuery*>(
               &_StructuredAggregationQuery_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    11;

  friend void swap(StructuredAggregationQuery& a, StructuredAggregationQuery& b) {
    a.Swap(&b);
  }
  inline void Swap(StructuredAggregationQuery* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline StructuredAggregationQuery* New() const final {
    return CreateMaybeMessage<StructuredAggregationQuery>(nullptr);
  }

  StructuredAggregationQuery* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<StructuredAggregationQuery>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const StructuredAggregationQuery& from);
  void MergeFrom(const StructuredAggregationQuery& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StructuredAggregationQuery* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "google.firestore.v1.StructuredAggregationQuery";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto);
    return ::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

  typedef StructuredAggregationQuery_Aggregation Aggregation;

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

  enum : int {
    kAggregationsFieldNumber = 3,
    kStructuredQueryFieldNumber = 1,
  };
  // repeated .google.firestore.v1.StructuredAggregationQuery.Aggregation aggregations = 3;
  int aggregations_size() const;
  private:
  int _internal_aggregations_size() const;
  public:
  void clear_aggregations();
  ::google::firestore::v1::StructuredAggregationQuery_Aggregation* mutable_aggregations(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredAggregationQuery_Aggregation >*
      mutable_aggregations();
  private:
  const ::google::firestore::v1::StructuredAggregationQuery_Aggregation& _internal_aggregations(int index) const;
  ::google::firestore::v1::StructuredAggregationQuery_Aggregation* _internal_add_aggregations();
  public:
  const ::google::firestore::v1::StructuredAggregationQuery_Aggregation& aggregations(int index) const;
  ::google::firestore::v1::StructuredAggregationQuery_Aggregation* add_aggregations();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredAggregationQuery_Aggregation >&
      aggregations() const;

  // .google.firestore.v1.StructuredQuery structured_query = 1;
  bool has_structured_query() const;
  private:
  bool _internal_has_structured_query() const;
  public:
  void clear_structured_query();
  const ::google::firestore::v1::StructuredQuery& structured_query() const;
  ::google::firestore::v1::StructuredQuery* release_structured_query();
  ::google::firestore::v1::StructuredQuery* mutable_structured_query();
  void set_allocated_structured_query(::google::firestore::v1::StructuredQuery* structured_query);
  private:
  const ::google::firestore::v1::StructuredQuery& _internal_structured_query() const;
  ::google::firestore::v1::StructuredQuery* _internal_mutable_structured_query();
  public:

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

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

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredAggregationQuery_Aggregation > aggregations_;
  union QueryTypeUnion {
    QueryTypeUnion() {}
    ::google::firestore::v1::StructuredQuery* structured_query_;
  } query_type_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::uint32 _oneof_case_[1];

  friend struct ::TableStruct_google_2ffirestore_2fv1_2fquery_2eproto;
};
// -------------------------------------------------------------------

class Cursor :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:google.firestore.v1.Cursor) */ {
 public:
  Cursor();
  virtual ~Cursor();

  Cursor(const Cursor& from);
  Cursor(Cursor&& from) noexcept
    : Cursor() {
    *this = ::std::move(from);
  }

  inline Cursor& operator=(const Cursor& from) {
    CopyFrom(from);
    return *this;
  }
  inline Cursor& operator=(Cursor&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const Cursor& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const Cursor* internal_default_instance() {
    return reinterpret_cast<const Cursor*>(
               &_Cursor_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    12;

  friend void swap(Cursor& a, Cursor& b) {
    a.Swap(&b);
  }
  inline void Swap(Cursor* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline Cursor* New() const final {
    return CreateMaybeMessage<Cursor>(nullptr);
  }

  Cursor* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<Cursor>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const Cursor& from);
  void MergeFrom(const Cursor& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(Cursor* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "google.firestore.v1.Cursor";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto);
    return ::descriptor_table_google_2ffirestore_2fv1_2fquery_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kValuesFieldNumber = 1,
    kBeforeFieldNumber = 2,
  };
  // repeated .google.firestore.v1.Value values = 1;
  int values_size() const;
  private:
  int _internal_values_size() const;
  public:
  void clear_values();
  ::google::firestore::v1::Value* mutable_values(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::Value >*
      mutable_values();
  private:
  const ::google::firestore::v1::Value& _internal_values(int index) const;
  ::google::firestore::v1::Value* _internal_add_values();
  public:
  const ::google::firestore::v1::Value& values(int index) const;
  ::google::firestore::v1::Value* add_values();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::Value >&
      values() const;

  // bool before = 2;
  void clear_before();
  bool before() const;
  void set_before(bool value);
  private:
  bool _internal_before() const;
  void _internal_set_before(bool value);
  public:

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

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::Value > values_;
  bool before_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_google_2ffirestore_2fv1_2fquery_2eproto;
};
// ===================================================================


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

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

// string collection_id = 2;
inline void StructuredQuery_CollectionSelector::clear_collection_id() {
  collection_id_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}
inline const std::string& StructuredQuery_CollectionSelector::collection_id() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.CollectionSelector.collection_id)
  return _internal_collection_id();
}
inline void StructuredQuery_CollectionSelector::set_collection_id(const std::string& value) {
  _internal_set_collection_id(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.StructuredQuery.CollectionSelector.collection_id)
}
inline std::string* StructuredQuery_CollectionSelector::mutable_collection_id() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.CollectionSelector.collection_id)
  return _internal_mutable_collection_id();
}
inline const std::string& StructuredQuery_CollectionSelector::_internal_collection_id() const {
  return collection_id_.GetNoArena();
}
inline void StructuredQuery_CollectionSelector::_internal_set_collection_id(const std::string& value) {
  
  collection_id_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
}
inline void StructuredQuery_CollectionSelector::set_collection_id(std::string&& value) {
  
  collection_id_.SetNoArena(
    &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:google.firestore.v1.StructuredQuery.CollectionSelector.collection_id)
}
inline void StructuredQuery_CollectionSelector::set_collection_id(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  collection_id_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:google.firestore.v1.StructuredQuery.CollectionSelector.collection_id)
}
inline void StructuredQuery_CollectionSelector::set_collection_id(const char* value, size_t size) {
  
  collection_id_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:google.firestore.v1.StructuredQuery.CollectionSelector.collection_id)
}
inline std::string* StructuredQuery_CollectionSelector::_internal_mutable_collection_id() {
  
  return collection_id_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}
inline std::string* StructuredQuery_CollectionSelector::release_collection_id() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.CollectionSelector.collection_id)
  
  return collection_id_.ReleaseNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}
inline void StructuredQuery_CollectionSelector::set_allocated_collection_id(std::string* collection_id) {
  if (collection_id != nullptr) {
    
  } else {
    
  }
  collection_id_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), collection_id);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.StructuredQuery.CollectionSelector.collection_id)
}

// bool all_descendants = 3;
inline void StructuredQuery_CollectionSelector::clear_all_descendants() {
  all_descendants_ = false;
}
inline bool StructuredQuery_CollectionSelector::_internal_all_descendants() const {
  return all_descendants_;
}
inline bool StructuredQuery_CollectionSelector::all_descendants() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.CollectionSelector.all_descendants)
  return _internal_all_descendants();
}
inline void StructuredQuery_CollectionSelector::_internal_set_all_descendants(bool value) {
  
  all_descendants_ = value;
}
inline void StructuredQuery_CollectionSelector::set_all_descendants(bool value) {
  _internal_set_all_descendants(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.StructuredQuery.CollectionSelector.all_descendants)
}

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

// StructuredQuery_Filter

// .google.firestore.v1.StructuredQuery.CompositeFilter composite_filter = 1;
inline bool StructuredQuery_Filter::_internal_has_composite_filter() const {
  return filter_type_case() == kCompositeFilter;
}
inline bool StructuredQuery_Filter::has_composite_filter() const {
  return _internal_has_composite_filter();
}
inline void StructuredQuery_Filter::set_has_composite_filter() {
  _oneof_case_[0] = kCompositeFilter;
}
inline void StructuredQuery_Filter::clear_composite_filter() {
  if (_internal_has_composite_filter()) {
    delete filter_type_.composite_filter_;
    clear_has_filter_type();
  }
}
inline ::google::firestore::v1::StructuredQuery_CompositeFilter* StructuredQuery_Filter::release_composite_filter() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.Filter.composite_filter)
  if (_internal_has_composite_filter()) {
    clear_has_filter_type();
      ::google::firestore::v1::StructuredQuery_CompositeFilter* temp = filter_type_.composite_filter_;
    filter_type_.composite_filter_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::StructuredQuery_CompositeFilter& StructuredQuery_Filter::_internal_composite_filter() const {
  return _internal_has_composite_filter()
      ? *filter_type_.composite_filter_
      : *reinterpret_cast< ::google::firestore::v1::StructuredQuery_CompositeFilter*>(&::google::firestore::v1::_StructuredQuery_CompositeFilter_default_instance_);
}
inline const ::google::firestore::v1::StructuredQuery_CompositeFilter& StructuredQuery_Filter::composite_filter() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.Filter.composite_filter)
  return _internal_composite_filter();
}
inline ::google::firestore::v1::StructuredQuery_CompositeFilter* StructuredQuery_Filter::_internal_mutable_composite_filter() {
  if (!_internal_has_composite_filter()) {
    clear_filter_type();
    set_has_composite_filter();
    filter_type_.composite_filter_ = CreateMaybeMessage< ::google::firestore::v1::StructuredQuery_CompositeFilter >(
        GetArenaNoVirtual());
  }
  return filter_type_.composite_filter_;
}
inline ::google::firestore::v1::StructuredQuery_CompositeFilter* StructuredQuery_Filter::mutable_composite_filter() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.Filter.composite_filter)
  return _internal_mutable_composite_filter();
}

// .google.firestore.v1.StructuredQuery.FieldFilter field_filter = 2;
inline bool StructuredQuery_Filter::_internal_has_field_filter() const {
  return filter_type_case() == kFieldFilter;
}
inline bool StructuredQuery_Filter::has_field_filter() const {
  return _internal_has_field_filter();
}
inline void StructuredQuery_Filter::set_has_field_filter() {
  _oneof_case_[0] = kFieldFilter;
}
inline void StructuredQuery_Filter::clear_field_filter() {
  if (_internal_has_field_filter()) {
    delete filter_type_.field_filter_;
    clear_has_filter_type();
  }
}
inline ::google::firestore::v1::StructuredQuery_FieldFilter* StructuredQuery_Filter::release_field_filter() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.Filter.field_filter)
  if (_internal_has_field_filter()) {
    clear_has_filter_type();
      ::google::firestore::v1::StructuredQuery_FieldFilter* temp = filter_type_.field_filter_;
    filter_type_.field_filter_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::StructuredQuery_FieldFilter& StructuredQuery_Filter::_internal_field_filter() const {
  return _internal_has_field_filter()
      ? *filter_type_.field_filter_
      : *reinterpret_cast< ::google::firestore::v1::StructuredQuery_FieldFilter*>(&::google::firestore::v1::_StructuredQuery_FieldFilter_default_instance_);
}
inline const ::google::firestore::v1::StructuredQuery_FieldFilter& StructuredQuery_Filter::field_filter() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.Filter.field_filter)
  return _internal_field_filter();
}
inline ::google::firestore::v1::StructuredQuery_FieldFilter* StructuredQuery_Filter::_internal_mutable_field_filter() {
  if (!_internal_has_field_filter()) {
    clear_filter_type();
    set_has_field_filter();
    filter_type_.field_filter_ = CreateMaybeMessage< ::google::firestore::v1::StructuredQuery_FieldFilter >(
        GetArenaNoVirtual());
  }
  return filter_type_.field_filter_;
}
inline ::google::firestore::v1::StructuredQuery_FieldFilter* StructuredQuery_Filter::mutable_field_filter() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.Filter.field_filter)
  return _internal_mutable_field_filter();
}

// .google.firestore.v1.StructuredQuery.UnaryFilter unary_filter = 3;
inline bool StructuredQuery_Filter::_internal_has_unary_filter() const {
  return filter_type_case() == kUnaryFilter;
}
inline bool StructuredQuery_Filter::has_unary_filter() const {
  return _internal_has_unary_filter();
}
inline void StructuredQuery_Filter::set_has_unary_filter() {
  _oneof_case_[0] = kUnaryFilter;
}
inline void StructuredQuery_Filter::clear_unary_filter() {
  if (_internal_has_unary_filter()) {
    delete filter_type_.unary_filter_;
    clear_has_filter_type();
  }
}
inline ::google::firestore::v1::StructuredQuery_UnaryFilter* StructuredQuery_Filter::release_unary_filter() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.Filter.unary_filter)
  if (_internal_has_unary_filter()) {
    clear_has_filter_type();
      ::google::firestore::v1::StructuredQuery_UnaryFilter* temp = filter_type_.unary_filter_;
    filter_type_.unary_filter_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::StructuredQuery_UnaryFilter& StructuredQuery_Filter::_internal_unary_filter() const {
  return _internal_has_unary_filter()
      ? *filter_type_.unary_filter_
      : *reinterpret_cast< ::google::firestore::v1::StructuredQuery_UnaryFilter*>(&::google::firestore::v1::_StructuredQuery_UnaryFilter_default_instance_);
}
inline const ::google::firestore::v1::StructuredQuery_UnaryFilter& StructuredQuery_Filter::unary_filter() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.Filter.unary_filter)
  return _internal_unary_filter();
}
inline ::google::firestore::v1::StructuredQuery_UnaryFilter* StructuredQuery_Filter::_internal_mutable_unary_filter() {
  if (!_internal_has_unary_filter()) {
    clear_filter_type();
    set_has_unary_filter();
    filter_type_.unary_filter_ = CreateMaybeMessage< ::google::firestore::v1::StructuredQuery_UnaryFilter >(
        GetArenaNoVirtual());
  }
  return filter_type_.unary_filter_;
}
inline ::google::firestore::v1::StructuredQuery_UnaryFilter* StructuredQuery_Filter::mutable_unary_filter() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.Filter.unary_filter)
  return _internal_mutable_unary_filter();
}

inline bool StructuredQuery_Filter::has_filter_type() const {
  return filter_type_case() != FILTER_TYPE_NOT_SET;
}
inline void StructuredQuery_Filter::clear_has_filter_type() {
  _oneof_case_[0] = FILTER_TYPE_NOT_SET;
}
inline StructuredQuery_Filter::FilterTypeCase StructuredQuery_Filter::filter_type_case() const {
  return StructuredQuery_Filter::FilterTypeCase(_oneof_case_[0]);
}
// -------------------------------------------------------------------

// StructuredQuery_CompositeFilter

// .google.firestore.v1.StructuredQuery.CompositeFilter.Operator op = 1;
inline void StructuredQuery_CompositeFilter::clear_op() {
  op_ = 0;
}
inline ::google::firestore::v1::StructuredQuery_CompositeFilter_Operator StructuredQuery_CompositeFilter::_internal_op() const {
  return static_cast< ::google::firestore::v1::StructuredQuery_CompositeFilter_Operator >(op_);
}
inline ::google::firestore::v1::StructuredQuery_CompositeFilter_Operator StructuredQuery_CompositeFilter::op() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.CompositeFilter.op)
  return _internal_op();
}
inline void StructuredQuery_CompositeFilter::_internal_set_op(::google::firestore::v1::StructuredQuery_CompositeFilter_Operator value) {
  
  op_ = value;
}
inline void StructuredQuery_CompositeFilter::set_op(::google::firestore::v1::StructuredQuery_CompositeFilter_Operator value) {
  _internal_set_op(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.StructuredQuery.CompositeFilter.op)
}

// repeated .google.firestore.v1.StructuredQuery.Filter filters = 2;
inline int StructuredQuery_CompositeFilter::_internal_filters_size() const {
  return filters_.size();
}
inline int StructuredQuery_CompositeFilter::filters_size() const {
  return _internal_filters_size();
}
inline void StructuredQuery_CompositeFilter::clear_filters() {
  filters_.Clear();
}
inline ::google::firestore::v1::StructuredQuery_Filter* StructuredQuery_CompositeFilter::mutable_filters(int index) {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.CompositeFilter.filters)
  return filters_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_Filter >*
StructuredQuery_CompositeFilter::mutable_filters() {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.StructuredQuery.CompositeFilter.filters)
  return &filters_;
}
inline const ::google::firestore::v1::StructuredQuery_Filter& StructuredQuery_CompositeFilter::_internal_filters(int index) const {
  return filters_.Get(index);
}
inline const ::google::firestore::v1::StructuredQuery_Filter& StructuredQuery_CompositeFilter::filters(int index) const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.CompositeFilter.filters)
  return _internal_filters(index);
}
inline ::google::firestore::v1::StructuredQuery_Filter* StructuredQuery_CompositeFilter::_internal_add_filters() {
  return filters_.Add();
}
inline ::google::firestore::v1::StructuredQuery_Filter* StructuredQuery_CompositeFilter::add_filters() {
  // @@protoc_insertion_point(field_add:google.firestore.v1.StructuredQuery.CompositeFilter.filters)
  return _internal_add_filters();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_Filter >&
StructuredQuery_CompositeFilter::filters() const {
  // @@protoc_insertion_point(field_list:google.firestore.v1.StructuredQuery.CompositeFilter.filters)
  return filters_;
}

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

// StructuredQuery_FieldFilter

// .google.firestore.v1.StructuredQuery.FieldReference field = 1;
inline bool StructuredQuery_FieldFilter::_internal_has_field() const {
  return this != internal_default_instance() && field_ != nullptr;
}
inline bool StructuredQuery_FieldFilter::has_field() const {
  return _internal_has_field();
}
inline void StructuredQuery_FieldFilter::clear_field() {
  if (GetArenaNoVirtual() == nullptr && field_ != nullptr) {
    delete field_;
  }
  field_ = nullptr;
}
inline const ::google::firestore::v1::StructuredQuery_FieldReference& StructuredQuery_FieldFilter::_internal_field() const {
  const ::google::firestore::v1::StructuredQuery_FieldReference* p = field_;
  return p != nullptr ? *p : *reinterpret_cast<const ::google::firestore::v1::StructuredQuery_FieldReference*>(
      &::google::firestore::v1::_StructuredQuery_FieldReference_default_instance_);
}
inline const ::google::firestore::v1::StructuredQuery_FieldReference& StructuredQuery_FieldFilter::field() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.FieldFilter.field)
  return _internal_field();
}
inline ::google::firestore::v1::StructuredQuery_FieldReference* StructuredQuery_FieldFilter::release_field() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.FieldFilter.field)
  
  ::google::firestore::v1::StructuredQuery_FieldReference* temp = field_;
  field_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::StructuredQuery_FieldReference* StructuredQuery_FieldFilter::_internal_mutable_field() {
  
  if (field_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::StructuredQuery_FieldReference>(GetArenaNoVirtual());
    field_ = p;
  }
  return field_;
}
inline ::google::firestore::v1::StructuredQuery_FieldReference* StructuredQuery_FieldFilter::mutable_field() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.FieldFilter.field)
  return _internal_mutable_field();
}
inline void StructuredQuery_FieldFilter::set_allocated_field(::google::firestore::v1::StructuredQuery_FieldReference* field) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete field_;
  }
  if (field) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      field = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, field, submessage_arena);
    }
    
  } else {
    
  }
  field_ = field;
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.StructuredQuery.FieldFilter.field)
}

// .google.firestore.v1.StructuredQuery.FieldFilter.Operator op = 2;
inline void StructuredQuery_FieldFilter::clear_op() {
  op_ = 0;
}
inline ::google::firestore::v1::StructuredQuery_FieldFilter_Operator StructuredQuery_FieldFilter::_internal_op() const {
  return static_cast< ::google::firestore::v1::StructuredQuery_FieldFilter_Operator >(op_);
}
inline ::google::firestore::v1::StructuredQuery_FieldFilter_Operator StructuredQuery_FieldFilter::op() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.FieldFilter.op)
  return _internal_op();
}
inline void StructuredQuery_FieldFilter::_internal_set_op(::google::firestore::v1::StructuredQuery_FieldFilter_Operator value) {
  
  op_ = value;
}
inline void StructuredQuery_FieldFilter::set_op(::google::firestore::v1::StructuredQuery_FieldFilter_Operator value) {
  _internal_set_op(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.StructuredQuery.FieldFilter.op)
}

// .google.firestore.v1.Value value = 3;
inline bool StructuredQuery_FieldFilter::_internal_has_value() const {
  return this != internal_default_instance() && value_ != nullptr;
}
inline bool StructuredQuery_FieldFilter::has_value() const {
  return _internal_has_value();
}
inline const ::google::firestore::v1::Value& StructuredQuery_FieldFilter::_internal_value() const {
  const ::google::firestore::v1::Value* p = value_;
  return p != nullptr ? *p : *reinterpret_cast<const ::google::firestore::v1::Value*>(
      &::google::firestore::v1::_Value_default_instance_);
}
inline const ::google::firestore::v1::Value& StructuredQuery_FieldFilter::value() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.FieldFilter.value)
  return _internal_value();
}
inline ::google::firestore::v1::Value* StructuredQuery_FieldFilter::release_value() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.FieldFilter.value)
  
  ::google::firestore::v1::Value* temp = value_;
  value_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::Value* StructuredQuery_FieldFilter::_internal_mutable_value() {
  
  if (value_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::Value>(GetArenaNoVirtual());
    value_ = p;
  }
  return value_;
}
inline ::google::firestore::v1::Value* StructuredQuery_FieldFilter::mutable_value() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.FieldFilter.value)
  return _internal_mutable_value();
}
inline void StructuredQuery_FieldFilter::set_allocated_value(::google::firestore::v1::Value* value) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(value_);
  }
  if (value) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      value = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, value, submessage_arena);
    }
    
  } else {
    
  }
  value_ = value;
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.StructuredQuery.FieldFilter.value)
}

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

// StructuredQuery_UnaryFilter

// .google.firestore.v1.StructuredQuery.UnaryFilter.Operator op = 1;
inline void StructuredQuery_UnaryFilter::clear_op() {
  op_ = 0;
}
inline ::google::firestore::v1::StructuredQuery_UnaryFilter_Operator StructuredQuery_UnaryFilter::_internal_op() const {
  return static_cast< ::google::firestore::v1::StructuredQuery_UnaryFilter_Operator >(op_);
}
inline ::google::firestore::v1::StructuredQuery_UnaryFilter_Operator StructuredQuery_UnaryFilter::op() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.UnaryFilter.op)
  return _internal_op();
}
inline void StructuredQuery_UnaryFilter::_internal_set_op(::google::firestore::v1::StructuredQuery_UnaryFilter_Operator value) {
  
  op_ = value;
}
inline void StructuredQuery_UnaryFilter::set_op(::google::firestore::v1::StructuredQuery_UnaryFilter_Operator value) {
  _internal_set_op(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.StructuredQuery.UnaryFilter.op)
}

// .google.firestore.v1.StructuredQuery.FieldReference field = 2;
inline bool StructuredQuery_UnaryFilter::_internal_has_field() const {
  return operand_type_case() == kField;
}
inline bool StructuredQuery_UnaryFilter::has_field() const {
  return _internal_has_field();
}
inline void StructuredQuery_UnaryFilter::set_has_field() {
  _oneof_case_[0] = kField;
}
inline void StructuredQuery_UnaryFilter::clear_field() {
  if (_internal_has_field()) {
    delete operand_type_.field_;
    clear_has_operand_type();
  }
}
inline ::google::firestore::v1::StructuredQuery_FieldReference* StructuredQuery_UnaryFilter::release_field() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.UnaryFilter.field)
  if (_internal_has_field()) {
    clear_has_operand_type();
      ::google::firestore::v1::StructuredQuery_FieldReference* temp = operand_type_.field_;
    operand_type_.field_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::StructuredQuery_FieldReference& StructuredQuery_UnaryFilter::_internal_field() const {
  return _internal_has_field()
      ? *operand_type_.field_
      : *reinterpret_cast< ::google::firestore::v1::StructuredQuery_FieldReference*>(&::google::firestore::v1::_StructuredQuery_FieldReference_default_instance_);
}
inline const ::google::firestore::v1::StructuredQuery_FieldReference& StructuredQuery_UnaryFilter::field() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.UnaryFilter.field)
  return _internal_field();
}
inline ::google::firestore::v1::StructuredQuery_FieldReference* StructuredQuery_UnaryFilter::_internal_mutable_field() {
  if (!_internal_has_field()) {
    clear_operand_type();
    set_has_field();
    operand_type_.field_ = CreateMaybeMessage< ::google::firestore::v1::StructuredQuery_FieldReference >(
        GetArenaNoVirtual());
  }
  return operand_type_.field_;
}
inline ::google::firestore::v1::StructuredQuery_FieldReference* StructuredQuery_UnaryFilter::mutable_field() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.UnaryFilter.field)
  return _internal_mutable_field();
}

inline bool StructuredQuery_UnaryFilter::has_operand_type() const {
  return operand_type_case() != OPERAND_TYPE_NOT_SET;
}
inline void StructuredQuery_UnaryFilter::clear_has_operand_type() {
  _oneof_case_[0] = OPERAND_TYPE_NOT_SET;
}
inline StructuredQuery_UnaryFilter::OperandTypeCase StructuredQuery_UnaryFilter::operand_type_case() const {
  return StructuredQuery_UnaryFilter::OperandTypeCase(_oneof_case_[0]);
}
// -------------------------------------------------------------------

// StructuredQuery_Order

// .google.firestore.v1.StructuredQuery.FieldReference field = 1;
inline bool StructuredQuery_Order::_internal_has_field() const {
  return this != internal_default_instance() && field_ != nullptr;
}
inline bool StructuredQuery_Order::has_field() const {
  return _internal_has_field();
}
inline void StructuredQuery_Order::clear_field() {
  if (GetArenaNoVirtual() == nullptr && field_ != nullptr) {
    delete field_;
  }
  field_ = nullptr;
}
inline const ::google::firestore::v1::StructuredQuery_FieldReference& StructuredQuery_Order::_internal_field() const {
  const ::google::firestore::v1::StructuredQuery_FieldReference* p = field_;
  return p != nullptr ? *p : *reinterpret_cast<const ::google::firestore::v1::StructuredQuery_FieldReference*>(
      &::google::firestore::v1::_StructuredQuery_FieldReference_default_instance_);
}
inline const ::google::firestore::v1::StructuredQuery_FieldReference& StructuredQuery_Order::field() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.Order.field)
  return _internal_field();
}
inline ::google::firestore::v1::StructuredQuery_FieldReference* StructuredQuery_Order::release_field() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.Order.field)
  
  ::google::firestore::v1::StructuredQuery_FieldReference* temp = field_;
  field_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::StructuredQuery_FieldReference* StructuredQuery_Order::_internal_mutable_field() {
  
  if (field_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::StructuredQuery_FieldReference>(GetArenaNoVirtual());
    field_ = p;
  }
  return field_;
}
inline ::google::firestore::v1::StructuredQuery_FieldReference* StructuredQuery_Order::mutable_field() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.Order.field)
  return _internal_mutable_field();
}
inline void StructuredQuery_Order::set_allocated_field(::google::firestore::v1::StructuredQuery_FieldReference* field) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete field_;
  }
  if (field) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      field = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, field, submessage_arena);
    }
    
  } else {
    
  }
  field_ = field;
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.StructuredQuery.Order.field)
}

// .google.firestore.v1.StructuredQuery.Direction direction = 2;
inline void StructuredQuery_Order::clear_direction() {
  direction_ = 0;
}
inline ::google::firestore::v1::StructuredQuery_Direction StructuredQuery_Order::_internal_direction() const {
  return static_cast< ::google::firestore::v1::StructuredQuery_Direction >(direction_);
}
inline ::google::firestore::v1::StructuredQuery_Direction StructuredQuery_Order::direction() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.Order.direction)
  return _internal_direction();
}
inline void StructuredQuery_Order::_internal_set_direction(::google::firestore::v1::StructuredQuery_Direction value) {
  
  direction_ = value;
}
inline void StructuredQuery_Order::set_direction(::google::firestore::v1::StructuredQuery_Direction value) {
  _internal_set_direction(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.StructuredQuery.Order.direction)
}

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

// StructuredQuery_FieldReference

// string field_path = 2;
inline void StructuredQuery_FieldReference::clear_field_path() {
  field_path_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}
inline const std::string& StructuredQuery_FieldReference::field_path() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.FieldReference.field_path)
  return _internal_field_path();
}
inline void StructuredQuery_FieldReference::set_field_path(const std::string& value) {
  _internal_set_field_path(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.StructuredQuery.FieldReference.field_path)
}
inline std::string* StructuredQuery_FieldReference::mutable_field_path() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.FieldReference.field_path)
  return _internal_mutable_field_path();
}
inline const std::string& StructuredQuery_FieldReference::_internal_field_path() const {
  return field_path_.GetNoArena();
}
inline void StructuredQuery_FieldReference::_internal_set_field_path(const std::string& value) {
  
  field_path_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
}
inline void StructuredQuery_FieldReference::set_field_path(std::string&& value) {
  
  field_path_.SetNoArena(
    &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:google.firestore.v1.StructuredQuery.FieldReference.field_path)
}
inline void StructuredQuery_FieldReference::set_field_path(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  field_path_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:google.firestore.v1.StructuredQuery.FieldReference.field_path)
}
inline void StructuredQuery_FieldReference::set_field_path(const char* value, size_t size) {
  
  field_path_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:google.firestore.v1.StructuredQuery.FieldReference.field_path)
}
inline std::string* StructuredQuery_FieldReference::_internal_mutable_field_path() {
  
  return field_path_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}
inline std::string* StructuredQuery_FieldReference::release_field_path() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.FieldReference.field_path)
  
  return field_path_.ReleaseNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}
inline void StructuredQuery_FieldReference::set_allocated_field_path(std::string* field_path) {
  if (field_path != nullptr) {
    
  } else {
    
  }
  field_path_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), field_path);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.StructuredQuery.FieldReference.field_path)
}

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

// StructuredQuery_Projection

// repeated .google.firestore.v1.StructuredQuery.FieldReference fields = 2;
inline int StructuredQuery_Projection::_internal_fields_size() const {
  return fields_.size();
}
inline int StructuredQuery_Projection::fields_size() const {
  return _internal_fields_size();
}
inline void StructuredQuery_Projection::clear_fields() {
  fields_.Clear();
}
inline ::google::firestore::v1::StructuredQuery_FieldReference* StructuredQuery_Projection::mutable_fields(int index) {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.Projection.fields)
  return fields_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_FieldReference >*
StructuredQuery_Projection::mutable_fields() {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.StructuredQuery.Projection.fields)
  return &fields_;
}
inline const ::google::firestore::v1::StructuredQuery_FieldReference& StructuredQuery_Projection::_internal_fields(int index) const {
  return fields_.Get(index);
}
inline const ::google::firestore::v1::StructuredQuery_FieldReference& StructuredQuery_Projection::fields(int index) const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.Projection.fields)
  return _internal_fields(index);
}
inline ::google::firestore::v1::StructuredQuery_FieldReference* StructuredQuery_Projection::_internal_add_fields() {
  return fields_.Add();
}
inline ::google::firestore::v1::StructuredQuery_FieldReference* StructuredQuery_Projection::add_fields() {
  // @@protoc_insertion_point(field_add:google.firestore.v1.StructuredQuery.Projection.fields)
  return _internal_add_fields();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_FieldReference >&
StructuredQuery_Projection::fields() const {
  // @@protoc_insertion_point(field_list:google.firestore.v1.StructuredQuery.Projection.fields)
  return fields_;
}

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

// StructuredQuery

// .google.firestore.v1.StructuredQuery.Projection select = 1;
inline bool StructuredQuery::_internal_has_select() const {
  return this != internal_default_instance() && select_ != nullptr;
}
inline bool StructuredQuery::has_select() const {
  return _internal_has_select();
}
inline void StructuredQuery::clear_select() {
  if (GetArenaNoVirtual() == nullptr && select_ != nullptr) {
    delete select_;
  }
  select_ = nullptr;
}
inline const ::google::firestore::v1::StructuredQuery_Projection& StructuredQuery::_internal_select() const {
  const ::google::firestore::v1::StructuredQuery_Projection* p = select_;
  return p != nullptr ? *p : *reinterpret_cast<const ::google::firestore::v1::StructuredQuery_Projection*>(
      &::google::firestore::v1::_StructuredQuery_Projection_default_instance_);
}
inline const ::google::firestore::v1::StructuredQuery_Projection& StructuredQuery::select() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.select)
  return _internal_select();
}
inline ::google::firestore::v1::StructuredQuery_Projection* StructuredQuery::release_select() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.select)
  
  ::google::firestore::v1::StructuredQuery_Projection* temp = select_;
  select_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::StructuredQuery_Projection* StructuredQuery::_internal_mutable_select() {
  
  if (select_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::StructuredQuery_Projection>(GetArenaNoVirtual());
    select_ = p;
  }
  return select_;
}
inline ::google::firestore::v1::StructuredQuery_Projection* StructuredQuery::mutable_select() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.select)
  return _internal_mutable_select();
}
inline void StructuredQuery::set_allocated_select(::google::firestore::v1::StructuredQuery_Projection* select) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete select_;
  }
  if (select) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      select = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, select, submessage_arena);
    }
    
  } else {
    
  }
  select_ = select;
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.StructuredQuery.select)
}

// repeated .google.firestore.v1.StructuredQuery.CollectionSelector from = 2;
inline int StructuredQuery::_internal_from_size() const {
  return from_.size();
}
inline int StructuredQuery::from_size() const {
  return _internal_from_size();
}
inline void StructuredQuery::clear_from() {
  from_.Clear();
}
inline ::google::firestore::v1::StructuredQuery_CollectionSelector* StructuredQuery::mutable_from(int index) {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.from)
  return from_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_CollectionSelector >*
StructuredQuery::mutable_from() {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.StructuredQuery.from)
  return &from_;
}
inline const ::google::firestore::v1::StructuredQuery_CollectionSelector& StructuredQuery::_internal_from(int index) const {
  return from_.Get(index);
}
inline const ::google::firestore::v1::StructuredQuery_CollectionSelector& StructuredQuery::from(int index) const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.from)
  return _internal_from(index);
}
inline ::google::firestore::v1::StructuredQuery_CollectionSelector* StructuredQuery::_internal_add_from() {
  return from_.Add();
}
inline ::google::firestore::v1::StructuredQuery_CollectionSelector* StructuredQuery::add_from() {
  // @@protoc_insertion_point(field_add:google.firestore.v1.StructuredQuery.from)
  return _internal_add_from();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_CollectionSelector >&
StructuredQuery::from() const {
  // @@protoc_insertion_point(field_list:google.firestore.v1.StructuredQuery.from)
  return from_;
}

// .google.firestore.v1.StructuredQuery.Filter where = 3;
inline bool StructuredQuery::_internal_has_where() const {
  return this != internal_default_instance() && where_ != nullptr;
}
inline bool StructuredQuery::has_where() const {
  return _internal_has_where();
}
inline void StructuredQuery::clear_where() {
  if (GetArenaNoVirtual() == nullptr && where_ != nullptr) {
    delete where_;
  }
  where_ = nullptr;
}
inline const ::google::firestore::v1::StructuredQuery_Filter& StructuredQuery::_internal_where() const {
  const ::google::firestore::v1::StructuredQuery_Filter* p = where_;
  return p != nullptr ? *p : *reinterpret_cast<const ::google::firestore::v1::StructuredQuery_Filter*>(
      &::google::firestore::v1::_StructuredQuery_Filter_default_instance_);
}
inline const ::google::firestore::v1::StructuredQuery_Filter& StructuredQuery::where() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.where)
  return _internal_where();
}
inline ::google::firestore::v1::StructuredQuery_Filter* StructuredQuery::release_where() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.where)
  
  ::google::firestore::v1::StructuredQuery_Filter* temp = where_;
  where_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::StructuredQuery_Filter* StructuredQuery::_internal_mutable_where() {
  
  if (where_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::StructuredQuery_Filter>(GetArenaNoVirtual());
    where_ = p;
  }
  return where_;
}
inline ::google::firestore::v1::StructuredQuery_Filter* StructuredQuery::mutable_where() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.where)
  return _internal_mutable_where();
}
inline void StructuredQuery::set_allocated_where(::google::firestore::v1::StructuredQuery_Filter* where) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete where_;
  }
  if (where) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      where = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, where, submessage_arena);
    }
    
  } else {
    
  }
  where_ = where;
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.StructuredQuery.where)
}

// repeated .google.firestore.v1.StructuredQuery.Order order_by = 4;
inline int StructuredQuery::_internal_order_by_size() const {
  return order_by_.size();
}
inline int StructuredQuery::order_by_size() const {
  return _internal_order_by_size();
}
inline void StructuredQuery::clear_order_by() {
  order_by_.Clear();
}
inline ::google::firestore::v1::StructuredQuery_Order* StructuredQuery::mutable_order_by(int index) {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.order_by)
  return order_by_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_Order >*
StructuredQuery::mutable_order_by() {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.StructuredQuery.order_by)
  return &order_by_;
}
inline const ::google::firestore::v1::StructuredQuery_Order& StructuredQuery::_internal_order_by(int index) const {
  return order_by_.Get(index);
}
inline const ::google::firestore::v1::StructuredQuery_Order& StructuredQuery::order_by(int index) const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.order_by)
  return _internal_order_by(index);
}
inline ::google::firestore::v1::StructuredQuery_Order* StructuredQuery::_internal_add_order_by() {
  return order_by_.Add();
}
inline ::google::firestore::v1::StructuredQuery_Order* StructuredQuery::add_order_by() {
  // @@protoc_insertion_point(field_add:google.firestore.v1.StructuredQuery.order_by)
  return _internal_add_order_by();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredQuery_Order >&
StructuredQuery::order_by() const {
  // @@protoc_insertion_point(field_list:google.firestore.v1.StructuredQuery.order_by)
  return order_by_;
}

// .google.firestore.v1.Cursor start_at = 7;
inline bool StructuredQuery::_internal_has_start_at() const {
  return this != internal_default_instance() && start_at_ != nullptr;
}
inline bool StructuredQuery::has_start_at() const {
  return _internal_has_start_at();
}
inline void StructuredQuery::clear_start_at() {
  if (GetArenaNoVirtual() == nullptr && start_at_ != nullptr) {
    delete start_at_;
  }
  start_at_ = nullptr;
}
inline const ::google::firestore::v1::Cursor& StructuredQuery::_internal_start_at() const {
  const ::google::firestore::v1::Cursor* p = start_at_;
  return p != nullptr ? *p : *reinterpret_cast<const ::google::firestore::v1::Cursor*>(
      &::google::firestore::v1::_Cursor_default_instance_);
}
inline const ::google::firestore::v1::Cursor& StructuredQuery::start_at() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.start_at)
  return _internal_start_at();
}
inline ::google::firestore::v1::Cursor* StructuredQuery::release_start_at() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.start_at)
  
  ::google::firestore::v1::Cursor* temp = start_at_;
  start_at_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::Cursor* StructuredQuery::_internal_mutable_start_at() {
  
  if (start_at_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::Cursor>(GetArenaNoVirtual());
    start_at_ = p;
  }
  return start_at_;
}
inline ::google::firestore::v1::Cursor* StructuredQuery::mutable_start_at() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.start_at)
  return _internal_mutable_start_at();
}
inline void StructuredQuery::set_allocated_start_at(::google::firestore::v1::Cursor* start_at) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete start_at_;
  }
  if (start_at) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      start_at = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, start_at, submessage_arena);
    }
    
  } else {
    
  }
  start_at_ = start_at;
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.StructuredQuery.start_at)
}

// .google.firestore.v1.Cursor end_at = 8;
inline bool StructuredQuery::_internal_has_end_at() const {
  return this != internal_default_instance() && end_at_ != nullptr;
}
inline bool StructuredQuery::has_end_at() const {
  return _internal_has_end_at();
}
inline void StructuredQuery::clear_end_at() {
  if (GetArenaNoVirtual() == nullptr && end_at_ != nullptr) {
    delete end_at_;
  }
  end_at_ = nullptr;
}
inline const ::google::firestore::v1::Cursor& StructuredQuery::_internal_end_at() const {
  const ::google::firestore::v1::Cursor* p = end_at_;
  return p != nullptr ? *p : *reinterpret_cast<const ::google::firestore::v1::Cursor*>(
      &::google::firestore::v1::_Cursor_default_instance_);
}
inline const ::google::firestore::v1::Cursor& StructuredQuery::end_at() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.end_at)
  return _internal_end_at();
}
inline ::google::firestore::v1::Cursor* StructuredQuery::release_end_at() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.end_at)
  
  ::google::firestore::v1::Cursor* temp = end_at_;
  end_at_ = nullptr;
  return temp;
}
inline ::google::firestore::v1::Cursor* StructuredQuery::_internal_mutable_end_at() {
  
  if (end_at_ == nullptr) {
    auto* p = CreateMaybeMessage<::google::firestore::v1::Cursor>(GetArenaNoVirtual());
    end_at_ = p;
  }
  return end_at_;
}
inline ::google::firestore::v1::Cursor* StructuredQuery::mutable_end_at() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.end_at)
  return _internal_mutable_end_at();
}
inline void StructuredQuery::set_allocated_end_at(::google::firestore::v1::Cursor* end_at) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete end_at_;
  }
  if (end_at) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      end_at = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, end_at, submessage_arena);
    }
    
  } else {
    
  }
  end_at_ = end_at;
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.StructuredQuery.end_at)
}

// int32 offset = 6;
inline void StructuredQuery::clear_offset() {
  offset_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 StructuredQuery::_internal_offset() const {
  return offset_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 StructuredQuery::offset() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.offset)
  return _internal_offset();
}
inline void StructuredQuery::_internal_set_offset(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  offset_ = value;
}
inline void StructuredQuery::set_offset(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_offset(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.StructuredQuery.offset)
}

// .google.protobuf.Int32Value limit = 5;
inline bool StructuredQuery::_internal_has_limit() const {
  return this != internal_default_instance() && limit_ != nullptr;
}
inline bool StructuredQuery::has_limit() const {
  return _internal_has_limit();
}
inline const PROTOBUF_NAMESPACE_ID::Int32Value& StructuredQuery::_internal_limit() const {
  const PROTOBUF_NAMESPACE_ID::Int32Value* p = limit_;
  return p != nullptr ? *p : *reinterpret_cast<const PROTOBUF_NAMESPACE_ID::Int32Value*>(
      &PROTOBUF_NAMESPACE_ID::_Int32Value_default_instance_);
}
inline const PROTOBUF_NAMESPACE_ID::Int32Value& StructuredQuery::limit() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredQuery.limit)
  return _internal_limit();
}
inline PROTOBUF_NAMESPACE_ID::Int32Value* StructuredQuery::release_limit() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredQuery.limit)
  
  PROTOBUF_NAMESPACE_ID::Int32Value* temp = limit_;
  limit_ = nullptr;
  return temp;
}
inline PROTOBUF_NAMESPACE_ID::Int32Value* StructuredQuery::_internal_mutable_limit() {
  
  if (limit_ == nullptr) {
    auto* p = CreateMaybeMessage<PROTOBUF_NAMESPACE_ID::Int32Value>(GetArenaNoVirtual());
    limit_ = p;
  }
  return limit_;
}
inline PROTOBUF_NAMESPACE_ID::Int32Value* StructuredQuery::mutable_limit() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredQuery.limit)
  return _internal_mutable_limit();
}
inline void StructuredQuery::set_allocated_limit(PROTOBUF_NAMESPACE_ID::Int32Value* limit) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(limit_);
  }
  if (limit) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(limit)->GetArena();
    if (message_arena != submessage_arena) {
      limit = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, limit, submessage_arena);
    }
    
  } else {
    
  }
  limit_ = limit;
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.StructuredQuery.limit)
}

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

// StructuredAggregationQuery_Aggregation_Count

// .google.protobuf.Int64Value up_to = 1;
inline bool StructuredAggregationQuery_Aggregation_Count::_internal_has_up_to() const {
  return this != internal_default_instance() && up_to_ != nullptr;
}
inline bool StructuredAggregationQuery_Aggregation_Count::has_up_to() const {
  return _internal_has_up_to();
}
inline const PROTOBUF_NAMESPACE_ID::Int64Value& StructuredAggregationQuery_Aggregation_Count::_internal_up_to() const {
  const PROTOBUF_NAMESPACE_ID::Int64Value* p = up_to_;
  return p != nullptr ? *p : *reinterpret_cast<const PROTOBUF_NAMESPACE_ID::Int64Value*>(
      &PROTOBUF_NAMESPACE_ID::_Int64Value_default_instance_);
}
inline const PROTOBUF_NAMESPACE_ID::Int64Value& StructuredAggregationQuery_Aggregation_Count::up_to() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredAggregationQuery.Aggregation.Count.up_to)
  return _internal_up_to();
}
inline PROTOBUF_NAMESPACE_ID::Int64Value* StructuredAggregationQuery_Aggregation_Count::release_up_to() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredAggregationQuery.Aggregation.Count.up_to)
  
  PROTOBUF_NAMESPACE_ID::Int64Value* temp = up_to_;
  up_to_ = nullptr;
  return temp;
}
inline PROTOBUF_NAMESPACE_ID::Int64Value* StructuredAggregationQuery_Aggregation_Count::_internal_mutable_up_to() {
  
  if (up_to_ == nullptr) {
    auto* p = CreateMaybeMessage<PROTOBUF_NAMESPACE_ID::Int64Value>(GetArenaNoVirtual());
    up_to_ = p;
  }
  return up_to_;
}
inline PROTOBUF_NAMESPACE_ID::Int64Value* StructuredAggregationQuery_Aggregation_Count::mutable_up_to() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredAggregationQuery.Aggregation.Count.up_to)
  return _internal_mutable_up_to();
}
inline void StructuredAggregationQuery_Aggregation_Count::set_allocated_up_to(PROTOBUF_NAMESPACE_ID::Int64Value* up_to) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(up_to_);
  }
  if (up_to) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(up_to)->GetArena();
    if (message_arena != submessage_arena) {
      up_to = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, up_to, submessage_arena);
    }
    
  } else {
    
  }
  up_to_ = up_to;
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.StructuredAggregationQuery.Aggregation.Count.up_to)
}

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

// StructuredAggregationQuery_Aggregation

// .google.firestore.v1.StructuredAggregationQuery.Aggregation.Count count = 1;
inline bool StructuredAggregationQuery_Aggregation::_internal_has_count() const {
  return operator_case() == kCount;
}
inline bool StructuredAggregationQuery_Aggregation::has_count() const {
  return _internal_has_count();
}
inline void StructuredAggregationQuery_Aggregation::set_has_count() {
  _oneof_case_[0] = kCount;
}
inline void StructuredAggregationQuery_Aggregation::clear_count() {
  if (_internal_has_count()) {
    delete operator_.count_;
    clear_has_operator();
  }
}
inline ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count* StructuredAggregationQuery_Aggregation::release_count() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredAggregationQuery.Aggregation.count)
  if (_internal_has_count()) {
    clear_has_operator();
      ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count* temp = operator_.count_;
    operator_.count_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count& StructuredAggregationQuery_Aggregation::_internal_count() const {
  return _internal_has_count()
      ? *operator_.count_
      : *reinterpret_cast< ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count*>(&::google::firestore::v1::_StructuredAggregationQuery_Aggregation_Count_default_instance_);
}
inline const ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count& StructuredAggregationQuery_Aggregation::count() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredAggregationQuery.Aggregation.count)
  return _internal_count();
}
inline ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count* StructuredAggregationQuery_Aggregation::_internal_mutable_count() {
  if (!_internal_has_count()) {
    clear_operator();
    set_has_count();
    operator_.count_ = CreateMaybeMessage< ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count >(
        GetArenaNoVirtual());
  }
  return operator_.count_;
}
inline ::google::firestore::v1::StructuredAggregationQuery_Aggregation_Count* StructuredAggregationQuery_Aggregation::mutable_count() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredAggregationQuery.Aggregation.count)
  return _internal_mutable_count();
}

// string alias = 7;
inline void StructuredAggregationQuery_Aggregation::clear_alias() {
  alias_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}
inline const std::string& StructuredAggregationQuery_Aggregation::alias() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredAggregationQuery.Aggregation.alias)
  return _internal_alias();
}
inline void StructuredAggregationQuery_Aggregation::set_alias(const std::string& value) {
  _internal_set_alias(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.StructuredAggregationQuery.Aggregation.alias)
}
inline std::string* StructuredAggregationQuery_Aggregation::mutable_alias() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredAggregationQuery.Aggregation.alias)
  return _internal_mutable_alias();
}
inline const std::string& StructuredAggregationQuery_Aggregation::_internal_alias() const {
  return alias_.GetNoArena();
}
inline void StructuredAggregationQuery_Aggregation::_internal_set_alias(const std::string& value) {
  
  alias_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
}
inline void StructuredAggregationQuery_Aggregation::set_alias(std::string&& value) {
  
  alias_.SetNoArena(
    &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:google.firestore.v1.StructuredAggregationQuery.Aggregation.alias)
}
inline void StructuredAggregationQuery_Aggregation::set_alias(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  alias_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:google.firestore.v1.StructuredAggregationQuery.Aggregation.alias)
}
inline void StructuredAggregationQuery_Aggregation::set_alias(const char* value, size_t size) {
  
  alias_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:google.firestore.v1.StructuredAggregationQuery.Aggregation.alias)
}
inline std::string* StructuredAggregationQuery_Aggregation::_internal_mutable_alias() {
  
  return alias_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}
inline std::string* StructuredAggregationQuery_Aggregation::release_alias() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredAggregationQuery.Aggregation.alias)
  
  return alias_.ReleaseNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}
inline void StructuredAggregationQuery_Aggregation::set_allocated_alias(std::string* alias) {
  if (alias != nullptr) {
    
  } else {
    
  }
  alias_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), alias);
  // @@protoc_insertion_point(field_set_allocated:google.firestore.v1.StructuredAggregationQuery.Aggregation.alias)
}

inline bool StructuredAggregationQuery_Aggregation::has_operator() const {
  return operator_case() != OPERATOR_NOT_SET;
}
inline void StructuredAggregationQuery_Aggregation::clear_has_operator() {
  _oneof_case_[0] = OPERATOR_NOT_SET;
}
inline StructuredAggregationQuery_Aggregation::OperatorCase StructuredAggregationQuery_Aggregation::operator_case() const {
  return StructuredAggregationQuery_Aggregation::OperatorCase(_oneof_case_[0]);
}
// -------------------------------------------------------------------

// StructuredAggregationQuery

// .google.firestore.v1.StructuredQuery structured_query = 1;
inline bool StructuredAggregationQuery::_internal_has_structured_query() const {
  return query_type_case() == kStructuredQuery;
}
inline bool StructuredAggregationQuery::has_structured_query() const {
  return _internal_has_structured_query();
}
inline void StructuredAggregationQuery::set_has_structured_query() {
  _oneof_case_[0] = kStructuredQuery;
}
inline void StructuredAggregationQuery::clear_structured_query() {
  if (_internal_has_structured_query()) {
    delete query_type_.structured_query_;
    clear_has_query_type();
  }
}
inline ::google::firestore::v1::StructuredQuery* StructuredAggregationQuery::release_structured_query() {
  // @@protoc_insertion_point(field_release:google.firestore.v1.StructuredAggregationQuery.structured_query)
  if (_internal_has_structured_query()) {
    clear_has_query_type();
      ::google::firestore::v1::StructuredQuery* temp = query_type_.structured_query_;
    query_type_.structured_query_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::google::firestore::v1::StructuredQuery& StructuredAggregationQuery::_internal_structured_query() const {
  return _internal_has_structured_query()
      ? *query_type_.structured_query_
      : *reinterpret_cast< ::google::firestore::v1::StructuredQuery*>(&::google::firestore::v1::_StructuredQuery_default_instance_);
}
inline const ::google::firestore::v1::StructuredQuery& StructuredAggregationQuery::structured_query() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredAggregationQuery.structured_query)
  return _internal_structured_query();
}
inline ::google::firestore::v1::StructuredQuery* StructuredAggregationQuery::_internal_mutable_structured_query() {
  if (!_internal_has_structured_query()) {
    clear_query_type();
    set_has_structured_query();
    query_type_.structured_query_ = CreateMaybeMessage< ::google::firestore::v1::StructuredQuery >(
        GetArenaNoVirtual());
  }
  return query_type_.structured_query_;
}
inline ::google::firestore::v1::StructuredQuery* StructuredAggregationQuery::mutable_structured_query() {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredAggregationQuery.structured_query)
  return _internal_mutable_structured_query();
}

// repeated .google.firestore.v1.StructuredAggregationQuery.Aggregation aggregations = 3;
inline int StructuredAggregationQuery::_internal_aggregations_size() const {
  return aggregations_.size();
}
inline int StructuredAggregationQuery::aggregations_size() const {
  return _internal_aggregations_size();
}
inline void StructuredAggregationQuery::clear_aggregations() {
  aggregations_.Clear();
}
inline ::google::firestore::v1::StructuredAggregationQuery_Aggregation* StructuredAggregationQuery::mutable_aggregations(int index) {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.StructuredAggregationQuery.aggregations)
  return aggregations_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredAggregationQuery_Aggregation >*
StructuredAggregationQuery::mutable_aggregations() {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.StructuredAggregationQuery.aggregations)
  return &aggregations_;
}
inline const ::google::firestore::v1::StructuredAggregationQuery_Aggregation& StructuredAggregationQuery::_internal_aggregations(int index) const {
  return aggregations_.Get(index);
}
inline const ::google::firestore::v1::StructuredAggregationQuery_Aggregation& StructuredAggregationQuery::aggregations(int index) const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.StructuredAggregationQuery.aggregations)
  return _internal_aggregations(index);
}
inline ::google::firestore::v1::StructuredAggregationQuery_Aggregation* StructuredAggregationQuery::_internal_add_aggregations() {
  return aggregations_.Add();
}
inline ::google::firestore::v1::StructuredAggregationQuery_Aggregation* StructuredAggregationQuery::add_aggregations() {
  // @@protoc_insertion_point(field_add:google.firestore.v1.StructuredAggregationQuery.aggregations)
  return _internal_add_aggregations();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::StructuredAggregationQuery_Aggregation >&
StructuredAggregationQuery::aggregations() const {
  // @@protoc_insertion_point(field_list:google.firestore.v1.StructuredAggregationQuery.aggregations)
  return aggregations_;
}

inline bool StructuredAggregationQuery::has_query_type() const {
  return query_type_case() != QUERY_TYPE_NOT_SET;
}
inline void StructuredAggregationQuery::clear_has_query_type() {
  _oneof_case_[0] = QUERY_TYPE_NOT_SET;
}
inline StructuredAggregationQuery::QueryTypeCase StructuredAggregationQuery::query_type_case() const {
  return StructuredAggregationQuery::QueryTypeCase(_oneof_case_[0]);
}
// -------------------------------------------------------------------

// Cursor

// repeated .google.firestore.v1.Value values = 1;
inline int Cursor::_internal_values_size() const {
  return values_.size();
}
inline int Cursor::values_size() const {
  return _internal_values_size();
}
inline ::google::firestore::v1::Value* Cursor::mutable_values(int index) {
  // @@protoc_insertion_point(field_mutable:google.firestore.v1.Cursor.values)
  return values_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::Value >*
Cursor::mutable_values() {
  // @@protoc_insertion_point(field_mutable_list:google.firestore.v1.Cursor.values)
  return &values_;
}
inline const ::google::firestore::v1::Value& Cursor::_internal_values(int index) const {
  return values_.Get(index);
}
inline const ::google::firestore::v1::Value& Cursor::values(int index) const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Cursor.values)
  return _internal_values(index);
}
inline ::google::firestore::v1::Value* Cursor::_internal_add_values() {
  return values_.Add();
}
inline ::google::firestore::v1::Value* Cursor::add_values() {
  // @@protoc_insertion_point(field_add:google.firestore.v1.Cursor.values)
  return _internal_add_values();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::google::firestore::v1::Value >&
Cursor::values() const {
  // @@protoc_insertion_point(field_list:google.firestore.v1.Cursor.values)
  return values_;
}

// bool before = 2;
inline void Cursor::clear_before() {
  before_ = false;
}
inline bool Cursor::_internal_before() const {
  return before_;
}
inline bool Cursor::before() const {
  // @@protoc_insertion_point(field_get:google.firestore.v1.Cursor.before)
  return _internal_before();
}
inline void Cursor::_internal_set_before(bool value) {
  
  before_ = value;
}
inline void Cursor::set_before(bool value) {
  _internal_set_before(value);
  // @@protoc_insertion_point(field_set:google.firestore.v1.Cursor.before)
}

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

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

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

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

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

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

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

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

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

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace v1
}  // namespace firestore
}  // namespace google

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::google::firestore::v1::StructuredQuery_CompositeFilter_Operator> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::google::firestore::v1::StructuredQuery_CompositeFilter_Operator>() {
  return ::google::firestore::v1::StructuredQuery_CompositeFilter_Operator_descriptor();
}
template <> struct is_proto_enum< ::google::firestore::v1::StructuredQuery_FieldFilter_Operator> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::google::firestore::v1::StructuredQuery_FieldFilter_Operator>() {
  return ::google::firestore::v1::StructuredQuery_FieldFilter_Operator_descriptor();
}
template <> struct is_proto_enum< ::google::firestore::v1::StructuredQuery_UnaryFilter_Operator> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::google::firestore::v1::StructuredQuery_UnaryFilter_Operator>() {
  return ::google::firestore::v1::StructuredQuery_UnaryFilter_Operator_descriptor();
}
template <> struct is_proto_enum< ::google::firestore::v1::StructuredQuery_Direction> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::google::firestore::v1::StructuredQuery_Direction>() {
  return ::google::firestore::v1::StructuredQuery_Direction_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_google_2ffirestore_2fv1_2fquery_2eproto
