// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/iam/v1/policy.proto

#ifndef PROTOBUF_INCLUDED_google_2fiam_2fv1_2fpolicy_2eproto
#define PROTOBUF_INCLUDED_google_2fiam_2fv1_2fpolicy_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3007000
#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 3007001 < 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/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/api/annotations.pb.h"
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_google_2fiam_2fv1_2fpolicy_2eproto

// Internal implementation detail -- do not use these members.
struct TableStruct_google_2fiam_2fv1_2fpolicy_2eproto {
  static const ::google::protobuf::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::google::protobuf::internal::ParseTable schema[4]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
  static const ::google::protobuf::internal::SerializationTable serialization_table[];
  static const ::google::protobuf::uint32 offsets[];
};
void AddDescriptors_google_2fiam_2fv1_2fpolicy_2eproto();
namespace google {
namespace iam {
namespace v1 {
class Binding;
class BindingDefaultTypeInternal;
extern BindingDefaultTypeInternal _Binding_default_instance_;
class BindingDelta;
class BindingDeltaDefaultTypeInternal;
extern BindingDeltaDefaultTypeInternal _BindingDelta_default_instance_;
class Policy;
class PolicyDefaultTypeInternal;
extern PolicyDefaultTypeInternal _Policy_default_instance_;
class PolicyDelta;
class PolicyDeltaDefaultTypeInternal;
extern PolicyDeltaDefaultTypeInternal _PolicyDelta_default_instance_;
}  // namespace v1
}  // namespace iam
namespace protobuf {
template<> ::google::iam::v1::Binding* Arena::CreateMaybeMessage<::google::iam::v1::Binding>(Arena*);
template<> ::google::iam::v1::BindingDelta* Arena::CreateMaybeMessage<::google::iam::v1::BindingDelta>(Arena*);
template<> ::google::iam::v1::Policy* Arena::CreateMaybeMessage<::google::iam::v1::Policy>(Arena*);
template<> ::google::iam::v1::PolicyDelta* Arena::CreateMaybeMessage<::google::iam::v1::PolicyDelta>(Arena*);
}  // namespace protobuf
}  // namespace google
namespace google {
namespace iam {
namespace v1 {

enum BindingDelta_Action {
  BindingDelta_Action_ACTION_UNSPECIFIED = 0,
  BindingDelta_Action_ADD = 1,
  BindingDelta_Action_REMOVE = 2,
  BindingDelta_Action_BindingDelta_Action_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
  BindingDelta_Action_BindingDelta_Action_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
};
bool BindingDelta_Action_IsValid(int value);
const BindingDelta_Action BindingDelta_Action_Action_MIN = BindingDelta_Action_ACTION_UNSPECIFIED;
const BindingDelta_Action BindingDelta_Action_Action_MAX = BindingDelta_Action_REMOVE;
const int BindingDelta_Action_Action_ARRAYSIZE = BindingDelta_Action_Action_MAX + 1;

const ::google::protobuf::EnumDescriptor* BindingDelta_Action_descriptor();
inline const ::std::string& BindingDelta_Action_Name(BindingDelta_Action value) {
  return ::google::protobuf::internal::NameOfEnum(
    BindingDelta_Action_descriptor(), value);
}
inline bool BindingDelta_Action_Parse(
    const ::std::string& name, BindingDelta_Action* value) {
  return ::google::protobuf::internal::ParseNamedEnum<BindingDelta_Action>(
    BindingDelta_Action_descriptor(), name, value);
}
// ===================================================================

class Policy :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.iam.v1.Policy) */ {
 public:
  Policy();
  virtual ~Policy();

  Policy(const Policy& from);

  inline Policy& operator=(const Policy& from) {
    CopyFrom(from);
    return *this;
  }
  #if LANG_CXX11
  Policy(Policy&& from) noexcept
    : Policy() {
    *this = ::std::move(from);
  }

