// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/multiapp/v1/keyapis_multiapp_app_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/multiapp/v1/KeyapisMultiappAppV1.pbobjc.h"
#import "google/api/Annotations.pbobjc.h"
#import "google/api/FieldBehavior.pbobjc.h"
#import "google/protobuf/Descriptor.pbobjc.h"
#import "google/api/Visibility.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(GPBStringValue);
GPBObjCClassDeclaration(GPBTimestamp);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1App);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1AppFilter);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1AppLite);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1AppLiteFilter);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1AppLitePaging);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1AppLite_LinkLite);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1AppPaging);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1App_Link);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1App_Permissions);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1App_SavingError);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1App_SavingError_Conflict);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1App_SavingError_PartnerIsDeleted);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1App_SavingError_PartnerIsNotExist);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1DeleteAppRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1DeleteAppResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1DeleteAppResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppCodeRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppCodeResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppCodeResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppCodeResponse_Error_AppIsInactive);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppCodeResponse_Error_PartnerKeyDoesNotExist);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppCountRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppCountResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppCountResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppListRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppListResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppListResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppLiteCountRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppLiteCountResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppLiteCountResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppLiteListRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppLiteListResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppLiteListResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppLiteRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppLiteResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppLiteResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1GetAppResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PostAppRequest);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PostAppResponse);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1PostAppResponse_Error);
GPBObjCClassDeclaration(KEYAPISMULTIAPPV1ValidationError);

#pragma mark - KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root

@implementation KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root

+ (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]];
    [registry addExtensions:[GAPIVisibilityRoot extensionRegistry]];
  }
  return registry;
}

@end

static GPBFileDescription KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription = {
  .package = "keyapis.multiapp.v1",
  .prefix = "KEYAPISMULTIAPPV1",
  .syntax = GPBFileSyntaxProto3
};

#pragma mark - Enum KEYAPISMULTIAPPV1App_Type

GPBEnumDescriptor *KEYAPISMULTIAPPV1App_Type_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "TypeUnknown\000Standard\000";
    static const int32_t values[] = {
        KEYAPISMULTIAPPV1App_Type_TypeUnknown,
        KEYAPISMULTIAPPV1App_Type_Standard,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISMULTIAPPV1App_Type)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISMULTIAPPV1App_Type_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISMULTIAPPV1App_Type_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISMULTIAPPV1App_Type_TypeUnknown:
    case KEYAPISMULTIAPPV1App_Type_Standard:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISMULTIAPPV1App_StatusType

