// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/access_management/v1/keyapis_access_management_group_v1.proto

// This CPP symbol can be defined to use imports that match up to the framework
// imports needed when using CocoaPods.
#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS)
 #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0
#endif

#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
 #import <Protobuf/GPBProtocolBuffers_RuntimeSupport.h>
#else
 #import "GPBProtocolBuffers_RuntimeSupport.h"
#endif

#if GOOGLE_PROTOBUF_OBJC_VERSION < 30007
#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources.
#endif
#if 30007 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION
#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources.
#endif

#import <stdatomic.h>

#import "keyapis/access_management/v1/KeyapisAccessManagementGroupV1.pbobjc.h"
#import "google/api/Annotations.pbobjc.h"
#import "google/api/FieldBehavior.pbobjc.h"
// @@protoc_insertion_point(imports)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#pragma clang diagnostic ignored "-Wdirect-ivar-access"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"

#pragma mark - Objective-C Class declarations
// Forward declarations of Objective-C classes that we can use as
// static values in struct initializers.
// We don't use [Foo class] because it is not a static value.
GPBObjCClassDeclaration(GPBBoolValue);
GPBObjCClassDeclaration(GPBStringValue);
GPBObjCClassDeclaration(GPBTimestamp);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1Claim);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1DeleteGroupResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClaimFilterEmptyError);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupListRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1Group);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GroupFilter);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GroupPaging);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GroupUserFilter);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1GroupUserPaging);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PostGroupRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PostGroupResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachResponse);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1UserGroup);
GPBObjCClassDeclaration(KEYAPISACCESSMANAGEMENTV1ValidationError);

#pragma mark - KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root

@implementation KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root

+ (GPBExtensionRegistry*)extensionRegistry {
  // This is called by +initialize so there is no need to worry
  // about thread safety and initialization of registry.
  static GPBExtensionRegistry* registry = nil;
  if (!registry) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    registry = [[GPBExtensionRegistry alloc] init];
    // Merge in the imports (direct or indirect) that defined extensions.
    [registry addExtensions:[GAPIAnnotationsRoot extensionRegistry]];
    [registry addExtensions:[GAPIFieldBehaviorRoot extensionRegistry]];
  }
  return registry;
}

@end

static GPBFileDescription KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription = {
  .package = "keyapis.access_management.v1",
  .prefix = "KEYAPISACCESSMANAGEMENTV1",
  .syntax = GPBFileSyntaxProto3
};

#pragma mark - Enum KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType

GPBEnumDescriptor *KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "OrderByTypeUnknown\000Id\000Title\000";
    static const int32_t values[] = {
        KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_OrderByTypeUnknown,
        KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_Id,
        KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_Title,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_OrderByTypeUnknown:
    case KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_Id:
    case KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_Title:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType

GPBEnumDescriptor *KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "DirectionTypeUnknown\000Desc\000Asc\000";
    static const int32_t values[] = {
        KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_DirectionTypeUnknown,
        KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_Desc,
        KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_Asc,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_DirectionTypeUnknown:
    case KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_Desc:
    case KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_Asc:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType

GPBEnumDescriptor *KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "OrderByTypeUnknown\000GroupId\000UserId\000";
    static const int32_t values[] = {
        KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_OrderByTypeUnknown,
        KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_GroupId,
        KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_UserId,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_OrderByTypeUnknown:
    case KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_GroupId:
    case KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_UserId:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType

GPBEnumDescriptor *KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "DirectionTypeUnknown\000Desc\000Asc\000";
    static const int32_t values[] = {
        KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_DirectionTypeUnknown,
        KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_Desc,
        KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_Asc,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_DirectionTypeUnknown:
    case KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_Desc:
    case KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_Asc:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType

GPBEnumDescriptor *KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "OrderByTypeUnknown\000Key\000Value\000";
    static const int32_t values[] = {
        KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_OrderByTypeUnknown,
        KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_Key,
        KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_Value,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_OrderByTypeUnknown:
    case KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_Key:
    case KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_Value:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType

GPBEnumDescriptor *KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "DirectionTypeUnknown\000Desc\000Asc\000";
    static const int32_t values[] = {
        KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_DirectionTypeUnknown,
        KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_Desc,
        KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_Asc,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_DirectionTypeUnknown:
    case KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_Desc:
    case KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_Asc:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest

@implementation KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest

@dynamic groupId;

typedef struct KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest__storage_ {
  uint32_t _has_storage_[1];
  NSString *groupId;
} KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "groupId",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest_FieldNumber_GroupId,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest__storage_, groupId),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest)
                                   messageName:@"PutGroupApiKeyCreateRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse

@implementation KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse

@dynamic typeOneOfCase;
@dynamic data_p;

typedef struct KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse__storage_ {
  uint32_t _has_storage_[2];
  NSString *data_p;
} KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse)
                                   messageName:@"PutGroupApiKeyCreateResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest

@implementation KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest

@dynamic groupId;

typedef struct KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest__storage_ {
  uint32_t _has_storage_[1];
  NSString *groupId;
} KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "groupId",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest_FieldNumber_GroupId,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest__storage_, groupId),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest)
                                   messageName:@"PutGroupApiKeyDeleteRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteResponse

@implementation KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteResponse


typedef struct KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteResponse__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteResponse)
                                   messageName:@"PutGroupApiKeyDeleteResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1Claim