  inline Policy& operator=(Policy&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  inline ::google::protobuf::Arena* GetArena() const final {
    return GetArenaNoVirtual();
  }
  inline void* GetMaybeArenaPointer() const final {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor() {
    return default_instance().GetDescriptor();
  }
  static const Policy& default_instance();

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

  void UnsafeArenaSwap(Policy* other);
  void Swap(Policy* other);
  friend void swap(Policy& a, Policy& b) {
    a.Swap(&b);
  }

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

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

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

  size_t ByteSizeLong() const final;
  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
  #else
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(Policy* other);
  protected:
  explicit Policy(::google::protobuf::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return _internal_metadata_.arena();
  }
  inline void* MaybeArenaPtr() const {
    return _internal_metadata_.raw_arena_ptr();
  }
  public:

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

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

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

  // repeated .google.iam.v1.Binding bindings = 4;
  int bindings_size() const;
  void clear_bindings();
  static const int kBindingsFieldNumber = 4;
  ::google::iam::v1::Binding* mutable_bindings(int index);
  ::google::protobuf::RepeatedPtrField< ::google::iam::v1::Binding >*
      mutable_bindings();
  const ::google::iam::v1::Binding& bindings(int index) const;
  ::google::iam::v1::Binding* add_bindings();
  const ::google::protobuf::RepeatedPtrField< ::google::iam::v1::Binding >&
      bindings() const;

  // bytes etag = 3;
  void clear_etag();
  static const int kEtagFieldNumber = 3;
  const ::std::string& etag() const;
  void set_etag(const ::std::string& value);
  #if LANG_CXX11
  void set_etag(::std::string&& value);
  #endif
  void set_etag(const char* value);
  void set_etag(const void* value, size_t size);
  ::std::string* mutable_etag();
  ::std::string* release_etag();
  void set_allocated_etag(::std::string* etag);
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  ::std::string* unsafe_arena_release_etag();
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  void unsafe_arena_set_allocated_etag(
      ::std::string* etag);

  // int32 version = 1;
  void clear_version();
  static const int kVersionFieldNumber = 1;
  ::google::protobuf::int32 version() const;
  void set_version(::google::protobuf::int32 value);

  // @@protoc_insertion_point(class_scope:google.iam.v1.Policy)
 private:
  class HasBitSetters;

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::google::protobuf::RepeatedPtrField< ::google::iam::v1::Binding > bindings_;
  ::google::protobuf::internal::ArenaStringPtr etag_;
  ::google::protobuf::int32 version_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_google_2fiam_2fv1_2fpolicy_2eproto;
};
// -------------------------------------------------------------------

class Binding :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.iam.v1.Binding) */ {
 public:
  Binding();
  virtual ~Binding();

  Binding(const Binding& from);

  inline Binding& operator=(const Binding& from) {
    CopyFrom(from);
    return *this;
  }
  #if LANG_CXX11
  Binding(Binding&& from) noexcept
    : Binding() {
    *this = ::std::move(from);
  }

  inline Binding& operator=(Binding&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  inline ::google::protobuf::Arena* GetArena() const final {
    return GetArenaNoVirtual();
  }
  inline void* GetMaybeArenaPointer() const final {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor() {
    return default_instance().GetDescriptor();
  }
  static const Binding& default_instance();

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

  void UnsafeArenaSwap(Binding* other);
  void Swap(Binding* other);
  friend void swap(Binding& a, Binding& b) {
    a.Swap(&b);
  }

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

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

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

  size_t ByteSizeLong() const final;
  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
  #else
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(Binding* other);
  protected:
  explicit Binding(::google::protobuf::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return _internal_metadata_.arena();
  }
  inline void* MaybeArenaPtr() const {
    return _internal_metadata_.raw_arena_ptr();
  }
  public:

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

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

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

  // repeated string members = 2;
  int members_size() const;
  void clear_members();
  static const int kMembersFieldNumber = 2;
  const ::std::string& members(int index) const;
  ::std::string* mutable_members(int index);
  void set_members(int index, const ::std::string& value);
  #if LANG_CXX11
  void set_members(int index, ::std::string&& value);
  #endif
  void set_members(int index, const char* value);
  void set_members(int index, const char* value, size_t size);
  ::std::string* add_members();
  void add_members(const ::std::string& value);
  #if LANG_CXX11
  void add_members(::std::string&& value);
  #endif
  void add_members(const char* value);
  void add_members(const char* value, size_t size);
  const ::google::protobuf::RepeatedPtrField<::std::string>& members() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_members();

  // string role = 1;
  void clear_role();
  static const int kRoleFieldNumber = 1;
  const ::std::string& role() const;
  void set_role(const ::std::string& value);
  #if LANG_CXX11
  void set_role(::std::string&& value);
  #endif
  void set_role(const char* value);
  void set_role(const char* value, size_t size);
  ::std::string* mutable_role();
  ::std::string* release_role();
  void set_allocated_role(::std::string* role);
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  ::std::string* unsafe_arena_release_role();
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  void unsafe_arena_set_allocated_role(
      ::std::string* role);

  // @@protoc_insertion_point(class_scope:google.iam.v1.Binding)
 private:
  class HasBitSetters;

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::google::protobuf::RepeatedPtrField<::std::string> members_;
  ::google::protobuf::internal::ArenaStringPtr role_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_google_2fiam_2fv1_2fpolicy_2eproto;
};
// -------------------------------------------------------------------

class PolicyDelta :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.iam.v1.PolicyDelta) */ {
 public:
  PolicyDelta();
  virtual ~PolicyDelta();