GPBEnumDescriptor *KEYAPISMULTIAPPV1App_StatusType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "StatusTypeUnknown\000Blocked\000Active\000Deleted"
        "\000";
    static const int32_t values[] = {
        KEYAPISMULTIAPPV1App_StatusType_StatusTypeUnknown,
        KEYAPISMULTIAPPV1App_StatusType_Blocked,
        KEYAPISMULTIAPPV1App_StatusType_Active,
        KEYAPISMULTIAPPV1App_StatusType_Deleted,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISMULTIAPPV1App_StatusType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISMULTIAPPV1App_StatusType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISMULTIAPPV1App_StatusType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISMULTIAPPV1App_StatusType_StatusTypeUnknown:
    case KEYAPISMULTIAPPV1App_StatusType_Blocked:
    case KEYAPISMULTIAPPV1App_StatusType_Active:
    case KEYAPISMULTIAPPV1App_StatusType_Deleted:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISMULTIAPPV1App_PlatformType

GPBEnumDescriptor *KEYAPISMULTIAPPV1App_PlatformType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "PlatformTypeUnknown\000Ios\000Android\000Web\000";
    static const int32_t values[] = {
        KEYAPISMULTIAPPV1App_PlatformType_PlatformTypeUnknown,
        KEYAPISMULTIAPPV1App_PlatformType_Ios,
        KEYAPISMULTIAPPV1App_PlatformType_Android,
        KEYAPISMULTIAPPV1App_PlatformType_Web,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISMULTIAPPV1App_PlatformType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISMULTIAPPV1App_PlatformType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISMULTIAPPV1App_PlatformType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISMULTIAPPV1App_PlatformType_PlatformTypeUnknown:
    case KEYAPISMULTIAPPV1App_PlatformType_Ios:
    case KEYAPISMULTIAPPV1App_PlatformType_Android:
    case KEYAPISMULTIAPPV1App_PlatformType_Web:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISMULTIAPPV1App_GrantType

GPBEnumDescriptor *KEYAPISMULTIAPPV1App_GrantType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "GrantTypeUnknown\000GetAccessToken\000GetIdTok"
        "en\000PostNotifNoAssignCheck\000";
    static const int32_t values[] = {
        KEYAPISMULTIAPPV1App_GrantType_GrantTypeUnknown,
        KEYAPISMULTIAPPV1App_GrantType_GetAccessToken,
        KEYAPISMULTIAPPV1App_GrantType_GetIdToken,
        KEYAPISMULTIAPPV1App_GrantType_PostNotifNoAssignCheck,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISMULTIAPPV1App_GrantType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISMULTIAPPV1App_GrantType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISMULTIAPPV1App_GrantType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISMULTIAPPV1App_GrantType_GrantTypeUnknown:
    case KEYAPISMULTIAPPV1App_GrantType_GetAccessToken:
    case KEYAPISMULTIAPPV1App_GrantType_GetIdToken:
    case KEYAPISMULTIAPPV1App_GrantType_PostNotifNoAssignCheck:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISMULTIAPPV1App_Link_Type

GPBEnumDescriptor *KEYAPISMULTIAPPV1App_Link_Type_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "TypeUnknown\000InternalApp\000ExternalApp\000WebV"
        "iew\000WebBrowser\000ExternalWebView\000";
    static const int32_t values[] = {
        KEYAPISMULTIAPPV1App_Link_Type_TypeUnknown,
        KEYAPISMULTIAPPV1App_Link_Type_InternalApp,
        KEYAPISMULTIAPPV1App_Link_Type_ExternalApp,
        KEYAPISMULTIAPPV1App_Link_Type_WebView,
        KEYAPISMULTIAPPV1App_Link_Type_WebBrowser,
        KEYAPISMULTIAPPV1App_Link_Type_ExternalWebView,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISMULTIAPPV1App_Link_Type)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISMULTIAPPV1App_Link_Type_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISMULTIAPPV1App_Link_Type_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISMULTIAPPV1App_Link_Type_TypeUnknown:
    case KEYAPISMULTIAPPV1App_Link_Type_InternalApp:
    case KEYAPISMULTIAPPV1App_Link_Type_ExternalApp:
    case KEYAPISMULTIAPPV1App_Link_Type_WebView:
    case KEYAPISMULTIAPPV1App_Link_Type_WebBrowser:
    case KEYAPISMULTIAPPV1App_Link_Type_ExternalWebView:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISMULTIAPPV1App_Permissions_AllowedTokenType

GPBEnumDescriptor *KEYAPISMULTIAPPV1App_Permissions_AllowedTokenType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "AllowedTokenTypeUnknown\000Id\000Access\000";
    static const int32_t values[] = {
        KEYAPISMULTIAPPV1App_Permissions_AllowedTokenType_AllowedTokenTypeUnknown,
        KEYAPISMULTIAPPV1App_Permissions_AllowedTokenType_Id,
        KEYAPISMULTIAPPV1App_Permissions_AllowedTokenType_Access,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISMULTIAPPV1App_Permissions_AllowedTokenType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISMULTIAPPV1App_Permissions_AllowedTokenType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISMULTIAPPV1App_Permissions_AllowedTokenType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISMULTIAPPV1App_Permissions_AllowedTokenType_AllowedTokenTypeUnknown:
    case KEYAPISMULTIAPPV1App_Permissions_AllowedTokenType_Id:
    case KEYAPISMULTIAPPV1App_Permissions_AllowedTokenType_Access:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISMULTIAPPV1AppPaging_OrderByType

GPBEnumDescriptor *KEYAPISMULTIAPPV1AppPaging_OrderByType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "OrderByTypeUnknown\000ChangedAt\000CreatedAt\000R"
        "ank\000";
    static const int32_t values[] = {
        KEYAPISMULTIAPPV1AppPaging_OrderByType_OrderByTypeUnknown,
        KEYAPISMULTIAPPV1AppPaging_OrderByType_ChangedAt,
        KEYAPISMULTIAPPV1AppPaging_OrderByType_CreatedAt,
        KEYAPISMULTIAPPV1AppPaging_OrderByType_Rank,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISMULTIAPPV1AppPaging_OrderByType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISMULTIAPPV1AppPaging_OrderByType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISMULTIAPPV1AppPaging_OrderByType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISMULTIAPPV1AppPaging_OrderByType_OrderByTypeUnknown:
    case KEYAPISMULTIAPPV1AppPaging_OrderByType_ChangedAt:
    case KEYAPISMULTIAPPV1AppPaging_OrderByType_CreatedAt:
    case KEYAPISMULTIAPPV1AppPaging_OrderByType_Rank:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISMULTIAPPV1AppPaging_DirectionType

GPBEnumDescriptor *KEYAPISMULTIAPPV1AppPaging_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[] = {
        KEYAPISMULTIAPPV1AppPaging_DirectionType_DirectionTypeUnknown,
        KEYAPISMULTIAPPV1AppPaging_DirectionType_Desc,
        KEYAPISMULTIAPPV1AppPaging_DirectionType_Asc,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISMULTIAPPV1AppPaging_DirectionType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISMULTIAPPV1AppPaging_DirectionType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISMULTIAPPV1AppPaging_DirectionType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISMULTIAPPV1AppPaging_DirectionType_DirectionTypeUnknown:
    case KEYAPISMULTIAPPV1AppPaging_DirectionType_Desc:
    case KEYAPISMULTIAPPV1AppPaging_DirectionType_Asc:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISMULTIAPPV1AppLitePaging_OrderByType

GPBEnumDescriptor *KEYAPISMULTIAPPV1AppLitePaging_OrderByType_EnumDescriptor(void) {
  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
  if (!descriptor) {
    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
    static const char *valueNames =
        "OrderByTypeUnknown\000ChangedAt\000CreatedAt\000";
    static const int32_t values[] = {
        KEYAPISMULTIAPPV1AppLitePaging_OrderByType_OrderByTypeUnknown,
        KEYAPISMULTIAPPV1AppLitePaging_OrderByType_ChangedAt,
        KEYAPISMULTIAPPV1AppLitePaging_OrderByType_CreatedAt,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISMULTIAPPV1AppLitePaging_OrderByType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISMULTIAPPV1AppLitePaging_OrderByType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISMULTIAPPV1AppLitePaging_OrderByType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISMULTIAPPV1AppLitePaging_OrderByType_OrderByTypeUnknown:
    case KEYAPISMULTIAPPV1AppLitePaging_OrderByType_ChangedAt:
    case KEYAPISMULTIAPPV1AppLitePaging_OrderByType_CreatedAt:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - Enum KEYAPISMULTIAPPV1AppLitePaging_DirectionType

GPBEnumDescriptor *KEYAPISMULTIAPPV1AppLitePaging_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[] = {
        KEYAPISMULTIAPPV1AppLitePaging_DirectionType_DirectionTypeUnknown,
        KEYAPISMULTIAPPV1AppLitePaging_DirectionType_Desc,
        KEYAPISMULTIAPPV1AppLitePaging_DirectionType_Asc,
    };
    GPBEnumDescriptor *worker =
        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(KEYAPISMULTIAPPV1AppLitePaging_DirectionType)
                                       valueNames:valueNames
                                           values:values
                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
                                     enumVerifier:KEYAPISMULTIAPPV1AppLitePaging_DirectionType_IsValidValue
                                            flags:GPBEnumDescriptorInitializationFlag_None];
    GPBEnumDescriptor *expected = nil;
    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
      [worker release];
    }
  }
  return descriptor;
}

BOOL KEYAPISMULTIAPPV1AppLitePaging_DirectionType_IsValidValue(int32_t value__) {
  switch (value__) {
    case KEYAPISMULTIAPPV1AppLitePaging_DirectionType_DirectionTypeUnknown:
    case KEYAPISMULTIAPPV1AppLitePaging_DirectionType_Desc:
    case KEYAPISMULTIAPPV1AppLitePaging_DirectionType_Asc:
      return YES;
    default:
      return NO;
  }
}

#pragma mark - KEYAPISMULTIAPPV1App

@implementation KEYAPISMULTIAPPV1App

@dynamic id_p;
@dynamic partnerId;
@dynamic type;
@dynamic title;
@dynamic hasHeader, header;
@dynamic hasSubtitle, subtitle;
@dynamic hasBackgroundColor, backgroundColor;
@dynamic statusType;
@dynamic linksArray, linksArray_Count;
@dynamic userTagsArray, userTagsArray_Count;
@dynamic appTagsArray, appTagsArray_Count;
@dynamic hasCreatedAt, createdAt;
@dynamic hasChangedAt, changedAt;
@dynamic hasPermissions, permissions;
@dynamic grantTypesArray, grantTypesArray_Count;

typedef struct KEYAPISMULTIAPPV1App__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1App_Type type;
  KEYAPISMULTIAPPV1App_StatusType statusType;
  NSString *id_p;
  NSString *partnerId;
  NSString *title;
  GPBStringValue *header;
  GPBStringValue *subtitle;
  GPBStringValue *backgroundColor;
  NSMutableArray *linksArray;
  NSMutableArray *userTagsArray;
  NSMutableArray *appTagsArray;
  GPBTimestamp *createdAt;
  GPBTimestamp *changedAt;
  KEYAPISMULTIAPPV1App_Permissions *permissions;
  GPBEnumArray *grantTypesArray;
} KEYAPISMULTIAPPV1App__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 = KEYAPISMULTIAPPV1App_FieldNumber_Id_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, id_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "partnerId",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1App_FieldNumber_PartnerId,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, partnerId),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "type",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1App_Type_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1App_FieldNumber_Type,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, type),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "title",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1App_FieldNumber_Title,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, title),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "header",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBStringValue),
        .number = KEYAPISMULTIAPPV1App_FieldNumber_Header,
        .hasIndex = 4,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, header),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "subtitle",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBStringValue),
        .number = KEYAPISMULTIAPPV1App_FieldNumber_Subtitle,
        .hasIndex = 5,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, subtitle),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "backgroundColor",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBStringValue),
        .number = KEYAPISMULTIAPPV1App_FieldNumber_BackgroundColor,
        .hasIndex = 6,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, backgroundColor),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "statusType",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1App_StatusType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1App_FieldNumber_StatusType,
        .hasIndex = 7,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, statusType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "linksArray",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1App_Link),
        .number = KEYAPISMULTIAPPV1App_FieldNumber_LinksArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, linksArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "userTagsArray",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1App_FieldNumber_UserTagsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, userTagsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "appTagsArray",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1App_FieldNumber_AppTagsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, appTagsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "createdAt",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBTimestamp),
        .number = KEYAPISMULTIAPPV1App_FieldNumber_CreatedAt,
        .hasIndex = 8,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, createdAt),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "changedAt",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBTimestamp),
        .number = KEYAPISMULTIAPPV1App_FieldNumber_ChangedAt,
        .hasIndex = 9,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, changedAt),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "permissions",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1App_Permissions),
        .number = KEYAPISMULTIAPPV1App_FieldNumber_Permissions,
        .hasIndex = 10,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, permissions),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "grantTypesArray",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1App_GrantType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1App_FieldNumber_GrantTypesArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App__storage_, grantTypesArray),
        .flags = (GPBFieldFlags)(GPBFieldRepeated | GPBFieldPacked | GPBFieldHasEnumDescriptor),
        .dataType = GPBDataTypeEnum,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1App)
                                   messageName:@"App"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1App__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 KEYAPISMULTIAPPV1App_Type_RawValue(KEYAPISMULTIAPPV1App *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1App descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1App_FieldNumber_Type];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1App_Type_RawValue(KEYAPISMULTIAPPV1App *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1App descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1App_FieldNumber_Type];
  GPBSetMessageRawEnumField(message, field, value);
}