@implementation KEYAPISACCESSMANAGEMENTV1Claim

@dynamic key;
@dynamic value;

typedef struct KEYAPISACCESSMANAGEMENTV1Claim__storage_ {
  uint32_t _has_storage_[1];
  NSString *key;
  NSString *value;
} KEYAPISACCESSMANAGEMENTV1Claim__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "key",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1Claim_FieldNumber_Key,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1Claim__storage_, key),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "value",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1Claim_FieldNumber_Value,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1Claim__storage_, value),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1Claim)
                                   messageName:@"Claim"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1Claim__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1UserGroup

@implementation KEYAPISACCESSMANAGEMENTV1UserGroup

@dynamic userId;
@dynamic groupId;

typedef struct KEYAPISACCESSMANAGEMENTV1UserGroup__storage_ {
  uint32_t _has_storage_[1];
  NSString *userId;
  NSString *groupId;
} KEYAPISACCESSMANAGEMENTV1UserGroup__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "userId",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1UserGroup_FieldNumber_UserId,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1UserGroup__storage_, userId),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "groupId",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1UserGroup_FieldNumber_GroupId,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1UserGroup__storage_, groupId),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1UserGroup)
                                   messageName:@"UserGroup"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1UserGroup__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1Group

@implementation KEYAPISACCESSMANAGEMENTV1Group

@dynamic id_p;
@dynamic title;
@dynamic description_p;
@dynamic claimsArray, claimsArray_Count;
@dynamic requirementsArray, requirementsArray_Count;
@dynamic hasDeletedAt, deletedAt;
@dynamic tagsArray, tagsArray_Count;

typedef struct KEYAPISACCESSMANAGEMENTV1Group__storage_ {
  uint32_t _has_storage_[1];
  NSString *id_p;
  NSString *title;
  NSString *description_p;
  NSMutableArray *claimsArray;
  NSMutableArray *requirementsArray;
  GPBTimestamp *deletedAt;
  NSMutableArray *tagsArray;
} KEYAPISACCESSMANAGEMENTV1Group__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "id_p",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_Id_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1Group__storage_, id_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "title",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_Title,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1Group__storage_, title),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "description_p",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_Description_p,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1Group__storage_, description_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "claimsArray",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1Claim),
        .number = KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_ClaimsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1Group__storage_, claimsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "requirementsArray",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1Claim),
        .number = KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_RequirementsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1Group__storage_, requirementsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "deletedAt",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBTimestamp),
        .number = KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_DeletedAt,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1Group__storage_, deletedAt),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "tagsArray",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_TagsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1Group__storage_, tagsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1Group)
                                   messageName:@"Group"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1Group__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupRequest

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupRequest

@dynamic id_p;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupRequest__storage_ {
  uint32_t _has_storage_[1];
  NSString *id_p;
} KEYAPISACCESSMANAGEMENTV1GetGroupRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "id_p",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupRequest_FieldNumber_Id_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupRequest__storage_, id_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupRequest)
                                   messageName:@"GetGroupRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupResponse

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupResponse

@dynamic typeOneOfCase;
@dynamic data_p;
@dynamic error;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1Group *data_p;
  KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error *error;
} KEYAPISACCESSMANAGEMENTV1GetGroupResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1Group),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupResponse)
                                   messageName:@"GetGroupResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1ValidationError *validation;
} KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "validation",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1ValidationError),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error_ClearReasonOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupListRequest

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupListRequest

@dynamic paginationOneOfCase;
@dynamic hasFilter, filter;
@dynamic paging;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupListRequest__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1GroupFilter *filter;
  KEYAPISACCESSMANAGEMENTV1GroupPaging *paging;
} KEYAPISACCESSMANAGEMENTV1GetGroupListRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "filter",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupFilter),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupListRequest_FieldNumber_Filter,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupListRequest__storage_, filter),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "paging",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupPaging),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupListRequest_FieldNumber_Paging,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupListRequest__storage_, paging),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupListRequest)
                                   messageName:@"GetGroupListRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupListRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "pagination",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupListRequest_ClearPaginationOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupListRequest *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupListRequest descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupListResponse

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupListResponse

@dynamic typeOneOfCase;
@dynamic data_p;
@dynamic error;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupListResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1Group *data_p;
  KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error *error;
} KEYAPISACCESSMANAGEMENTV1GetGroupListResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1Group),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse)
                                   messageName:@"GetGroupListResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupListResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1ValidationError *validation;
} KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "validation",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1ValidationError),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error_ClearReasonOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest

@dynamic hasFilter, filter;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISACCESSMANAGEMENTV1GroupFilter *filter;
} KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "filter",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupFilter),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest_FieldNumber_Filter,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest__storage_, filter),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest)
                                   messageName:@"GetGroupCountRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse

@dynamic typeOneOfCase;
@dynamic data_p;
@dynamic error;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse__storage_ {
  uint32_t _has_storage_[2];
  int32_t data_p;
  KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error *error;
} KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeInt32,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse)
                                   messageName:@"GetGroupCountResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1ValidationError *validation;
} KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "validation",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1ValidationError),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error_ClearReasonOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupFilter

@implementation KEYAPISACCESSMANAGEMENTV1GroupFilter

@dynamic text;
@dynamic requirements, requirements_Count;
@dynamic claims, claims_Count;
@dynamic tagsArray, tagsArray_Count;
@dynamic hasHideDeleted, hideDeleted;

typedef struct KEYAPISACCESSMANAGEMENTV1GroupFilter__storage_ {
  uint32_t _has_storage_[1];
  NSString *text;
  NSMutableDictionary *requirements;
  NSMutableDictionary *claims;
  NSMutableArray *tagsArray;
  GPBBoolValue *hideDeleted;
} KEYAPISACCESSMANAGEMENTV1GroupFilter__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "text",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupFilter_FieldNumber_Text,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupFilter__storage_, text),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "requirements",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupFilter_FieldNumber_Requirements,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupFilter__storage_, requirements),
        .flags = GPBFieldMapKeyString,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "claims",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupFilter_FieldNumber_Claims,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupFilter__storage_, claims),
        .flags = GPBFieldMapKeyString,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "tagsArray",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupFilter_FieldNumber_TagsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupFilter__storage_, tagsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "hideDeleted",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBBoolValue),
        .number = KEYAPISACCESSMANAGEMENTV1GroupFilter_FieldNumber_HideDeleted,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupFilter__storage_, hideDeleted),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupFilter)
                                   messageName:@"GroupFilter"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GroupFilter__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupPaging

@implementation KEYAPISACCESSMANAGEMENTV1GroupPaging

@dynamic orderByType;
@dynamic directionType;
@dynamic limit;
@dynamic offset;