  PolicyDelta(const PolicyDelta& from);

  inline PolicyDelta& operator=(const PolicyDelta& from) {
    CopyFrom(from);
    return *this;
  }
  #if LANG_CXX11
  PolicyDelta(PolicyDelta&& from) noexcept
    : PolicyDelta() {
    *this = ::std::move(from);
  }

  inline PolicyDelta& operator=(PolicyDelta&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  inline ::google::protobuf::Arena* GetArena() const final {
    return GetArenaNoVirtual();
  }
  inline void* GetMaybeArenaPointer() const final {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor() {
    return default_instance().GetDescriptor();
  }
  static const PolicyDelta& default_instance();

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

  void UnsafeArenaSwap(PolicyDelta* other);
  void Swap(PolicyDelta* other);
  friend void swap(PolicyDelta& a, PolicyDelta& b) {
    a.Swap(&b);
  }

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

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

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

  size_t ByteSizeLong() const final;
  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
  #else
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(PolicyDelta* other);
  protected:
  explicit PolicyDelta(::google::protobuf::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return _internal_metadata_.arena();
  }
  inline void* MaybeArenaPtr() const {
    return _internal_metadata_.raw_arena_ptr();
  }
  public:

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

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

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

  // repeated .google.iam.v1.BindingDelta binding_deltas = 1;
  int binding_deltas_size() const;
  void clear_binding_deltas();
  static const int kBindingDeltasFieldNumber = 1;
  ::google::iam::v1::BindingDelta* mutable_binding_deltas(int index);
  ::google::protobuf::RepeatedPtrField< ::google::iam::v1::BindingDelta >*
      mutable_binding_deltas();
  const ::google::iam::v1::BindingDelta& binding_deltas(int index) const;
  ::google::iam::v1::BindingDelta* add_binding_deltas();
  const ::google::protobuf::RepeatedPtrField< ::google::iam::v1::BindingDelta >&
      binding_deltas() const;

  // @@protoc_insertion_point(class_scope:google.iam.v1.PolicyDelta)
 private:
  class HasBitSetters;

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::google::protobuf::RepeatedPtrField< ::google::iam::v1::BindingDelta > binding_deltas_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_google_2fiam_2fv1_2fpolicy_2eproto;
};
// -------------------------------------------------------------------

class BindingDelta :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.iam.v1.BindingDelta) */ {
 public:
  BindingDelta();
  virtual ~BindingDelta();

  BindingDelta(const BindingDelta& from);

  inline BindingDelta& operator=(const BindingDelta& from) {
    CopyFrom(from);
    return *this;
  }
  #if LANG_CXX11
  BindingDelta(BindingDelta&& from) noexcept
    : BindingDelta() {
    *this = ::std::move(from);
  }