int32_t KEYAPISMULTIAPPV1App_StatusType_RawValue(KEYAPISMULTIAPPV1App *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1App descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1App_FieldNumber_StatusType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1App_StatusType_RawValue(KEYAPISMULTIAPPV1App *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1App descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1App_FieldNumber_StatusType];
  GPBSetMessageRawEnumField(message, field, value);
}

#pragma mark - KEYAPISMULTIAPPV1App_Link

@implementation KEYAPISMULTIAPPV1App_Link

@dynamic platformType;
@dynamic type;
@dynamic URL;
@dynamic packagesArray, packagesArray_Count;

typedef struct KEYAPISMULTIAPPV1App_Link__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1App_PlatformType platformType;
  KEYAPISMULTIAPPV1App_Link_Type type;
  NSString *URL;
  NSMutableArray *packagesArray;
} KEYAPISMULTIAPPV1App_Link__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 = "platformType",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1App_PlatformType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1App_Link_FieldNumber_PlatformType,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App_Link__storage_, platformType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "type",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1App_Link_Type_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1App_Link_FieldNumber_Type,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App_Link__storage_, type),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "URL",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1App_Link_FieldNumber_URL,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App_Link__storage_, URL),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldTextFormatNameCustom | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "packagesArray",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1App_Link_FieldNumber_PackagesArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App_Link__storage_, packagesArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1App_Link)
                                   messageName:@"Link"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1App_Link__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
#if !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS
    static const char *extraTextFormatInfo =
        "\001\003!!!\000";
    [localDescriptor setupExtraTextInfo:extraTextFormatInfo];
#endif  // !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1App)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

int32_t KEYAPISMULTIAPPV1App_Link_PlatformType_RawValue(KEYAPISMULTIAPPV1App_Link *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1App_Link descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1App_Link_FieldNumber_PlatformType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1App_Link_PlatformType_RawValue(KEYAPISMULTIAPPV1App_Link *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1App_Link descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1App_Link_FieldNumber_PlatformType];
  GPBSetMessageRawEnumField(message, field, value);
}

int32_t KEYAPISMULTIAPPV1App_Link_Type_RawValue(KEYAPISMULTIAPPV1App_Link *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1App_Link descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1App_Link_FieldNumber_Type];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1App_Link_Type_RawValue(KEYAPISMULTIAPPV1App_Link *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1App_Link descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1App_Link_FieldNumber_Type];
  GPBSetMessageRawEnumField(message, field, value);
}

#pragma mark - KEYAPISMULTIAPPV1App_Permissions

@implementation KEYAPISMULTIAPPV1App_Permissions

@dynamic allowedTokenTypesArray, allowedTokenTypesArray_Count;

typedef struct KEYAPISMULTIAPPV1App_Permissions__storage_ {
  uint32_t _has_storage_[1];
  GPBEnumArray *allowedTokenTypesArray;
} KEYAPISMULTIAPPV1App_Permissions__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 = "allowedTokenTypesArray",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1App_Permissions_AllowedTokenType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1App_Permissions_FieldNumber_AllowedTokenTypesArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App_Permissions__storage_, allowedTokenTypesArray),
        .flags = (GPBFieldFlags)(GPBFieldRepeated | GPBFieldPacked | GPBFieldHasEnumDescriptor),
        .dataType = GPBDataTypeEnum,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1App_Permissions)
                                   messageName:@"Permissions"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1App_Permissions__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1App)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1App_SavingError

@implementation KEYAPISMULTIAPPV1App_SavingError

@dynamic reasonOneOfCase;
@dynamic conflict;
@dynamic partnerIsNotExist;
@dynamic partnerIsDeleted;

typedef struct KEYAPISMULTIAPPV1App_SavingError__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1App_SavingError_Conflict *conflict;
  KEYAPISMULTIAPPV1App_SavingError_PartnerIsNotExist *partnerIsNotExist;
  KEYAPISMULTIAPPV1App_SavingError_PartnerIsDeleted *partnerIsDeleted;
} KEYAPISMULTIAPPV1App_SavingError__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 = "conflict",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1App_SavingError_Conflict),
        .number = KEYAPISMULTIAPPV1App_SavingError_FieldNumber_Conflict,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App_SavingError__storage_, conflict),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "partnerIsNotExist",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1App_SavingError_PartnerIsNotExist),
        .number = KEYAPISMULTIAPPV1App_SavingError_FieldNumber_PartnerIsNotExist,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App_SavingError__storage_, partnerIsNotExist),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "partnerIsDeleted",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1App_SavingError_PartnerIsDeleted),
        .number = KEYAPISMULTIAPPV1App_SavingError_FieldNumber_PartnerIsDeleted,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1App_SavingError__storage_, partnerIsDeleted),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1App_SavingError)
                                   messageName:@"SavingError"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1App_SavingError__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(KEYAPISMULTIAPPV1App)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

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

@implementation KEYAPISMULTIAPPV1App_SavingError_Conflict


typedef struct KEYAPISMULTIAPPV1App_SavingError_Conflict__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISMULTIAPPV1App_SavingError_Conflict__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(KEYAPISMULTIAPPV1App_SavingError_Conflict)
                                   messageName:@"Conflict"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISMULTIAPPV1App_SavingError_Conflict__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1App_SavingError)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1App_SavingError_PartnerIsNotExist

@implementation KEYAPISMULTIAPPV1App_SavingError_PartnerIsNotExist