typedef struct KEYAPISACCESSMANAGEMENTV1GroupPaging__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType orderByType;
  KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType directionType;
  int32_t limit;
  int32_t offset;
} KEYAPISACCESSMANAGEMENTV1GroupPaging__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "orderByType",
        .dataTypeSpecific.enumDescFunc = KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_EnumDescriptor,
        .number = KEYAPISACCESSMANAGEMENTV1GroupPaging_FieldNumber_OrderByType,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupPaging__storage_, orderByType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "directionType",
        .dataTypeSpecific.enumDescFunc = KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_EnumDescriptor,
        .number = KEYAPISACCESSMANAGEMENTV1GroupPaging_FieldNumber_DirectionType,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupPaging__storage_, directionType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "limit",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupPaging_FieldNumber_Limit,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupPaging__storage_, limit),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeInt32,
      },
      {
        .name = "offset",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupPaging_FieldNumber_Offset,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupPaging__storage_, offset),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeInt32,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupPaging)
                                   messageName:@"GroupPaging"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GroupPaging__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

int32_t KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupPaging *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GroupPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISACCESSMANAGEMENTV1GroupPaging_FieldNumber_OrderByType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupPaging *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GroupPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISACCESSMANAGEMENTV1GroupPaging_FieldNumber_OrderByType];
  GPBSetMessageRawEnumField(message, field, value);
}

int32_t KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupPaging *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GroupPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISACCESSMANAGEMENTV1GroupPaging_FieldNumber_DirectionType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupPaging *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GroupPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISACCESSMANAGEMENTV1GroupPaging_FieldNumber_DirectionType];
  GPBSetMessageRawEnumField(message, field, value);
}

#pragma mark - KEYAPISACCESSMANAGEMENTV1PostGroupRequest

@implementation KEYAPISACCESSMANAGEMENTV1PostGroupRequest

@dynamic hasData_p, data_p;

typedef struct KEYAPISACCESSMANAGEMENTV1PostGroupRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISACCESSMANAGEMENTV1Group *data_p;
} KEYAPISACCESSMANAGEMENTV1PostGroupRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1Group),
        .number = KEYAPISACCESSMANAGEMENTV1PostGroupRequest_FieldNumber_Data_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PostGroupRequest__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PostGroupRequest)
                                   messageName:@"PostGroupRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PostGroupRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest

@implementation KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest

@dynamic groupTemplateId;
@dynamic groupTitle;
@dynamic groupRequirementsArray, groupRequirementsArray_Count;

typedef struct KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest__storage_ {
  uint32_t _has_storage_[1];
  NSString *groupTemplateId;
  NSString *groupTitle;
  NSMutableArray *groupRequirementsArray;
} KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "groupTemplateId",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest_FieldNumber_GroupTemplateId,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest__storage_, groupTemplateId),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "groupTitle",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest_FieldNumber_GroupTitle,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest__storage_, groupTitle),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "groupRequirementsArray",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1Claim),
        .number = KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest_FieldNumber_GroupRequirementsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest__storage_, groupRequirementsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest)
                                   messageName:@"PostGroupByTemplateRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PostGroupResponse

@implementation KEYAPISACCESSMANAGEMENTV1PostGroupResponse

@dynamic typeOneOfCase;
@dynamic data_p;
@dynamic error;

typedef struct KEYAPISACCESSMANAGEMENTV1PostGroupResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1Group *data_p;
  KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error *error;
} KEYAPISACCESSMANAGEMENTV1PostGroupResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1Group),
        .number = KEYAPISACCESSMANAGEMENTV1PostGroupResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PostGroupResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error),
        .number = KEYAPISACCESSMANAGEMENTV1PostGroupResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PostGroupResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PostGroupResponse)
                                   messageName:@"PostGroupResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PostGroupResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1PostGroupResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1PostGroupResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1PostGroupResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error

@implementation KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1ValidationError *validation;
} KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "validation",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1ValidationError),
        .number = KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PostGroupResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error_ClearReasonOneOfCase(KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse

@implementation KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse

@dynamic typeOneOfCase;
@dynamic data_p;
@dynamic error;

typedef struct KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1Group *data_p;
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error *error;
} KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1Group),
        .number = KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error),
        .number = KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse)
                                   messageName:@"PostGroupByTemplateResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error

@implementation KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;
@dynamic groupTemplateNotFoundError;