  inline BindingDelta& operator=(BindingDelta&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }
  #endif
  inline ::google::protobuf::Arena* GetArena() const final {
    return GetArenaNoVirtual();
  }
  inline void* GetMaybeArenaPointer() const final {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor() {
    return default_instance().GetDescriptor();
  }
  static const BindingDelta& default_instance();

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

  void UnsafeArenaSwap(BindingDelta* other);
  void Swap(BindingDelta* other);
  friend void swap(BindingDelta& a, BindingDelta& b) {
    a.Swap(&b);
  }

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

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

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

  size_t ByteSizeLong() const final;
  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
  #else
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) final;
  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const final;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      ::google::protobuf::uint8* target) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(BindingDelta* other);
  protected:
  explicit BindingDelta(::google::protobuf::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return _internal_metadata_.arena();
  }
  inline void* MaybeArenaPtr() const {
    return _internal_metadata_.raw_arena_ptr();
  }
  public:

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

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

  typedef BindingDelta_Action Action;
  static const Action ACTION_UNSPECIFIED =
    BindingDelta_Action_ACTION_UNSPECIFIED;
  static const Action ADD =
    BindingDelta_Action_ADD;
  static const Action REMOVE =
    BindingDelta_Action_REMOVE;
  static inline bool Action_IsValid(int value) {
    return BindingDelta_Action_IsValid(value);
  }
  static const Action Action_MIN =
    BindingDelta_Action_Action_MIN;
  static const Action Action_MAX =
    BindingDelta_Action_Action_MAX;
  static const int Action_ARRAYSIZE =
    BindingDelta_Action_Action_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor*
  Action_descriptor() {
    return BindingDelta_Action_descriptor();
  }
  static inline const ::std::string& Action_Name(Action value) {
    return BindingDelta_Action_Name(value);
  }
  static inline bool Action_Parse(const ::std::string& name,
      Action* value) {
    return BindingDelta_Action_Parse(name, value);
  }

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

  // string role = 2;
  void clear_role();
  static const int kRoleFieldNumber = 2;
  const ::std::string& role() const;
  void set_role(const ::std::string& value);
  #if LANG_CXX11
  void set_role(::std::string&& value);
  #endif
  void set_role(const char* value);
  void set_role(const char* value, size_t size);
  ::std::string* mutable_role();
  ::std::string* release_role();
  void set_allocated_role(::std::string* role);
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  ::std::string* unsafe_arena_release_role();
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  void unsafe_arena_set_allocated_role(
      ::std::string* role);

  // string member = 3;
  void clear_member();
  static const int kMemberFieldNumber = 3;
  const ::std::string& member() const;
  void set_member(const ::std::string& value);
  #if LANG_CXX11
  void set_member(::std::string&& value);
  #endif
  void set_member(const char* value);
  void set_member(const char* value, size_t size);
  ::std::string* mutable_member();
  ::std::string* release_member();
  void set_allocated_member(::std::string* member);
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  ::std::string* unsafe_arena_release_member();
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  void unsafe_arena_set_allocated_member(
      ::std::string* member);

  // .google.iam.v1.BindingDelta.Action action = 1;
  void clear_action();
  static const int kActionFieldNumber = 1;
  ::google::iam::v1::BindingDelta_Action action() const;
  void set_action(::google::iam::v1::BindingDelta_Action value);