typedef struct KEYAPISMULTIAPPV1App_SavingError_PartnerIsNotExist__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISMULTIAPPV1App_SavingError_PartnerIsNotExist__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(KEYAPISMULTIAPPV1App_SavingError_PartnerIsNotExist)
                                   messageName:@"PartnerIsNotExist"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISMULTIAPPV1App_SavingError_PartnerIsNotExist__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1App_SavingError)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1App_SavingError_PartnerIsDeleted

@implementation KEYAPISMULTIAPPV1App_SavingError_PartnerIsDeleted


typedef struct KEYAPISMULTIAPPV1App_SavingError_PartnerIsDeleted__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISMULTIAPPV1App_SavingError_PartnerIsDeleted__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(KEYAPISMULTIAPPV1App_SavingError_PartnerIsDeleted)
                                   messageName:@"PartnerIsDeleted"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISMULTIAPPV1App_SavingError_PartnerIsDeleted__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1App_SavingError)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1AppLite

@implementation KEYAPISMULTIAPPV1AppLite

@dynamic id_p;
@dynamic title;
@dynamic hasHeader, header;
@dynamic hasSubtitle, subtitle;
@dynamic hasBackgroundColor, backgroundColor;
@dynamic statusType;
@dynamic linksArray, linksArray_Count;

typedef struct KEYAPISMULTIAPPV1AppLite__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1App_StatusType statusType;
  NSString *id_p;
  NSString *title;
  GPBStringValue *header;
  GPBStringValue *subtitle;
  GPBStringValue *backgroundColor;
  NSMutableArray *linksArray;
} KEYAPISMULTIAPPV1AppLite__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 = KEYAPISMULTIAPPV1AppLite_FieldNumber_Id_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLite__storage_, id_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "title",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1AppLite_FieldNumber_Title,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLite__storage_, title),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "header",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBStringValue),
        .number = KEYAPISMULTIAPPV1AppLite_FieldNumber_Header,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLite__storage_, header),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "subtitle",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBStringValue),
        .number = KEYAPISMULTIAPPV1AppLite_FieldNumber_Subtitle,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLite__storage_, subtitle),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "backgroundColor",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBStringValue),
        .number = KEYAPISMULTIAPPV1AppLite_FieldNumber_BackgroundColor,
        .hasIndex = 4,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLite__storage_, backgroundColor),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "statusType",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1App_StatusType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1AppLite_FieldNumber_StatusType,
        .hasIndex = 5,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLite__storage_, statusType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "linksArray",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1AppLite_LinkLite),
        .number = KEYAPISMULTIAPPV1AppLite_FieldNumber_LinksArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLite__storage_, linksArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1AppLite)
                                   messageName:@"AppLite"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1AppLite__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 KEYAPISMULTIAPPV1AppLite_StatusType_RawValue(KEYAPISMULTIAPPV1AppLite *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppLite descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppLite_FieldNumber_StatusType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1AppLite_StatusType_RawValue(KEYAPISMULTIAPPV1AppLite *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppLite descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppLite_FieldNumber_StatusType];
  GPBSetMessageRawEnumField(message, field, value);
}

#pragma mark - KEYAPISMULTIAPPV1AppLite_LinkLite

@implementation KEYAPISMULTIAPPV1AppLite_LinkLite

@dynamic platformType;
@dynamic type;
@dynamic URL;
@dynamic packagesArray, packagesArray_Count;

typedef struct KEYAPISMULTIAPPV1AppLite_LinkLite__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1App_PlatformType platformType;
  KEYAPISMULTIAPPV1App_Link_Type type;
  NSString *URL;
  NSMutableArray *packagesArray;
} KEYAPISMULTIAPPV1AppLite_LinkLite__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 = "platformType",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1App_PlatformType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1AppLite_LinkLite_FieldNumber_PlatformType,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLite_LinkLite__storage_, platformType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "type",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1App_Link_Type_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1AppLite_LinkLite_FieldNumber_Type,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLite_LinkLite__storage_, type),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "URL",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1AppLite_LinkLite_FieldNumber_URL,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLite_LinkLite__storage_, URL),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldTextFormatNameCustom | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "packagesArray",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1AppLite_LinkLite_FieldNumber_PackagesArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLite_LinkLite__storage_, packagesArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1AppLite_LinkLite)
                                   messageName:@"LinkLite"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1AppLite_LinkLite__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
#if !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS
    static const char *extraTextFormatInfo =
        "\001\003!!!\000";
    [localDescriptor setupExtraTextInfo:extraTextFormatInfo];
#endif  // !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1AppLite)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

int32_t KEYAPISMULTIAPPV1AppLite_LinkLite_PlatformType_RawValue(KEYAPISMULTIAPPV1AppLite_LinkLite *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppLite_LinkLite descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppLite_LinkLite_FieldNumber_PlatformType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1AppLite_LinkLite_PlatformType_RawValue(KEYAPISMULTIAPPV1AppLite_LinkLite *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppLite_LinkLite descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppLite_LinkLite_FieldNumber_PlatformType];
  GPBSetMessageRawEnumField(message, field, value);
}

int32_t KEYAPISMULTIAPPV1AppLite_LinkLite_Type_RawValue(KEYAPISMULTIAPPV1AppLite_LinkLite *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppLite_LinkLite descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppLite_LinkLite_FieldNumber_Type];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1AppLite_LinkLite_Type_RawValue(KEYAPISMULTIAPPV1AppLite_LinkLite *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppLite_LinkLite descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppLite_LinkLite_FieldNumber_Type];
  GPBSetMessageRawEnumField(message, field, value);
}

#pragma mark - KEYAPISMULTIAPPV1AppFilter

@implementation KEYAPISMULTIAPPV1AppFilter

@dynamic hasText, text;
@dynamic typesArray, typesArray_Count;
@dynamic partnerIdsArray, partnerIdsArray_Count;
@dynamic statusTypesArray, statusTypesArray_Count;
@dynamic userTagsArray, userTagsArray_Count;
@dynamic appTagsArray, appTagsArray_Count;

typedef struct KEYAPISMULTIAPPV1AppFilter__storage_ {
  uint32_t _has_storage_[1];
  GPBStringValue *text;
  GPBEnumArray *typesArray;
  NSMutableArray *partnerIdsArray;
  GPBEnumArray *statusTypesArray;
  NSMutableArray *userTagsArray;
  NSMutableArray *appTagsArray;
} KEYAPISMULTIAPPV1AppFilter__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 = GPBObjCClass(GPBStringValue),
        .number = KEYAPISMULTIAPPV1AppFilter_FieldNumber_Text,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppFilter__storage_, text),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "typesArray",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1App_Type_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1AppFilter_FieldNumber_TypesArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppFilter__storage_, typesArray),
        .flags = (GPBFieldFlags)(GPBFieldRepeated | GPBFieldPacked | GPBFieldHasEnumDescriptor),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "partnerIdsArray",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1AppFilter_FieldNumber_PartnerIdsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppFilter__storage_, partnerIdsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "statusTypesArray",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1App_StatusType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1AppFilter_FieldNumber_StatusTypesArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppFilter__storage_, statusTypesArray),
        .flags = (GPBFieldFlags)(GPBFieldRepeated | GPBFieldPacked | GPBFieldHasEnumDescriptor),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "userTagsArray",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1AppFilter_FieldNumber_UserTagsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppFilter__storage_, userTagsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "appTagsArray",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1AppFilter_FieldNumber_AppTagsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppFilter__storage_, appTagsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1AppFilter)
                                   messageName:@"AppFilter"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1AppFilter__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 - KEYAPISMULTIAPPV1AppLiteFilter