typedef struct KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1ValidationError *validation;
  KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError *groupTemplateNotFoundError;
} KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "validation",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1ValidationError),
        .number = KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "groupTemplateNotFoundError",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError),
        .number = KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error_FieldNumber_GroupTemplateNotFoundError,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error__storage_, groupTemplateNotFoundError),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error_ClearReasonOneOfCase(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest

@implementation KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest

@dynamic id_p;

typedef struct KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest__storage_ {
  uint32_t _has_storage_[1];
  NSString *id_p;
} KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "id_p",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest_FieldNumber_Id_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest__storage_, id_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest)
                                   messageName:@"DeleteGroupRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1DeleteGroupResponse

@implementation KEYAPISACCESSMANAGEMENTV1DeleteGroupResponse


typedef struct KEYAPISACCESSMANAGEMENTV1DeleteGroupResponse__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISACCESSMANAGEMENTV1DeleteGroupResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1DeleteGroupResponse)
                                   messageName:@"DeleteGroupResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1DeleteGroupResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest

@implementation KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest

@dynamic hasUserGroup, userGroup;

typedef struct KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISACCESSMANAGEMENTV1UserGroup *userGroup;
} KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "userGroup",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1UserGroup),
        .number = KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest_FieldNumber_UserGroup,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest__storage_, userGroup),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest)
                                   messageName:@"PutGroupUserAttachRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachResponse

@implementation KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachResponse


typedef struct KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachResponse__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachResponse)
                                   messageName:@"PutGroupUserAttachResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest

@implementation KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest

@dynamic hasUserGroup, userGroup;

typedef struct KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISACCESSMANAGEMENTV1UserGroup *userGroup;
} KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "userGroup",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1UserGroup),
        .number = KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest_FieldNumber_UserGroup,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest__storage_, userGroup),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest)
                                   messageName:@"PutGroupUserDetachRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest

@dynamic paginationOneOfCase;
@dynamic hasFilter, filter;
@dynamic paging;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1GroupUserFilter *filter;
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging *paging;
} KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "filter",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupUserFilter),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest_FieldNumber_Filter,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest__storage_, filter),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "paging",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupUserPaging),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest_FieldNumber_Paging,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest__storage_, paging),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest)
                                   messageName:@"GetGroupUserListRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "pagination",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest_ClearPaginationOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupUserPaging

@implementation KEYAPISACCESSMANAGEMENTV1GroupUserPaging

@dynamic orderByType;
@dynamic directionType;
@dynamic limit;
@dynamic offset;

typedef struct KEYAPISACCESSMANAGEMENTV1GroupUserPaging__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType orderByType;
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType directionType;
  int32_t limit;
  int32_t offset;
} KEYAPISACCESSMANAGEMENTV1GroupUserPaging__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "orderByType",
        .dataTypeSpecific.enumDescFunc = KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_EnumDescriptor,
        .number = KEYAPISACCESSMANAGEMENTV1GroupUserPaging_FieldNumber_OrderByType,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupUserPaging__storage_, orderByType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "directionType",
        .dataTypeSpecific.enumDescFunc = KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_EnumDescriptor,
        .number = KEYAPISACCESSMANAGEMENTV1GroupUserPaging_FieldNumber_DirectionType,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupUserPaging__storage_, directionType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "limit",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupUserPaging_FieldNumber_Limit,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupUserPaging__storage_, limit),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeInt32,
      },
      {
        .name = "offset",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupUserPaging_FieldNumber_Offset,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupUserPaging__storage_, offset),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeInt32,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupUserPaging)
                                   messageName:@"GroupUserPaging"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GroupUserPaging__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

int32_t KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupUserPaging *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GroupUserPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISACCESSMANAGEMENTV1GroupUserPaging_FieldNumber_OrderByType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupUserPaging *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GroupUserPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISACCESSMANAGEMENTV1GroupUserPaging_FieldNumber_OrderByType];
  GPBSetMessageRawEnumField(message, field, value);
}

int32_t KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupUserPaging *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GroupUserPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISACCESSMANAGEMENTV1GroupUserPaging_FieldNumber_DirectionType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupUserPaging *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GroupUserPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISACCESSMANAGEMENTV1GroupUserPaging_FieldNumber_DirectionType];
  GPBSetMessageRawEnumField(message, field, value);
}

#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupUserFilter

@implementation KEYAPISACCESSMANAGEMENTV1GroupUserFilter

@dynamic groupIdsArray, groupIdsArray_Count;
@dynamic userIdsArray, userIdsArray_Count;