  // @@protoc_insertion_point(class_scope:google.iam.v1.BindingDelta)
 private:
  class HasBitSetters;

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::google::protobuf::internal::ArenaStringPtr role_;
  ::google::protobuf::internal::ArenaStringPtr member_;
  int action_;
  mutable ::google::protobuf::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_google_2fiam_2fv1_2fpolicy_2eproto;
};
// ===================================================================


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

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

// int32 version = 1;
inline void Policy::clear_version() {
  version_ = 0;
}
inline ::google::protobuf::int32 Policy::version() const {
  // @@protoc_insertion_point(field_get:google.iam.v1.Policy.version)
  return version_;
}
inline void Policy::set_version(::google::protobuf::int32 value) {
  
  version_ = value;
  // @@protoc_insertion_point(field_set:google.iam.v1.Policy.version)
}

// repeated .google.iam.v1.Binding bindings = 4;
inline int Policy::bindings_size() const {
  return bindings_.size();
}
inline void Policy::clear_bindings() {
  bindings_.Clear();
}
inline ::google::iam::v1::Binding* Policy::mutable_bindings(int index) {
  // @@protoc_insertion_point(field_mutable:google.iam.v1.Policy.bindings)
  return bindings_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::iam::v1::Binding >*
Policy::mutable_bindings() {
  // @@protoc_insertion_point(field_mutable_list:google.iam.v1.Policy.bindings)
  return &bindings_;
}
inline const ::google::iam::v1::Binding& Policy::bindings(int index) const {
  // @@protoc_insertion_point(field_get:google.iam.v1.Policy.bindings)
  return bindings_.Get(index);
}
inline ::google::iam::v1::Binding* Policy::add_bindings() {
  // @@protoc_insertion_point(field_add:google.iam.v1.Policy.bindings)
  return bindings_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::iam::v1::Binding >&
Policy::bindings() const {
  // @@protoc_insertion_point(field_list:google.iam.v1.Policy.bindings)
  return bindings_;
}

// bytes etag = 3;
inline void Policy::clear_etag() {
  etag_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& Policy::etag() const {
  // @@protoc_insertion_point(field_get:google.iam.v1.Policy.etag)
  return etag_.Get();
}
inline void Policy::set_etag(const ::std::string& value) {
  
  etag_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:google.iam.v1.Policy.etag)
}
#if LANG_CXX11
inline void Policy::set_etag(::std::string&& value) {
  
  etag_.Set(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_rvalue:google.iam.v1.Policy.etag)
}
#endif
inline void Policy::set_etag(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  etag_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:google.iam.v1.Policy.etag)
}
inline void Policy::set_etag(const void* value,
    size_t size) {
  
  etag_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:google.iam.v1.Policy.etag)
}
inline ::std::string* Policy::mutable_etag() {
  
  // @@protoc_insertion_point(field_mutable:google.iam.v1.Policy.etag)
  return etag_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* Policy::release_etag() {
  // @@protoc_insertion_point(field_release:google.iam.v1.Policy.etag)
  
  return etag_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline void Policy::set_allocated_etag(::std::string* etag) {
  if (etag != nullptr) {
    
  } else {
    
  }
  etag_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), etag,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:google.iam.v1.Policy.etag)
}
inline ::std::string* Policy::unsafe_arena_release_etag() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.iam.v1.Policy.etag)
  GOOGLE_DCHECK(GetArenaNoVirtual() != nullptr);
  
  return etag_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void Policy::unsafe_arena_set_allocated_etag(
    ::std::string* etag) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != nullptr);
  if (etag != nullptr) {
    
  } else {
    
  }
  etag_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      etag, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.iam.v1.Policy.etag)
}

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

// Binding

// string role = 1;
inline void Binding::clear_role() {
  role_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& Binding::role() const {
  // @@protoc_insertion_point(field_get:google.iam.v1.Binding.role)
  return role_.Get();
}
inline void Binding::set_role(const ::std::string& value) {
  
  role_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:google.iam.v1.Binding.role)
}
#if LANG_CXX11
inline void Binding::set_role(::std::string&& value) {
  
  role_.Set(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_rvalue:google.iam.v1.Binding.role)
}
#endif
inline void Binding::set_role(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  role_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:google.iam.v1.Binding.role)
}
inline void Binding::set_role(const char* value,
    size_t size) {
  
  role_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:google.iam.v1.Binding.role)
}
inline ::std::string* Binding::mutable_role() {
  
  // @@protoc_insertion_point(field_mutable:google.iam.v1.Binding.role)
  return role_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* Binding::release_role() {
  // @@protoc_insertion_point(field_release:google.iam.v1.Binding.role)
  
  return role_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline void Binding::set_allocated_role(::std::string* role) {
  if (role != nullptr) {
    
  } else {
    
  }
  role_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), role,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:google.iam.v1.Binding.role)
}
inline ::std::string* Binding::unsafe_arena_release_role() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.iam.v1.Binding.role)
  GOOGLE_DCHECK(GetArenaNoVirtual() != nullptr);
  
  return role_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void Binding::unsafe_arena_set_allocated_role(
    ::std::string* role) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != nullptr);
  if (role != nullptr) {
    
  } else {
    
  }
  role_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      role, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.iam.v1.Binding.role)
}