@implementation KEYAPISMULTIAPPV1AppLiteFilter

@dynamic typesArray, typesArray_Count;
@dynamic userTagsArray, userTagsArray_Count;
@dynamic hasAppLiteTag, appLiteTag;

typedef struct KEYAPISMULTIAPPV1AppLiteFilter__storage_ {
  uint32_t _has_storage_[1];
  GPBEnumArray *typesArray;
  NSMutableArray *userTagsArray;
  KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag *appLiteTag;
} KEYAPISMULTIAPPV1AppLiteFilter__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 = "typesArray",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1App_Type_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1AppLiteFilter_FieldNumber_TypesArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLiteFilter__storage_, typesArray),
        .flags = (GPBFieldFlags)(GPBFieldRepeated | GPBFieldPacked | GPBFieldHasEnumDescriptor),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "userTagsArray",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1AppLiteFilter_FieldNumber_UserTagsArray,
        .hasIndex = GPBNoHasBit,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLiteFilter__storage_, userTagsArray),
        .flags = GPBFieldRepeated,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "appLiteTag",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag),
        .number = KEYAPISMULTIAPPV1AppLiteFilter_FieldNumber_AppLiteTag,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLiteFilter__storage_, appLiteTag),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1AppLiteFilter)
                                   messageName:@"AppLiteFilter"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1AppLiteFilter__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 - KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag

@implementation KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag

@dynamic platformType;
@dynamic hasAppName, appName;

typedef struct KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1App_PlatformType platformType;
  GPBStringValue *appName;
} KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag__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 = "platformType",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1App_PlatformType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag_FieldNumber_PlatformType,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag__storage_, platformType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "appName",
        .dataTypeSpecific.clazz = GPBObjCClass(GPBStringValue),
        .number = KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag_FieldNumber_AppName,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag__storage_, appName),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag)
                                   messageName:@"AppLiteTag"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1AppLiteFilter)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

int32_t KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag_PlatformType_RawValue(KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag_FieldNumber_PlatformType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag_PlatformType_RawValue(KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppLiteFilter_AppLiteTag_FieldNumber_PlatformType];
  GPBSetMessageRawEnumField(message, field, value);
}

#pragma mark - KEYAPISMULTIAPPV1AppPaging

@implementation KEYAPISMULTIAPPV1AppPaging

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

typedef struct KEYAPISMULTIAPPV1AppPaging__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1AppPaging_OrderByType orderByType;
  KEYAPISMULTIAPPV1AppPaging_DirectionType directionType;
  int32_t limit;
  int32_t offset;
} KEYAPISMULTIAPPV1AppPaging__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 = KEYAPISMULTIAPPV1AppPaging_OrderByType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1AppPaging_FieldNumber_OrderByType,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppPaging__storage_, orderByType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "directionType",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1AppPaging_DirectionType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1AppPaging_FieldNumber_DirectionType,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppPaging__storage_, directionType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "limit",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1AppPaging_FieldNumber_Limit,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppPaging__storage_, limit),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeInt32,
      },
      {
        .name = "offset",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1AppPaging_FieldNumber_Offset,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppPaging__storage_, offset),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeInt32,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1AppPaging)
                                   messageName:@"AppPaging"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1AppPaging__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 KEYAPISMULTIAPPV1AppPaging_OrderByType_RawValue(KEYAPISMULTIAPPV1AppPaging *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppPaging_FieldNumber_OrderByType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1AppPaging_OrderByType_RawValue(KEYAPISMULTIAPPV1AppPaging *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppPaging_FieldNumber_OrderByType];
  GPBSetMessageRawEnumField(message, field, value);
}

int32_t KEYAPISMULTIAPPV1AppPaging_DirectionType_RawValue(KEYAPISMULTIAPPV1AppPaging *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppPaging_FieldNumber_DirectionType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1AppPaging_DirectionType_RawValue(KEYAPISMULTIAPPV1AppPaging *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppPaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppPaging_FieldNumber_DirectionType];
  GPBSetMessageRawEnumField(message, field, value);
}

#pragma mark - KEYAPISMULTIAPPV1AppLitePaging

@implementation KEYAPISMULTIAPPV1AppLitePaging

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

typedef struct KEYAPISMULTIAPPV1AppLitePaging__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1AppLitePaging_OrderByType orderByType;
  KEYAPISMULTIAPPV1AppLitePaging_DirectionType directionType;
  int32_t limit;
  int32_t offset;
} KEYAPISMULTIAPPV1AppLitePaging__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 = KEYAPISMULTIAPPV1AppLitePaging_OrderByType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1AppLitePaging_FieldNumber_OrderByType,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLitePaging__storage_, orderByType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "directionType",
        .dataTypeSpecific.enumDescFunc = KEYAPISMULTIAPPV1AppLitePaging_DirectionType_EnumDescriptor,
        .number = KEYAPISMULTIAPPV1AppLitePaging_FieldNumber_DirectionType,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLitePaging__storage_, directionType),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeEnum,
      },
      {
        .name = "limit",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1AppLitePaging_FieldNumber_Limit,
        .hasIndex = 2,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLitePaging__storage_, limit),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeInt32,
      },
      {
        .name = "offset",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1AppLitePaging_FieldNumber_Offset,
        .hasIndex = 3,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1AppLitePaging__storage_, offset),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeInt32,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1AppLitePaging)
                                   messageName:@"AppLitePaging"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1AppLitePaging__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 KEYAPISMULTIAPPV1AppLitePaging_OrderByType_RawValue(KEYAPISMULTIAPPV1AppLitePaging *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppLitePaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppLitePaging_FieldNumber_OrderByType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1AppLitePaging_OrderByType_RawValue(KEYAPISMULTIAPPV1AppLitePaging *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppLitePaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppLitePaging_FieldNumber_OrderByType];
  GPBSetMessageRawEnumField(message, field, value);
}

int32_t KEYAPISMULTIAPPV1AppLitePaging_DirectionType_RawValue(KEYAPISMULTIAPPV1AppLitePaging *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppLitePaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppLitePaging_FieldNumber_DirectionType];
  return GPBGetMessageRawEnumField(message, field);
}

void SetKEYAPISMULTIAPPV1AppLitePaging_DirectionType_RawValue(KEYAPISMULTIAPPV1AppLitePaging *message, int32_t value) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1AppLitePaging descriptor];
  GPBFieldDescriptor *field = [descriptor fieldWithNumber:KEYAPISMULTIAPPV1AppLitePaging_FieldNumber_DirectionType];
  GPBSetMessageRawEnumField(message, field, value);
}

#pragma mark - KEYAPISMULTIAPPV1PostAppRequest

@implementation KEYAPISMULTIAPPV1PostAppRequest

@dynamic hasData_p, data_p;

typedef struct KEYAPISMULTIAPPV1PostAppRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1App *data_p;
} KEYAPISMULTIAPPV1PostAppRequest__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(KEYAPISMULTIAPPV1App),
        .number = KEYAPISMULTIAPPV1PostAppRequest_FieldNumber_Data_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PostAppRequest__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PostAppRequest)
                                   messageName:@"PostAppRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PostAppRequest__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 - KEYAPISMULTIAPPV1PostAppResponse