typedef struct KEYAPISACCESSMANAGEMENTV1GroupUserFilter__storage_ {
  uint32_t _has_storage_[1];
  NSMutableArray *groupIdsArray;
  NSMutableArray *userIdsArray;
} KEYAPISACCESSMANAGEMENTV1GroupUserFilter__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "groupIdsArray",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupUserFilter_FieldNumber_GroupIdsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupUserFilter__storage_, groupIdsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "userIdsArray",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupUserFilter_FieldNumber_UserIdsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupUserFilter__storage_, userIdsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupUserFilter)
                                   messageName:@"GroupUserFilter"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GroupUserFilter__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse

@dynamic typeOneOfCase;
@dynamic data_p;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1UserGroup *data_p;
} KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1UserGroup),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse)
                                   messageName:@"GetGroupUserListResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest

@dynamic hasFilter, filter;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISACCESSMANAGEMENTV1GroupUserFilter *filter;
} KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "filter",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupUserFilter),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest_FieldNumber_Filter,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest__storage_, filter),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest)
                                   messageName:@"GetGroupUserCountRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse

@dynamic typeOneOfCase;
@dynamic data_p;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse__storage_ {
  uint32_t _has_storage_[2];
  int32_t data_p;
} KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeInt32,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse)
                                   messageName:@"GetGroupUserCountResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachResponse

@implementation KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachResponse


typedef struct KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachResponse__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachResponse)
                                   messageName:@"PutGroupUserDetachResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest

@dynamic hasFilter, filter;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISACCESSMANAGEMENTV1GroupClaimFilter *filter;
} KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "filter",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest_FieldNumber_Filter,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest__storage_, filter),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest)
                                   messageName:@"GetGroupClaimCountRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse

@dynamic typeOneOfCase;
@dynamic data_p;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse__storage_ {
  uint32_t _has_storage_[2];
  int32_t data_p;
} KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeInt32,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse)
                                   messageName:@"GetGroupClaimCountResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest

@dynamic hasFilter, filter;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISACCESSMANAGEMENTV1GroupClaimFilter *filter;
} KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "filter",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest_FieldNumber_Filter,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest__storage_, filter),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest)
                                   messageName:@"GetGroupClaimExistRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse

@dynamic typeOneOfCase;
@dynamic data_p;
@dynamic error;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error *error;
} KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = 0,  // Stored in _has_storage_ to save space.
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeBool,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse)
                                   messageName:@"GetGroupClaimExistResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error

@dynamic reasonOneOfCase;
@dynamic claimFilterEmpty;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClaimFilterEmptyError *claimFilterEmpty;
} KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "claimFilterEmpty",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClaimFilterEmptyError),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_FieldNumber_ClaimFilterEmpty,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error__storage_, claimFilterEmpty),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "reason",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClearReasonOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClaimFilterEmptyError

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClaimFilterEmptyError


typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClaimFilterEmptyError__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClaimFilterEmptyError__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClaimFilterEmptyError)
                                   messageName:@"ClaimFilterEmptyError"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClaimFilterEmptyError__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest

@dynamic paginationOneOfCase;
@dynamic hasFilter, filter;
@dynamic paging;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1GroupClaimFilter *filter;
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging *paging;
} KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "filter",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest_FieldNumber_Filter,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest__storage_, filter),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "paging",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest_FieldNumber_Paging,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest__storage_, paging),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest)
                                   messageName:@"GetGroupClaimListRequest"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "pagination",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest_ClearPaginationOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse

@implementation KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse

@dynamic typeOneOfCase;
@dynamic data_p;

typedef struct KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISACCESSMANAGEMENTV1Claim *data_p;
} KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "data_p",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1Claim),
        .number = KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse)
                                   messageName:@"GetGroupClaimListResponse"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    static const char *oneofs[] = {
      "type",
    };
    [localDescriptor setupOneofs:oneofs
                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
                   firstHasIndex:-1];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

void KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupClaimFilter

@implementation KEYAPISACCESSMANAGEMENTV1GroupClaimFilter

@dynamic hasUserId, userId;
@dynamic claims, claims_Count;
@dynamic hasUserData, userData;
@dynamic apiKeyHash;