// repeated string members = 2;
inline int Binding::members_size() const {
  return members_.size();
}
inline void Binding::clear_members() {
  members_.Clear();
}
inline const ::std::string& Binding::members(int index) const {
  // @@protoc_insertion_point(field_get:google.iam.v1.Binding.members)
  return members_.Get(index);
}
inline ::std::string* Binding::mutable_members(int index) {
  // @@protoc_insertion_point(field_mutable:google.iam.v1.Binding.members)
  return members_.Mutable(index);
}
inline void Binding::set_members(int index, const ::std::string& value) {
  // @@protoc_insertion_point(field_set:google.iam.v1.Binding.members)
  members_.Mutable(index)->assign(value);
}
#if LANG_CXX11
inline void Binding::set_members(int index, ::std::string&& value) {
  // @@protoc_insertion_point(field_set:google.iam.v1.Binding.members)
  members_.Mutable(index)->assign(std::move(value));
}
#endif
inline void Binding::set_members(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  members_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:google.iam.v1.Binding.members)
}
inline void Binding::set_members(int index, const char* value, size_t size) {
  members_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:google.iam.v1.Binding.members)
}
inline ::std::string* Binding::add_members() {
  // @@protoc_insertion_point(field_add_mutable:google.iam.v1.Binding.members)
  return members_.Add();
}
inline void Binding::add_members(const ::std::string& value) {
  members_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:google.iam.v1.Binding.members)
}
#if LANG_CXX11
inline void Binding::add_members(::std::string&& value) {
  members_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:google.iam.v1.Binding.members)
}
#endif
inline void Binding::add_members(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  members_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:google.iam.v1.Binding.members)
}
inline void Binding::add_members(const char* value, size_t size) {
  members_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:google.iam.v1.Binding.members)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
Binding::members() const {
  // @@protoc_insertion_point(field_list:google.iam.v1.Binding.members)
  return members_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>*
Binding::mutable_members() {
  // @@protoc_insertion_point(field_mutable_list:google.iam.v1.Binding.members)
  return &members_;
}

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

// PolicyDelta

// repeated .google.iam.v1.BindingDelta binding_deltas = 1;
inline int PolicyDelta::binding_deltas_size() const {
  return binding_deltas_.size();
}
inline void PolicyDelta::clear_binding_deltas() {
  binding_deltas_.Clear();
}
inline ::google::iam::v1::BindingDelta* PolicyDelta::mutable_binding_deltas(int index) {
  // @@protoc_insertion_point(field_mutable:google.iam.v1.PolicyDelta.binding_deltas)
  return binding_deltas_.Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::google::iam::v1::BindingDelta >*
PolicyDelta::mutable_binding_deltas() {
  // @@protoc_insertion_point(field_mutable_list:google.iam.v1.PolicyDelta.binding_deltas)
  return &binding_deltas_;
}
inline const ::google::iam::v1::BindingDelta& PolicyDelta::binding_deltas(int index) const {
  // @@protoc_insertion_point(field_get:google.iam.v1.PolicyDelta.binding_deltas)
  return binding_deltas_.Get(index);
}
inline ::google::iam::v1::BindingDelta* PolicyDelta::add_binding_deltas() {
  // @@protoc_insertion_point(field_add:google.iam.v1.PolicyDelta.binding_deltas)
  return binding_deltas_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::google::iam::v1::BindingDelta >&
PolicyDelta::binding_deltas() const {
  // @@protoc_insertion_point(field_list:google.iam.v1.PolicyDelta.binding_deltas)
  return binding_deltas_;
}

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

// BindingDelta

// .google.iam.v1.BindingDelta.Action action = 1;
inline void BindingDelta::clear_action() {
  action_ = 0;
}
inline ::google::iam::v1::BindingDelta_Action BindingDelta::action() const {
  // @@protoc_insertion_point(field_get:google.iam.v1.BindingDelta.action)
  return static_cast< ::google::iam::v1::BindingDelta_Action >(action_);
}
inline void BindingDelta::set_action(::google::iam::v1::BindingDelta_Action value) {
  
  action_ = value;
  // @@protoc_insertion_point(field_set:google.iam.v1.BindingDelta.action)
}

// string role = 2;
inline void BindingDelta::clear_role() {
  role_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& BindingDelta::role() const {
  // @@protoc_insertion_point(field_get:google.iam.v1.BindingDelta.role)
  return role_.Get();
}
inline void BindingDelta::set_role(const ::std::string& value) {
  
  role_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:google.iam.v1.BindingDelta.role)
}
#if LANG_CXX11
inline void BindingDelta::set_role(::std::string&& value) {
  
  role_.Set(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_rvalue:google.iam.v1.BindingDelta.role)
}
#endif
inline void BindingDelta::set_role(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  role_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:google.iam.v1.BindingDelta.role)
}
inline void BindingDelta::set_role(const char* value,
    size_t size) {
  
  role_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:google.iam.v1.BindingDelta.role)
}
inline ::std::string* BindingDelta::mutable_role() {
  
  // @@protoc_insertion_point(field_mutable:google.iam.v1.BindingDelta.role)
  return role_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* BindingDelta::release_role() {
  // @@protoc_insertion_point(field_release:google.iam.v1.BindingDelta.role)
  
  return role_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline void BindingDelta::set_allocated_role(::std::string* role) {
  if (role != nullptr) {
    
  } else {
    
  }
  role_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), role,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:google.iam.v1.BindingDelta.role)
}
inline ::std::string* BindingDelta::unsafe_arena_release_role() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.iam.v1.BindingDelta.role)
  GOOGLE_DCHECK(GetArenaNoVirtual() != nullptr);
  
  return role_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void BindingDelta::unsafe_arena_set_allocated_role(
    ::std::string* role) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != nullptr);
  if (role != nullptr) {
    
  } else {
    
  }
  role_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      role, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.iam.v1.BindingDelta.role)
}