@implementation KEYAPISMULTIAPPV1PostAppResponse

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

typedef struct KEYAPISMULTIAPPV1PostAppResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1App *data_p;
  KEYAPISMULTIAPPV1PostAppResponse_Error *error;
} KEYAPISMULTIAPPV1PostAppResponse__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(KEYAPISMULTIAPPV1App),
        .number = KEYAPISMULTIAPPV1PostAppResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PostAppResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1PostAppResponse_Error),
        .number = KEYAPISMULTIAPPV1PostAppResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PostAppResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PostAppResponse)
                                   messageName:@"PostAppResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PostAppResponse__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 KEYAPISMULTIAPPV1PostAppResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1PostAppResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1PostAppResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1PostAppResponse_Error

@implementation KEYAPISMULTIAPPV1PostAppResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;
@dynamic saving;

typedef struct KEYAPISMULTIAPPV1PostAppResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
  KEYAPISMULTIAPPV1App_SavingError *saving;
} KEYAPISMULTIAPPV1PostAppResponse_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(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1PostAppResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PostAppResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "saving",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1App_SavingError),
        .number = KEYAPISMULTIAPPV1PostAppResponse_Error_FieldNumber_Saving,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1PostAppResponse_Error__storage_, saving),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1PostAppResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1PostAppResponse_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(KEYAPISMULTIAPPV1PostAppResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

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

@implementation KEYAPISMULTIAPPV1GetAppRequest

@dynamic id_p;

typedef struct KEYAPISMULTIAPPV1GetAppRequest__storage_ {
  uint32_t _has_storage_[1];
  NSString *id_p;
} KEYAPISMULTIAPPV1GetAppRequest__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 = KEYAPISMULTIAPPV1GetAppRequest_FieldNumber_Id_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppRequest__storage_, id_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppRequest)
                                   messageName:@"GetAppRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppRequest__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 - KEYAPISMULTIAPPV1GetAppResponse

@implementation KEYAPISMULTIAPPV1GetAppResponse

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

typedef struct KEYAPISMULTIAPPV1GetAppResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1App *data_p;
  KEYAPISMULTIAPPV1GetAppResponse_Error *error;
} KEYAPISMULTIAPPV1GetAppResponse__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(KEYAPISMULTIAPPV1App),
        .number = KEYAPISMULTIAPPV1GetAppResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1GetAppResponse_Error),
        .number = KEYAPISMULTIAPPV1GetAppResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppResponse)
                                   messageName:@"GetAppResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppResponse__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 KEYAPISMULTIAPPV1GetAppResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1GetAppResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetAppResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetAppResponse_Error

@implementation KEYAPISMULTIAPPV1GetAppResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISMULTIAPPV1GetAppResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
} KEYAPISMULTIAPPV1GetAppResponse_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(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1GetAppResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppResponse_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(KEYAPISMULTIAPPV1GetAppResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

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

@implementation KEYAPISMULTIAPPV1GetAppLiteRequest

@dynamic id_p;

typedef struct KEYAPISMULTIAPPV1GetAppLiteRequest__storage_ {
  uint32_t _has_storage_[1];
  NSString *id_p;
} KEYAPISMULTIAPPV1GetAppLiteRequest__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 = KEYAPISMULTIAPPV1GetAppLiteRequest_FieldNumber_Id_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppLiteRequest__storage_, id_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppLiteRequest)
                                   messageName:@"GetAppLiteRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppLiteRequest__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 - KEYAPISMULTIAPPV1GetAppLiteResponse

@implementation KEYAPISMULTIAPPV1GetAppLiteResponse

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

typedef struct KEYAPISMULTIAPPV1GetAppLiteResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1AppLite *data_p;
  KEYAPISMULTIAPPV1GetAppLiteResponse_Error *error;
} KEYAPISMULTIAPPV1GetAppLiteResponse__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(KEYAPISMULTIAPPV1AppLite),
        .number = KEYAPISMULTIAPPV1GetAppLiteResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppLiteResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1GetAppLiteResponse_Error),
        .number = KEYAPISMULTIAPPV1GetAppLiteResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppLiteResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppLiteResponse)
                                   messageName:@"GetAppLiteResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppLiteResponse__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 KEYAPISMULTIAPPV1GetAppLiteResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1GetAppLiteResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetAppLiteResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetAppLiteResponse_Error

@implementation KEYAPISMULTIAPPV1GetAppLiteResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISMULTIAPPV1GetAppLiteResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
} KEYAPISMULTIAPPV1GetAppLiteResponse_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(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1GetAppLiteResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppLiteResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppLiteResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppLiteResponse_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(KEYAPISMULTIAPPV1GetAppLiteResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

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

@implementation KEYAPISMULTIAPPV1GetAppListRequest

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

typedef struct KEYAPISMULTIAPPV1GetAppListRequest__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1AppFilter *filter;
  KEYAPISMULTIAPPV1AppPaging *paging;
} KEYAPISMULTIAPPV1GetAppListRequest__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(KEYAPISMULTIAPPV1AppFilter),
        .number = KEYAPISMULTIAPPV1GetAppListRequest_FieldNumber_Filter,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppListRequest__storage_, filter),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "paging",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1AppPaging),
        .number = KEYAPISMULTIAPPV1GetAppListRequest_FieldNumber_Paging,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppListRequest__storage_, paging),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppListRequest)
                                   messageName:@"GetAppListRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppListRequest__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 KEYAPISMULTIAPPV1GetAppListRequest_ClearPaginationOneOfCase(KEYAPISMULTIAPPV1GetAppListRequest *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetAppListRequest descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetAppListResponse

@implementation KEYAPISMULTIAPPV1GetAppListResponse

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

typedef struct KEYAPISMULTIAPPV1GetAppListResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1App *data_p;
  KEYAPISMULTIAPPV1GetAppListResponse_Error *error;
} KEYAPISMULTIAPPV1GetAppListResponse__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(KEYAPISMULTIAPPV1App),
        .number = KEYAPISMULTIAPPV1GetAppListResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppListResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1GetAppListResponse_Error),
        .number = KEYAPISMULTIAPPV1GetAppListResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppListResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppListResponse)
                                   messageName:@"GetAppListResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppListResponse__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 KEYAPISMULTIAPPV1GetAppListResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1GetAppListResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetAppListResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetAppListResponse_Error

@implementation KEYAPISMULTIAPPV1GetAppListResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISMULTIAPPV1GetAppListResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
} KEYAPISMULTIAPPV1GetAppListResponse_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(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1GetAppListResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppListResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppListResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppListResponse_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(KEYAPISMULTIAPPV1GetAppListResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

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

@implementation KEYAPISMULTIAPPV1GetAppLiteListRequest

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

typedef struct KEYAPISMULTIAPPV1GetAppLiteListRequest__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1AppLiteFilter *filter;
  KEYAPISMULTIAPPV1AppLitePaging *paging;
} KEYAPISMULTIAPPV1GetAppLiteListRequest__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(KEYAPISMULTIAPPV1AppLiteFilter),
        .number = KEYAPISMULTIAPPV1GetAppLiteListRequest_FieldNumber_Filter,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppLiteListRequest__storage_, filter),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "paging",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1AppLitePaging),
        .number = KEYAPISMULTIAPPV1GetAppLiteListRequest_FieldNumber_Paging,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppLiteListRequest__storage_, paging),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppLiteListRequest)
                                   messageName:@"GetAppLiteListRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppLiteListRequest__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 KEYAPISMULTIAPPV1GetAppLiteListRequest_ClearPaginationOneOfCase(KEYAPISMULTIAPPV1GetAppLiteListRequest *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetAppLiteListRequest descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetAppLiteListResponse

@implementation KEYAPISMULTIAPPV1GetAppLiteListResponse

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

typedef struct KEYAPISMULTIAPPV1GetAppLiteListResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1AppLite *data_p;
  KEYAPISMULTIAPPV1GetAppLiteListResponse_Error *error;
} KEYAPISMULTIAPPV1GetAppLiteListResponse__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(KEYAPISMULTIAPPV1AppLite),
        .number = KEYAPISMULTIAPPV1GetAppLiteListResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppLiteListResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1GetAppLiteListResponse_Error),
        .number = KEYAPISMULTIAPPV1GetAppLiteListResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppLiteListResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppLiteListResponse)
                                   messageName:@"GetAppLiteListResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppLiteListResponse__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 KEYAPISMULTIAPPV1GetAppLiteListResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1GetAppLiteListResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetAppLiteListResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetAppLiteListResponse_Error

@implementation KEYAPISMULTIAPPV1GetAppLiteListResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISMULTIAPPV1GetAppLiteListResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
} KEYAPISMULTIAPPV1GetAppLiteListResponse_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(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1GetAppLiteListResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppLiteListResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppLiteListResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppLiteListResponse_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(KEYAPISMULTIAPPV1GetAppLiteListResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

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

@implementation KEYAPISMULTIAPPV1GetAppLiteCountRequest

@dynamic hasFilter, filter;

typedef struct KEYAPISMULTIAPPV1GetAppLiteCountRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1AppLiteFilter *filter;
} KEYAPISMULTIAPPV1GetAppLiteCountRequest__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(KEYAPISMULTIAPPV1AppLiteFilter),
        .number = KEYAPISMULTIAPPV1GetAppLiteCountRequest_FieldNumber_Filter,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppLiteCountRequest__storage_, filter),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppLiteCountRequest)
                                   messageName:@"GetAppLiteCountRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppLiteCountRequest__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 - KEYAPISMULTIAPPV1GetAppLiteCountResponse

@implementation KEYAPISMULTIAPPV1GetAppLiteCountResponse

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

typedef struct KEYAPISMULTIAPPV1GetAppLiteCountResponse__storage_ {
  uint32_t _has_storage_[2];
  int32_t data_p;
  KEYAPISMULTIAPPV1GetAppLiteCountResponse_Error *error;
} KEYAPISMULTIAPPV1GetAppLiteCountResponse__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 = KEYAPISMULTIAPPV1GetAppLiteCountResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppLiteCountResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeInt32,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1GetAppLiteCountResponse_Error),
        .number = KEYAPISMULTIAPPV1GetAppLiteCountResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppLiteCountResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppLiteCountResponse)
                                   messageName:@"GetAppLiteCountResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppLiteCountResponse__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 KEYAPISMULTIAPPV1GetAppLiteCountResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1GetAppLiteCountResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetAppLiteCountResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetAppLiteCountResponse_Error

@implementation KEYAPISMULTIAPPV1GetAppLiteCountResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISMULTIAPPV1GetAppLiteCountResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
} KEYAPISMULTIAPPV1GetAppLiteCountResponse_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(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1GetAppLiteCountResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppLiteCountResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppLiteCountResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppLiteCountResponse_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(KEYAPISMULTIAPPV1GetAppLiteCountResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

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

@implementation KEYAPISMULTIAPPV1GetAppCountRequest

@dynamic hasFilter, filter;

typedef struct KEYAPISMULTIAPPV1GetAppCountRequest__storage_ {
  uint32_t _has_storage_[1];
  KEYAPISMULTIAPPV1AppFilter *filter;
} KEYAPISMULTIAPPV1GetAppCountRequest__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(KEYAPISMULTIAPPV1AppFilter),
        .number = KEYAPISMULTIAPPV1GetAppCountRequest_FieldNumber_Filter,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppCountRequest__storage_, filter),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppCountRequest)
                                   messageName:@"GetAppCountRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppCountRequest__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 - KEYAPISMULTIAPPV1GetAppCountResponse

@implementation KEYAPISMULTIAPPV1GetAppCountResponse

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

typedef struct KEYAPISMULTIAPPV1GetAppCountResponse__storage_ {
  uint32_t _has_storage_[2];
  int32_t data_p;
  KEYAPISMULTIAPPV1GetAppCountResponse_Error *error;
} KEYAPISMULTIAPPV1GetAppCountResponse__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 = KEYAPISMULTIAPPV1GetAppCountResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppCountResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeInt32,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1GetAppCountResponse_Error),
        .number = KEYAPISMULTIAPPV1GetAppCountResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppCountResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppCountResponse)
                                   messageName:@"GetAppCountResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppCountResponse__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 KEYAPISMULTIAPPV1GetAppCountResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1GetAppCountResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetAppCountResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetAppCountResponse_Error

@implementation KEYAPISMULTIAPPV1GetAppCountResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISMULTIAPPV1GetAppCountResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
} KEYAPISMULTIAPPV1GetAppCountResponse_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(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1GetAppCountResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppCountResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppCountResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppCountResponse_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(KEYAPISMULTIAPPV1GetAppCountResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

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

@implementation KEYAPISMULTIAPPV1GetAppCodeRequest

@dynamic id_p;

typedef struct KEYAPISMULTIAPPV1GetAppCodeRequest__storage_ {
  uint32_t _has_storage_[1];
  NSString *id_p;
} KEYAPISMULTIAPPV1GetAppCodeRequest__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 = KEYAPISMULTIAPPV1GetAppCodeRequest_FieldNumber_Id_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppCodeRequest__storage_, id_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppCodeRequest)
                                   messageName:@"GetAppCodeRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppCodeRequest__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 - KEYAPISMULTIAPPV1GetAppCodeResponse

@implementation KEYAPISMULTIAPPV1GetAppCodeResponse

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

typedef struct KEYAPISMULTIAPPV1GetAppCodeResponse__storage_ {
  uint32_t _has_storage_[2];
  NSString *data_p;
  KEYAPISMULTIAPPV1GetAppCodeResponse_Error *error;
} KEYAPISMULTIAPPV1GetAppCodeResponse__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 = KEYAPISMULTIAPPV1GetAppCodeResponse_FieldNumber_Data_p,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppCodeResponse__storage_, data_p),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeString,
      },
      {
        .name = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1GetAppCodeResponse_Error),
        .number = KEYAPISMULTIAPPV1GetAppCodeResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppCodeResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppCodeResponse)
                                   messageName:@"GetAppCodeResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppCodeResponse__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 KEYAPISMULTIAPPV1GetAppCodeResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1GetAppCodeResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1GetAppCodeResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1GetAppCodeResponse_Error