typedef struct KEYAPISACCESSMANAGEMENTV1GroupClaimFilter__storage_ {
  uint32_t _has_storage_[1];
  GPBStringValue *userId;
  NSMutableDictionary *claims;
  KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData *userData;
  NSString *apiKeyHash;
} KEYAPISACCESSMANAGEMENTV1GroupClaimFilter__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "userId",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBStringValue),
        .number = KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_FieldNumber_UserId,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter__storage_, userId),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "claims",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_FieldNumber_Claims,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter__storage_, claims),
        .flags = GPBFieldMapKeyString,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "userData",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData),
        .number = KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_FieldNumber_UserData,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter__storage_, userData),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "apiKeyHash",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_FieldNumber_ApiKeyHash,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter__storage_, apiKeyHash),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter)
                                   messageName:@"GroupClaimFilter"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData

@implementation KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData

@dynamic claims, claims_Count;

typedef struct KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData__storage_ {
  uint32_t _has_storage_[1];
  NSMutableDictionary *claims;
} KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "claims",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData_FieldNumber_Claims,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData__storage_, claims),
        .flags = GPBFieldMapKeyString,
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData)
                                   messageName:@"UserData"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupClaimPaging

@implementation KEYAPISACCESSMANAGEMENTV1GroupClaimPaging

@dynamic orderByType;
@dynamic directionType;
@dynamic limit;
@dynamic offset;

typedef struct KEYAPISACCESSMANAGEMENTV1GroupClaimPaging__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType orderByType;
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType directionType;
  int32_t limit;
  int32_t offset;
} KEYAPISACCESSMANAGEMENTV1GroupClaimPaging__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "orderByType",
        .dataTypeSpecific.enumDescFunc = KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_EnumDescriptor,
        .number = KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_FieldNumber_OrderByType,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging__storage_, orderByType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "directionType",
        .dataTypeSpecific.enumDescFunc = KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_EnumDescriptor,
        .number = KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_FieldNumber_DirectionType,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging__storage_, directionType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "limit",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_FieldNumber_Limit,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging__storage_, limit),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeInt32,
      },
      {
        .name = "offset",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_FieldNumber_Offset,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging__storage_, offset),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeInt32,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging)
                                   messageName:@"GroupClaimPaging"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

int32_t KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GroupClaimPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_FieldNumber_OrderByType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GroupClaimPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_FieldNumber_OrderByType];
  GPBSetMessageRawEnumField(message, field, value);
}

int32_t KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging *message) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GroupClaimPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_FieldNumber_DirectionType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISACCESSMANAGEMENTV1GroupClaimPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_FieldNumber_DirectionType];
  GPBSetMessageRawEnumField(message, field, value);
}

#pragma mark - KEYAPISACCESSMANAGEMENTV1ValidationError

@implementation KEYAPISACCESSMANAGEMENTV1ValidationError

@dynamic path;
@dynamic message;

typedef struct KEYAPISACCESSMANAGEMENTV1ValidationError__storage_ {
  uint32_t _has_storage_[1];
  NSString *path;
  NSString *message;
} KEYAPISACCESSMANAGEMENTV1ValidationError__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "path",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1ValidationError_FieldNumber_Path,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1ValidationError__storage_, path),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "message",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1ValidationError_FieldNumber_Message,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1ValidationError__storage_, message),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1ValidationError)
                                   messageName:@"ValidationError"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1ValidationError__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError

@implementation KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError

@dynamic groupTemplateId;
@dynamic message;

typedef struct KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError__storage_ {
  uint32_t _has_storage_[1];
  NSString *groupTemplateId;
  NSString *message;
} KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError__storage_;

// This method is threadsafe because it is initially called
// in +initialize for each subclass.
+ (GPBDescriptor *)descriptor {
  static GPBDescriptor *descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static GPBMessageFieldDescription fields[] = {
      {
        .name = "groupTemplateId",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError_FieldNumber_GroupTemplateId,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError__storage_, groupTemplateId),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "message",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError_FieldNumber_Message,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError__storage_, message),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError)
                                   messageName:@"GroupTemplateNotFoundError"
                               fileDescription:&KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end


#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