// string member = 3;
inline void BindingDelta::clear_member() {
  member_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& BindingDelta::member() const {
  // @@protoc_insertion_point(field_get:google.iam.v1.BindingDelta.member)
  return member_.Get();
}
inline void BindingDelta::set_member(const ::std::string& value) {
  
  member_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:google.iam.v1.BindingDelta.member)
}
#if LANG_CXX11
inline void BindingDelta::set_member(::std::string&& value) {
  
  member_.Set(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_rvalue:google.iam.v1.BindingDelta.member)
}
#endif
inline void BindingDelta::set_member(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  member_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:google.iam.v1.BindingDelta.member)
}
inline void BindingDelta::set_member(const char* value,
    size_t size) {
  
  member_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:google.iam.v1.BindingDelta.member)
}
inline ::std::string* BindingDelta::mutable_member() {
  
  // @@protoc_insertion_point(field_mutable:google.iam.v1.BindingDelta.member)
  return member_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* BindingDelta::release_member() {
  // @@protoc_insertion_point(field_release:google.iam.v1.BindingDelta.member)
  
  return member_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline void BindingDelta::set_allocated_member(::std::string* member) {
  if (member != nullptr) {
    
  } else {
    
  }
  member_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), member,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:google.iam.v1.BindingDelta.member)
}
inline ::std::string* BindingDelta::unsafe_arena_release_member() {
  // @@protoc_insertion_point(field_unsafe_arena_release:google.iam.v1.BindingDelta.member)
  GOOGLE_DCHECK(GetArenaNoVirtual() != nullptr);
  
  return member_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void BindingDelta::unsafe_arena_set_allocated_member(
    ::std::string* member) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != nullptr);
  if (member != nullptr) {
    
  } else {
    
  }
  member_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      member, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:google.iam.v1.BindingDelta.member)
}

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace v1
}  // namespace iam
}  // namespace google

namespace google {
namespace protobuf {

template <> struct is_proto_enum< ::google::iam::v1::BindingDelta_Action> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::google::iam::v1::BindingDelta_Action>() {
  return ::google::iam::v1::BindingDelta_Action_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

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