@implementation KEYAPISMULTIAPPV1GetAppCodeResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;
@dynamic partnerKeyDoesNotExist;
@dynamic appIsInactive;

typedef struct KEYAPISMULTIAPPV1GetAppCodeResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
  KEYAPISMULTIAPPV1GetAppCodeResponse_Error_PartnerKeyDoesNotExist *partnerKeyDoesNotExist;
  KEYAPISMULTIAPPV1GetAppCodeResponse_Error_AppIsInactive *appIsInactive;
} KEYAPISMULTIAPPV1GetAppCodeResponse_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(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1GetAppCodeResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppCodeResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "partnerKeyDoesNotExist",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1GetAppCodeResponse_Error_PartnerKeyDoesNotExist),
        .number = KEYAPISMULTIAPPV1GetAppCodeResponse_Error_FieldNumber_PartnerKeyDoesNotExist,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppCodeResponse_Error__storage_, partnerKeyDoesNotExist),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
      {
        .name = "appIsInactive",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1GetAppCodeResponse_Error_AppIsInactive),
        .number = KEYAPISMULTIAPPV1GetAppCodeResponse_Error_FieldNumber_AppIsInactive,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1GetAppCodeResponse_Error__storage_, appIsInactive),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppCodeResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppCodeResponse_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(KEYAPISMULTIAPPV1GetAppCodeResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

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

@implementation KEYAPISMULTIAPPV1GetAppCodeResponse_Error_PartnerKeyDoesNotExist


typedef struct KEYAPISMULTIAPPV1GetAppCodeResponse_Error_PartnerKeyDoesNotExist__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISMULTIAPPV1GetAppCodeResponse_Error_PartnerKeyDoesNotExist__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(KEYAPISMULTIAPPV1GetAppCodeResponse_Error_PartnerKeyDoesNotExist)
                                   messageName:@"PartnerKeyDoesNotExist"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppCodeResponse_Error_PartnerKeyDoesNotExist__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppCodeResponse_Error)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1GetAppCodeResponse_Error_AppIsInactive

@implementation KEYAPISMULTIAPPV1GetAppCodeResponse_Error_AppIsInactive


typedef struct KEYAPISMULTIAPPV1GetAppCodeResponse_Error_AppIsInactive__storage_ {
  uint32_t _has_storage_[1];
} KEYAPISMULTIAPPV1GetAppCodeResponse_Error_AppIsInactive__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(KEYAPISMULTIAPPV1GetAppCodeResponse_Error_AppIsInactive)
                                   messageName:@"AppIsInactive"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:NULL
                                    fieldCount:0
                                   storageSize:sizeof(KEYAPISMULTIAPPV1GetAppCodeResponse_Error_AppIsInactive__storage_)
                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)];
    [localDescriptor setupContainingMessageClass:GPBObjCClass(KEYAPISMULTIAPPV1GetAppCodeResponse_Error)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

#pragma mark - KEYAPISMULTIAPPV1DeleteAppRequest

@implementation KEYAPISMULTIAPPV1DeleteAppRequest

@dynamic id_p;

typedef struct KEYAPISMULTIAPPV1DeleteAppRequest__storage_ {
  uint32_t _has_storage_[1];
  NSString *id_p;
} KEYAPISMULTIAPPV1DeleteAppRequest__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 = KEYAPISMULTIAPPV1DeleteAppRequest_FieldNumber_Id_p,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1DeleteAppRequest__storage_, id_p),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1DeleteAppRequest)
                                   messageName:@"DeleteAppRequest"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1DeleteAppRequest__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 - KEYAPISMULTIAPPV1DeleteAppResponse

@implementation KEYAPISMULTIAPPV1DeleteAppResponse

@dynamic typeOneOfCase;
@dynamic error;

typedef struct KEYAPISMULTIAPPV1DeleteAppResponse__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1DeleteAppResponse_Error *error;
} KEYAPISMULTIAPPV1DeleteAppResponse__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 = "error",
        .dataTypeSpecific.clazz = GPBObjCClass(KEYAPISMULTIAPPV1DeleteAppResponse_Error),
        .number = KEYAPISMULTIAPPV1DeleteAppResponse_FieldNumber_Error,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1DeleteAppResponse__storage_, error),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1DeleteAppResponse)
                                   messageName:@"DeleteAppResponse"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1DeleteAppResponse__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 KEYAPISMULTIAPPV1DeleteAppResponse_ClearTypeOneOfCase(KEYAPISMULTIAPPV1DeleteAppResponse *message) {
  GPBDescriptor *descriptor = [KEYAPISMULTIAPPV1DeleteAppResponse descriptor];
  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
  GPBClearOneof(message, oneof);
}
#pragma mark - KEYAPISMULTIAPPV1DeleteAppResponse_Error

@implementation KEYAPISMULTIAPPV1DeleteAppResponse_Error

@dynamic reasonOneOfCase;
@dynamic validation;

typedef struct KEYAPISMULTIAPPV1DeleteAppResponse_Error__storage_ {
  uint32_t _has_storage_[2];
  KEYAPISMULTIAPPV1ValidationError *validation;
} KEYAPISMULTIAPPV1DeleteAppResponse_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(KEYAPISMULTIAPPV1ValidationError),
        .number = KEYAPISMULTIAPPV1DeleteAppResponse_Error_FieldNumber_Validation,
        .hasIndex = -1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1DeleteAppResponse_Error__storage_, validation),
        .flags = GPBFieldOptional,
        .dataType = GPBDataTypeMessage,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1DeleteAppResponse_Error)
                                   messageName:@"Error"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1DeleteAppResponse_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(KEYAPISMULTIAPPV1DeleteAppResponse)];
    #if defined(DEBUG) && DEBUG
      NSAssert(descriptor == nil, @"Startup recursed!");
    #endif  // DEBUG
    descriptor = localDescriptor;
  }
  return descriptor;
}

@end

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

@implementation KEYAPISMULTIAPPV1ValidationError

@dynamic path;
@dynamic message;

typedef struct KEYAPISMULTIAPPV1ValidationError__storage_ {
  uint32_t _has_storage_[1];
  NSString *path;
  NSString *message;
} KEYAPISMULTIAPPV1ValidationError__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 = KEYAPISMULTIAPPV1ValidationError_FieldNumber_Path,
        .hasIndex = 0,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1ValidationError__storage_, path),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
      {
        .name = "message",
        .dataTypeSpecific.clazz = Nil,
        .number = KEYAPISMULTIAPPV1ValidationError_FieldNumber_Message,
        .hasIndex = 1,
        .offset = (uint32_t)offsetof(KEYAPISMULTIAPPV1ValidationError__storage_, message),
        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero),
        .dataType = GPBDataTypeString,
      },
    };
    GPBDescriptor *localDescriptor =
        [GPBDescriptor allocDescriptorForClass:GPBObjCClass(KEYAPISMULTIAPPV1ValidationError)
                                   messageName:@"ValidationError"
                               fileDescription:&KEYAPISMULTIAPPV1KeyapisMultiappAppV1Root_FileDescription
                                        fields:fields
                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
                                   storageSize:sizeof(KEYAPISMULTIAPPV1ValidationError__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
