// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: keyapis/notification/v1/keyapis_notification_push_token_v1.proto

package ru.keyapis.notification.v1;

public final class KeyapisNotificationV1Proto {
  private KeyapisNotificationV1Proto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface PushTokenOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PushToken)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Идентификатор.
     * # Диапазон: 0..2147483647
     * </pre>
     *
     * <code>int32 id = 1;</code>
     * @return The id.
     */
    int getId();

    /**
     * <pre>
     * Тип
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken.Type type = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The enum numeric value on the wire for type.
     */
    int getTypeValue();
    /**
     * <pre>
     * Тип
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken.Type type = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The type.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type getType();

    /**
     * <pre>
     * Токен.
     * # Диапазон: 16..256
     * </pre>
     *
     * <code>string token = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The token.
     */
    java.lang.String getToken();
    /**
     * <pre>
     * Токен.
     * # Диапазон: 16..256
     * </pre>
     *
     * <code>string token = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for token.
     */
    com.google.protobuf.ByteString
        getTokenBytes();

    /**
     * <pre>
     * Идентификатор устройства пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>string user_app_id = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userAppId.
     */
    java.lang.String getUserAppId();
    /**
     * <pre>
     * Идентификатор устройства пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>string user_app_id = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for userAppId.
     */
    com.google.protobuf.ByteString
        getUserAppIdBytes();

    /**
     * <pre>
     * Идентификатор пользователя.
     * # Диапазон: 1..2147483647
     * </pre>
     *
     * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return Whether the userId field is set.
     */
    boolean hasUserId();
    /**
     * <pre>
     * Идентификатор пользователя.
     * # Диапазон: 1..2147483647
     * </pre>
     *
     * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return The userId.
     */
    com.google.protobuf.Int32Value getUserId();
    /**
     * <pre>
     * Идентификатор пользователя.
     * # Диапазон: 1..2147483647
     * </pre>
     *
     * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     */
    com.google.protobuf.Int32ValueOrBuilder getUserIdOrBuilder();

    /**
     * <pre>
     * Дата и время создания.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return Whether the createdAt field is set.
     */
    boolean hasCreatedAt();
    /**
     * <pre>
     * Дата и время создания.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return The createdAt.
     */
    com.google.protobuf.Timestamp getCreatedAt();
    /**
     * <pre>
     * Дата и время создания.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     */
    com.google.protobuf.TimestampOrBuilder getCreatedAtOrBuilder();

    /**
     * <pre>
     * Дата последнего изменения.
     * Заполняется и обновляется сервером.
     * Заполняется при создании и изменении.
     * Является версией объекта.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return Whether the changedAt field is set.
     */
    boolean hasChangedAt();
    /**
     * <pre>
     * Дата последнего изменения.
     * Заполняется и обновляется сервером.
     * Заполняется при создании и изменении.
     * Является версией объекта.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return The changedAt.
     */
    com.google.protobuf.Timestamp getChangedAt();
    /**
     * <pre>
     * Дата последнего изменения.
     * Заполняется и обновляется сервером.
     * Заполняется при создании и изменении.
     * Является версией объекта.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     */
    com.google.protobuf.TimestampOrBuilder getChangedAtOrBuilder();

    /**
     * <pre>
     * Версия приложения.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string app_version = 8 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The appVersion.
     */
    java.lang.String getAppVersion();
    /**
     * <pre>
     * Версия приложения.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string app_version = 8 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for appVersion.
     */
    com.google.protobuf.ByteString
        getAppVersionBytes();
  }
  /**
   * <pre>
   * Пуш-токен.
   * # Описание модели
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.PushToken}
   */
  public static final class PushToken extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PushToken)
      PushTokenOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PushToken.newBuilder() to construct.
    private PushToken(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PushToken() {
      type_ = 0;
      token_ = "";
      userAppId_ = "";
      appVersion_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PushToken();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder.class);
    }

    /**
     * <pre>
     * Справочников типов пуш-токенов.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.notification.v1.PushToken.Type}
     */
    public enum Type
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Не указан
       * </pre>
       *
       * <code>TYPE_UNKNOWN = 0;</code>
       */
      TYPE_UNKNOWN(0),
      /**
       * <pre>
       * Для Mobile Firebase Cloud Messaging
       * </pre>
       *
       * <code>MOBILE_FCM = 1;</code>
       */
      MOBILE_FCM(1),
      /**
       * <pre>
       * Для Mobile Huawei Messaging System
       * </pre>
       *
       * <code>MOBILE_HMS = 2;</code>
       */
      MOBILE_HMS(2),
      /**
       * <pre>
       * Для Mobile Apple PushToken System для текста
       * </pre>
       *
       * <code>MOBILE_APNS_TEXT = 3;</code>
       */
      MOBILE_APNS_TEXT(3),
      /**
       * <pre>
       * Для Mobile Apple PushToken System для звонков
       * </pre>
       *
       * <code>MOBILE_APNS_CALL = 4;</code>
       */
      MOBILE_APNS_CALL(4),
      /**
       * <pre>
       * Для PWA Firebase Cloud Messaging
       * </pre>
       *
       * <code>PWA_FCM = 5;</code>
       */
      PWA_FCM(5),
      /**
       * <pre>
       * Для PWA Apple PushToken System
       * </pre>
       *
       * <code>PWA_APNS = 6;</code>
       */
      PWA_APNS(6),
      /**
       * <pre>
       * Для Mobile RuStore
       * </pre>
       *
       * <code>MOBILE_RUSTORE = 7;</code>
       */
      MOBILE_RUSTORE(7),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Не указан
       * </pre>
       *
       * <code>TYPE_UNKNOWN = 0;</code>
       */
      public static final int TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * Для Mobile Firebase Cloud Messaging
       * </pre>
       *
       * <code>MOBILE_FCM = 1;</code>
       */
      public static final int MOBILE_FCM_VALUE = 1;
      /**
       * <pre>
       * Для Mobile Huawei Messaging System
       * </pre>
       *
       * <code>MOBILE_HMS = 2;</code>
       */
      public static final int MOBILE_HMS_VALUE = 2;
      /**
       * <pre>
       * Для Mobile Apple PushToken System для текста
       * </pre>
       *
       * <code>MOBILE_APNS_TEXT = 3;</code>
       */
      public static final int MOBILE_APNS_TEXT_VALUE = 3;
      /**
       * <pre>
       * Для Mobile Apple PushToken System для звонков
       * </pre>
       *
       * <code>MOBILE_APNS_CALL = 4;</code>
       */
      public static final int MOBILE_APNS_CALL_VALUE = 4;
      /**
       * <pre>
       * Для PWA Firebase Cloud Messaging
       * </pre>
       *
       * <code>PWA_FCM = 5;</code>
       */
      public static final int PWA_FCM_VALUE = 5;
      /**
       * <pre>
       * Для PWA Apple PushToken System
       * </pre>
       *
       * <code>PWA_APNS = 6;</code>
       */
      public static final int PWA_APNS_VALUE = 6;
      /**
       * <pre>
       * Для Mobile RuStore
       * </pre>
       *
       * <code>MOBILE_RUSTORE = 7;</code>
       */
      public static final int MOBILE_RUSTORE_VALUE = 7;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Type valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Type forNumber(int value) {
        switch (value) {
          case 0: return TYPE_UNKNOWN;
          case 1: return MOBILE_FCM;
          case 2: return MOBILE_HMS;
          case 3: return MOBILE_APNS_TEXT;
          case 4: return MOBILE_APNS_CALL;
          case 5: return PWA_FCM;
          case 6: return PWA_APNS;
          case 7: return MOBILE_RUSTORE;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Type>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Type> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
              public Type findValueByNumber(int number) {
                return Type.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDescriptor().getEnumTypes().get(0);
      }

      private static final Type[] VALUES = values();

      public static Type valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Type(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.notification.v1.PushToken.Type)
    }

    public interface ValidationErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PushToken.ValidationError)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Передан некоректный идентификатор устройства пользователя
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
       * @return Whether the userAppId field is set.
       */
      boolean hasUserAppId();
      /**
       * <pre>
       * Передан некоректный идентификатор устройства пользователя
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
       * @return The userAppId.
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid getUserAppId();
      /**
       * <pre>
       * Передан некоректный идентификатор устройства пользователя
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalidOrBuilder getUserAppIdOrBuilder();

      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка валидации пуш-токена.
     * Эти проверки выполняются до обращения в базу данных
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.PushToken.ValidationError}
     */
    public static final class ValidationError extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PushToken.ValidationError)
        ValidationErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ValidationError.newBuilder() to construct.
      private ValidationError(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ValidationError() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new ValidationError();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_ValidationError_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_ValidationError_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.Builder.class);
      }

      public interface UserAppIdInvalidOrBuilder extends
          // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid)
          com.google.protobuf.MessageOrBuilder {
      }
      /**
       * <pre>
       * Причины:
       * - Cодержит значение не Guid
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid}
       */
      public static final class UserAppIdInvalid extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid)
          UserAppIdInvalidOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use UserAppIdInvalid.newBuilder() to construct.
        private UserAppIdInvalid(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private UserAppIdInvalid() {
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(
            UnusedPrivateParameter unused) {
          return new UserAppIdInvalid();
        }

        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_ValidationError_UserAppIdInvalid_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_ValidationError_UserAppIdInvalid_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.Builder.class);
        }

        private byte memoizedIsInitialized = -1;
        @java.lang.Override
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;

          size = 0;
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid)) {
            return super.equals(obj);
          }
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid) obj;

          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * <pre>
         * Причины:
         * - Cодержит значение не Guid
         * </pre>
         *
         * Protobuf type {@code keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid)
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalidOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_ValidationError_UserAppIdInvalid_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_ValidationError_UserAppIdInvalid_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.Builder.class);
          }

          // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.newBuilder()
          private Builder() {

          }

          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_ValidationError_UserAppIdInvalid_descriptor;
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid getDefaultInstanceForType() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.getDefaultInstance();
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid build() {
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid buildPartial() {
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid(this);
            onBuilt();
            return result;
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid) {
              return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid other) {
            if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.getDefaultInstance()) return this;
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

          @java.lang.Override
          public final boolean isInitialized() {
            return true;
          }

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

          @java.lang.Override
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }


          // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid)
        }

        // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid)
        private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid();
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<UserAppIdInvalid>
            PARSER = new com.google.protobuf.AbstractParser<UserAppIdInvalid>() {
          @java.lang.Override
          public UserAppIdInvalid parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

        public static com.google.protobuf.Parser<UserAppIdInvalid> parser() {
          return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<UserAppIdInvalid> getParserForType() {
          return PARSER;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      private int reasonCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object reason_;
      public enum ReasonCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        USER_APP_ID(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return USER_APP_ID;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      public static final int USER_APP_ID_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Передан некоректный идентификатор устройства пользователя
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
       * @return Whether the userAppId field is set.
       */
      @java.lang.Override
      public boolean hasUserAppId() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Передан некоректный идентификатор устройства пользователя
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
       * @return The userAppId.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid getUserAppId() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.getDefaultInstance();
      }
      /**
       * <pre>
       * Передан некоректный идентификатор устройства пользователя
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalidOrBuilder getUserAppIdOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.getDefaultInstance();
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid) reason_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError)) {
          return super.equals(obj);
        }
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError) obj;

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getUserAppId()
                .equals(other.getUserAppId())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        switch (reasonCase_) {
          case 1:
            hash = (37 * hash) + USER_APP_ID_FIELD_NUMBER;
            hash = (53 * hash) + getUserAppId().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибка валидации пуш-токена.
       * Эти проверки выполняются до обращения в базу данных
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.PushToken.ValidationError}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PushToken.ValidationError)
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_ValidationError_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_ValidationError_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.Builder.class);
        }

        // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (userAppIdBuilder_ != null) {
            userAppIdBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_ValidationError_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError getDefaultInstanceForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError build() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError buildPartial() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              userAppIdBuilder_ != null) {
            result.reason_ = userAppIdBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError) {
            return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError other) {
          if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case USER_APP_ID: {
              mergeUserAppId(other.getUserAppId());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getUserAppIdFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

        public Builder clearReason() {
          reasonCase_ = 0;
          reason_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalidOrBuilder> userAppIdBuilder_;
        /**
         * <pre>
         * Передан некоректный идентификатор устройства пользователя
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
         * @return Whether the userAppId field is set.
         */
        @java.lang.Override
        public boolean hasUserAppId() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Передан некоректный идентификатор устройства пользователя
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
         * @return The userAppId.
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid getUserAppId() {
          if (userAppIdBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return userAppIdBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Передан некоректный идентификатор устройства пользователя
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
         */
        public Builder setUserAppId(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid value) {
          if (userAppIdBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            userAppIdBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Передан некоректный идентификатор устройства пользователя
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
         */
        public Builder setUserAppId(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.Builder builderForValue) {
          if (userAppIdBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            userAppIdBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Передан некоректный идентификатор устройства пользователя
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
         */
        public Builder mergeUserAppId(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid value) {
          if (userAppIdBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              userAppIdBuilder_.mergeFrom(value);
            } else {
              userAppIdBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Передан некоректный идентификатор устройства пользователя
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
         */
        public Builder clearUserAppId() {
          if (userAppIdBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            userAppIdBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Передан некоректный идентификатор устройства пользователя
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
         */
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.Builder getUserAppIdBuilder() {
          return getUserAppIdFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Передан некоректный идентификатор устройства пользователя
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalidOrBuilder getUserAppIdOrBuilder() {
          if ((reasonCase_ == 1) && (userAppIdBuilder_ != null)) {
            return userAppIdBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Передан некоректный идентификатор устройства пользователя
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid user_app_id = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalidOrBuilder> 
            getUserAppIdFieldBuilder() {
          if (userAppIdBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.getDefaultInstance();
            }
            userAppIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalidOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.UserAppIdInvalid) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return userAppIdBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PushToken.ValidationError)
      }

      // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PushToken.ValidationError)
      private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError();
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<ValidationError>
          PARSER = new com.google.protobuf.AbstractParser<ValidationError>() {
        @java.lang.Override
        public ValidationError parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<ValidationError> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<ValidationError> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface SavingErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PushToken.SavingError)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Идентификатор устройства пользователя уже используется
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
       * @return Whether the userAppIdExists field is set.
       */
      boolean hasUserAppIdExists();
      /**
       * <pre>
       * Идентификатор устройства пользователя уже используется
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
       * @return The userAppIdExists.
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists getUserAppIdExists();
      /**
       * <pre>
       * Идентификатор устройства пользователя уже используется
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExistsOrBuilder getUserAppIdExistsOrBuilder();

      /**
       * <pre>
       * Конфликт версий
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
       * @return Whether the conflict field is set.
       */
      boolean hasConflict();
      /**
       * <pre>
       * Конфликт версий
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
       * @return The conflict.
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict getConflict();
      /**
       * <pre>
       * Конфликт версий
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.ConflictOrBuilder getConflictOrBuilder();

      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка сохранения пуш-токена.
     * Эти проверки выполняются при работе с базой данных и сторонними сервисами
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.PushToken.SavingError}
     */
    public static final class SavingError extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PushToken.SavingError)
        SavingErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use SavingError.newBuilder() to construct.
      private SavingError(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SavingError() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new SavingError();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Builder.class);
      }

      public interface UserAppIdExistsOrBuilder extends
          // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PushToken.SavingError.UserAppIdExists)
          com.google.protobuf.MessageOrBuilder {
      }
      /**
       * <pre>
       * Причины:
       *  - Переданный индентификатор устройства пользователя уже существует с другим токеном
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.PushToken.SavingError.UserAppIdExists}
       */
      public static final class UserAppIdExists extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PushToken.SavingError.UserAppIdExists)
          UserAppIdExistsOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use UserAppIdExists.newBuilder() to construct.
        private UserAppIdExists(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private UserAppIdExists() {
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(
            UnusedPrivateParameter unused) {
          return new UserAppIdExists();
        }

        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_UserAppIdExists_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_UserAppIdExists_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.Builder.class);
        }

        private byte memoizedIsInitialized = -1;
        @java.lang.Override
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;

          size = 0;
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists)) {
            return super.equals(obj);
          }
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists) obj;

          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * <pre>
         * Причины:
         *  - Переданный индентификатор устройства пользователя уже существует с другим токеном
         * </pre>
         *
         * Protobuf type {@code keyapis.notification.v1.PushToken.SavingError.UserAppIdExists}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PushToken.SavingError.UserAppIdExists)
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExistsOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_UserAppIdExists_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_UserAppIdExists_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.Builder.class);
          }

          // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.newBuilder()
          private Builder() {

          }

          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_UserAppIdExists_descriptor;
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists getDefaultInstanceForType() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.getDefaultInstance();
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists build() {
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists buildPartial() {
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists(this);
            onBuilt();
            return result;
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists) {
              return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists other) {
            if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.getDefaultInstance()) return this;
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

          @java.lang.Override
          public final boolean isInitialized() {
            return true;
          }

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

          @java.lang.Override
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }


          // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PushToken.SavingError.UserAppIdExists)
        }

        // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PushToken.SavingError.UserAppIdExists)
        private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists();
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<UserAppIdExists>
            PARSER = new com.google.protobuf.AbstractParser<UserAppIdExists>() {
          @java.lang.Override
          public UserAppIdExists parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

        public static com.google.protobuf.Parser<UserAppIdExists> parser() {
          return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<UserAppIdExists> getParserForType() {
          return PARSER;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      public interface ConflictOrBuilder extends
          // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PushToken.SavingError.Conflict)
          com.google.protobuf.MessageOrBuilder {
      }
      /**
       * <pre>
       * Конфликт версий.
       * Причины:
       * - В базе хранится другая версия строки, значения changed_at отличаются
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.PushToken.SavingError.Conflict}
       */
      public static final class Conflict extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PushToken.SavingError.Conflict)
          ConflictOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use Conflict.newBuilder() to construct.
        private Conflict(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private Conflict() {
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(
            UnusedPrivateParameter unused) {
          return new Conflict();
        }

        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_Conflict_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_Conflict_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.Builder.class);
        }

        private byte memoizedIsInitialized = -1;
        @java.lang.Override
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;

          size = 0;
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict)) {
            return super.equals(obj);
          }
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict) obj;

          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * <pre>
         * Конфликт версий.
         * Причины:
         * - В базе хранится другая версия строки, значения changed_at отличаются
         * </pre>
         *
         * Protobuf type {@code keyapis.notification.v1.PushToken.SavingError.Conflict}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PushToken.SavingError.Conflict)
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.ConflictOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_Conflict_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_Conflict_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.Builder.class);
          }

          // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.newBuilder()
          private Builder() {

          }

          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_Conflict_descriptor;
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict getDefaultInstanceForType() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.getDefaultInstance();
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict build() {
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict buildPartial() {
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict(this);
            onBuilt();
            return result;
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict) {
              return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict other) {
            if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.getDefaultInstance()) return this;
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

          @java.lang.Override
          public final boolean isInitialized() {
            return true;
          }

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

          @java.lang.Override
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }


          // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PushToken.SavingError.Conflict)
        }

        // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PushToken.SavingError.Conflict)
        private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict();
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Conflict>
            PARSER = new com.google.protobuf.AbstractParser<Conflict>() {
          @java.lang.Override
          public Conflict parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

        public static com.google.protobuf.Parser<Conflict> parser() {
          return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Conflict> getParserForType() {
          return PARSER;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      private int reasonCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object reason_;
      public enum ReasonCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        USER_APP_ID_EXISTS(1),
        CONFLICT(2),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return USER_APP_ID_EXISTS;
            case 2: return CONFLICT;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      public static final int USER_APP_ID_EXISTS_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Идентификатор устройства пользователя уже используется
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
       * @return Whether the userAppIdExists field is set.
       */
      @java.lang.Override
      public boolean hasUserAppIdExists() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Идентификатор устройства пользователя уже используется
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
       * @return The userAppIdExists.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists getUserAppIdExists() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.getDefaultInstance();
      }
      /**
       * <pre>
       * Идентификатор устройства пользователя уже используется
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExistsOrBuilder getUserAppIdExistsOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.getDefaultInstance();
      }

      public static final int CONFLICT_FIELD_NUMBER = 2;
      /**
       * <pre>
       * Конфликт версий
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
       * @return Whether the conflict field is set.
       */
      @java.lang.Override
      public boolean hasConflict() {
        return reasonCase_ == 2;
      }
      /**
       * <pre>
       * Конфликт версий
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
       * @return The conflict.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict getConflict() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.getDefaultInstance();
      }
      /**
       * <pre>
       * Конфликт версий
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.ConflictOrBuilder getConflictOrBuilder() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.getDefaultInstance();
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists) reason_);
        }
        if (reasonCase_ == 2) {
          output.writeMessage(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict) reason_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists) reason_);
        }
        if (reasonCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError)) {
          return super.equals(obj);
        }
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError) obj;

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getUserAppIdExists()
                .equals(other.getUserAppIdExists())) return false;
            break;
          case 2:
            if (!getConflict()
                .equals(other.getConflict())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        switch (reasonCase_) {
          case 1:
            hash = (37 * hash) + USER_APP_ID_EXISTS_FIELD_NUMBER;
            hash = (53 * hash) + getUserAppIdExists().hashCode();
            break;
          case 2:
            hash = (37 * hash) + CONFLICT_FIELD_NUMBER;
            hash = (53 * hash) + getConflict().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибка сохранения пуш-токена.
       * Эти проверки выполняются при работе с базой данных и сторонними сервисами
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.PushToken.SavingError}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PushToken.SavingError)
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Builder.class);
        }

        // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (userAppIdExistsBuilder_ != null) {
            userAppIdExistsBuilder_.clear();
          }
          if (conflictBuilder_ != null) {
            conflictBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_SavingError_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError getDefaultInstanceForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError build() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError buildPartial() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              userAppIdExistsBuilder_ != null) {
            result.reason_ = userAppIdExistsBuilder_.build();
          }
          if (reasonCase_ == 2 &&
              conflictBuilder_ != null) {
            result.reason_ = conflictBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError) {
            return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError other) {
          if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case USER_APP_ID_EXISTS: {
              mergeUserAppIdExists(other.getUserAppIdExists());
              break;
            }
            case CONFLICT: {
              mergeConflict(other.getConflict());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getUserAppIdExistsFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getConflictFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 2;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

        public Builder clearReason() {
          reasonCase_ = 0;
          reason_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExistsOrBuilder> userAppIdExistsBuilder_;
        /**
         * <pre>
         * Идентификатор устройства пользователя уже используется
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
         * @return Whether the userAppIdExists field is set.
         */
        @java.lang.Override
        public boolean hasUserAppIdExists() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Идентификатор устройства пользователя уже используется
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
         * @return The userAppIdExists.
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists getUserAppIdExists() {
          if (userAppIdExistsBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return userAppIdExistsBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Идентификатор устройства пользователя уже используется
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
         */
        public Builder setUserAppIdExists(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists value) {
          if (userAppIdExistsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            userAppIdExistsBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Идентификатор устройства пользователя уже используется
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
         */
        public Builder setUserAppIdExists(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.Builder builderForValue) {
          if (userAppIdExistsBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            userAppIdExistsBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Идентификатор устройства пользователя уже используется
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
         */
        public Builder mergeUserAppIdExists(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists value) {
          if (userAppIdExistsBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              userAppIdExistsBuilder_.mergeFrom(value);
            } else {
              userAppIdExistsBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Идентификатор устройства пользователя уже используется
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
         */
        public Builder clearUserAppIdExists() {
          if (userAppIdExistsBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            userAppIdExistsBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Идентификатор устройства пользователя уже используется
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
         */
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.Builder getUserAppIdExistsBuilder() {
          return getUserAppIdExistsFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Идентификатор устройства пользователя уже используется
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExistsOrBuilder getUserAppIdExistsOrBuilder() {
          if ((reasonCase_ == 1) && (userAppIdExistsBuilder_ != null)) {
            return userAppIdExistsBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Идентификатор устройства пользователя уже используется
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.UserAppIdExists user_app_id_exists = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExistsOrBuilder> 
            getUserAppIdExistsFieldBuilder() {
          if (userAppIdExistsBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.getDefaultInstance();
            }
            userAppIdExistsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExistsOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.UserAppIdExists) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return userAppIdExistsBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.ConflictOrBuilder> conflictBuilder_;
        /**
         * <pre>
         * Конфликт версий
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
         * @return Whether the conflict field is set.
         */
        @java.lang.Override
        public boolean hasConflict() {
          return reasonCase_ == 2;
        }
        /**
         * <pre>
         * Конфликт версий
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
         * @return The conflict.
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict getConflict() {
          if (conflictBuilder_ == null) {
            if (reasonCase_ == 2) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.getDefaultInstance();
          } else {
            if (reasonCase_ == 2) {
              return conflictBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Конфликт версий
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
         */
        public Builder setConflict(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict value) {
          if (conflictBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            conflictBuilder_.setMessage(value);
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Конфликт версий
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
         */
        public Builder setConflict(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.Builder builderForValue) {
          if (conflictBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            conflictBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Конфликт версий
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
         */
        public Builder mergeConflict(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict value) {
          if (conflictBuilder_ == null) {
            if (reasonCase_ == 2 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 2) {
              conflictBuilder_.mergeFrom(value);
            } else {
              conflictBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Конфликт версий
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
         */
        public Builder clearConflict() {
          if (conflictBuilder_ == null) {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
            }
            conflictBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Конфликт версий
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
         */
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.Builder getConflictBuilder() {
          return getConflictFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Конфликт версий
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.ConflictOrBuilder getConflictOrBuilder() {
          if ((reasonCase_ == 2) && (conflictBuilder_ != null)) {
            return conflictBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 2) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Конфликт версий
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError.Conflict conflict = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.ConflictOrBuilder> 
            getConflictFieldBuilder() {
          if (conflictBuilder_ == null) {
            if (!(reasonCase_ == 2)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.getDefaultInstance();
            }
            conflictBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.ConflictOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Conflict) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 2;
          onChanged();
          return conflictBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PushToken.SavingError)
      }

      // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PushToken.SavingError)
      private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError();
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<SavingError>
          PARSER = new com.google.protobuf.AbstractParser<SavingError>() {
        @java.lang.Override
        public SavingError parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<SavingError> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<SavingError> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int ID_FIELD_NUMBER = 1;
    private int id_ = 0;
    /**
     * <pre>
     * Идентификатор.
     * # Диапазон: 0..2147483647
     * </pre>
     *
     * <code>int32 id = 1;</code>
     * @return The id.
     */
    @java.lang.Override
    public int getId() {
      return id_;
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private int type_ = 0;
    /**
     * <pre>
     * Тип
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken.Type type = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The enum numeric value on the wire for type.
     */
    @java.lang.Override public int getTypeValue() {
      return type_;
    }
    /**
     * <pre>
     * Тип
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken.Type type = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The type.
     */
    @java.lang.Override public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type getType() {
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type result = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type.forNumber(type_);
      return result == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type.UNRECOGNIZED : result;
    }

    public static final int TOKEN_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object token_ = "";
    /**
     * <pre>
     * Токен.
     * # Диапазон: 16..256
     * </pre>
     *
     * <code>string token = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The token.
     */
    @java.lang.Override
    public java.lang.String getToken() {
      java.lang.Object ref = token_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        token_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Токен.
     * # Диапазон: 16..256
     * </pre>
     *
     * <code>string token = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for token.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTokenBytes() {
      java.lang.Object ref = token_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        token_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int USER_APP_ID_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object userAppId_ = "";
    /**
     * <pre>
     * Идентификатор устройства пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>string user_app_id = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userAppId.
     */
    @java.lang.Override
    public java.lang.String getUserAppId() {
      java.lang.Object ref = userAppId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        userAppId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Идентификатор устройства пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>string user_app_id = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for userAppId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserAppIdBytes() {
      java.lang.Object ref = userAppId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        userAppId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int USER_ID_FIELD_NUMBER = 5;
    private com.google.protobuf.Int32Value userId_;
    /**
     * <pre>
     * Идентификатор пользователя.
     * # Диапазон: 1..2147483647
     * </pre>
     *
     * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return Whether the userId field is set.
     */
    @java.lang.Override
    public boolean hasUserId() {
      return userId_ != null;
    }
    /**
     * <pre>
     * Идентификатор пользователя.
     * # Диапазон: 1..2147483647
     * </pre>
     *
     * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return The userId.
     */
    @java.lang.Override
    public com.google.protobuf.Int32Value getUserId() {
      return userId_ == null ? com.google.protobuf.Int32Value.getDefaultInstance() : userId_;
    }
    /**
     * <pre>
     * Идентификатор пользователя.
     * # Диапазон: 1..2147483647
     * </pre>
     *
     * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     */
    @java.lang.Override
    public com.google.protobuf.Int32ValueOrBuilder getUserIdOrBuilder() {
      return userId_ == null ? com.google.protobuf.Int32Value.getDefaultInstance() : userId_;
    }

    public static final int CREATED_AT_FIELD_NUMBER = 6;
    private com.google.protobuf.Timestamp createdAt_;
    /**
     * <pre>
     * Дата и время создания.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return Whether the createdAt field is set.
     */
    @java.lang.Override
    public boolean hasCreatedAt() {
      return createdAt_ != null;
    }
    /**
     * <pre>
     * Дата и время создания.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return The createdAt.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getCreatedAt() {
      return createdAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createdAt_;
    }
    /**
     * <pre>
     * Дата и время создания.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getCreatedAtOrBuilder() {
      return createdAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createdAt_;
    }

    public static final int CHANGED_AT_FIELD_NUMBER = 7;
    private com.google.protobuf.Timestamp changedAt_;
    /**
     * <pre>
     * Дата последнего изменения.
     * Заполняется и обновляется сервером.
     * Заполняется при создании и изменении.
     * Является версией объекта.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return Whether the changedAt field is set.
     */
    @java.lang.Override
    public boolean hasChangedAt() {
      return changedAt_ != null;
    }
    /**
     * <pre>
     * Дата последнего изменения.
     * Заполняется и обновляется сервером.
     * Заполняется при создании и изменении.
     * Является версией объекта.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return The changedAt.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getChangedAt() {
      return changedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : changedAt_;
    }
    /**
     * <pre>
     * Дата последнего изменения.
     * Заполняется и обновляется сервером.
     * Заполняется при создании и изменении.
     * Является версией объекта.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getChangedAtOrBuilder() {
      return changedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : changedAt_;
    }

    public static final int APP_VERSION_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object appVersion_ = "";
    /**
     * <pre>
     * Версия приложения.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string app_version = 8 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The appVersion.
     */
    @java.lang.Override
    public java.lang.String getAppVersion() {
      java.lang.Object ref = appVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        appVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Версия приложения.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string app_version = 8 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for appVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAppVersionBytes() {
      java.lang.Object ref = appVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        appVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (id_ != 0) {
        output.writeInt32(1, id_);
      }
      if (type_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type.TYPE_UNKNOWN.getNumber()) {
        output.writeEnum(2, type_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(token_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, token_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userAppId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, userAppId_);
      }
      if (userId_ != null) {
        output.writeMessage(5, getUserId());
      }
      if (createdAt_ != null) {
        output.writeMessage(6, getCreatedAt());
      }
      if (changedAt_ != null) {
        output.writeMessage(7, getChangedAt());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(appVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, appVersion_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (id_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      if (type_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type.TYPE_UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, type_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(token_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, token_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userAppId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, userAppId_);
      }
      if (userId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getUserId());
      }
      if (createdAt_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getCreatedAt());
      }
      if (changedAt_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getChangedAt());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(appVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, appVersion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) obj;

      if (getId()
          != other.getId()) return false;
      if (type_ != other.type_) return false;
      if (!getToken()
          .equals(other.getToken())) return false;
      if (!getUserAppId()
          .equals(other.getUserAppId())) return false;
      if (hasUserId() != other.hasUserId()) return false;
      if (hasUserId()) {
        if (!getUserId()
            .equals(other.getUserId())) return false;
      }
      if (hasCreatedAt() != other.hasCreatedAt()) return false;
      if (hasCreatedAt()) {
        if (!getCreatedAt()
            .equals(other.getCreatedAt())) return false;
      }
      if (hasChangedAt() != other.hasChangedAt()) return false;
      if (hasChangedAt()) {
        if (!getChangedAt()
            .equals(other.getChangedAt())) return false;
      }
      if (!getAppVersion()
          .equals(other.getAppVersion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + type_;
      hash = (37 * hash) + TOKEN_FIELD_NUMBER;
      hash = (53 * hash) + getToken().hashCode();
      hash = (37 * hash) + USER_APP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getUserAppId().hashCode();
      if (hasUserId()) {
        hash = (37 * hash) + USER_ID_FIELD_NUMBER;
        hash = (53 * hash) + getUserId().hashCode();
      }
      if (hasCreatedAt()) {
        hash = (37 * hash) + CREATED_AT_FIELD_NUMBER;
        hash = (53 * hash) + getCreatedAt().hashCode();
      }
      if (hasChangedAt()) {
        hash = (37 * hash) + CHANGED_AT_FIELD_NUMBER;
        hash = (53 * hash) + getChangedAt().hashCode();
      }
      hash = (37 * hash) + APP_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getAppVersion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Пуш-токен.
     * # Описание модели
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.PushToken}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PushToken)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = 0;
        type_ = 0;
        token_ = "";
        userAppId_ = "";
        userId_ = null;
        if (userIdBuilder_ != null) {
          userIdBuilder_.dispose();
          userIdBuilder_ = null;
        }
        createdAt_ = null;
        if (createdAtBuilder_ != null) {
          createdAtBuilder_.dispose();
          createdAtBuilder_ = null;
        }
        changedAt_ = null;
        if (changedAtBuilder_ != null) {
          changedAtBuilder_.dispose();
          changedAtBuilder_ = null;
        }
        appVersion_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushToken_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.type_ = type_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.token_ = token_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.userAppId_ = userAppId_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.userId_ = userIdBuilder_ == null
              ? userId_
              : userIdBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.createdAt_ = createdAtBuilder_ == null
              ? createdAt_
              : createdAtBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.changedAt_ = changedAtBuilder_ == null
              ? changedAt_
              : changedAtBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.appVersion_ = appVersion_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance()) return this;
        if (other.getId() != 0) {
          setId(other.getId());
        }
        if (other.type_ != 0) {
          setTypeValue(other.getTypeValue());
        }
        if (!other.getToken().isEmpty()) {
          token_ = other.token_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (!other.getUserAppId().isEmpty()) {
          userAppId_ = other.userAppId_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasUserId()) {
          mergeUserId(other.getUserId());
        }
        if (other.hasCreatedAt()) {
          mergeCreatedAt(other.getCreatedAt());
        }
        if (other.hasChangedAt()) {
          mergeChangedAt(other.getChangedAt());
        }
        if (!other.getAppVersion().isEmpty()) {
          appVersion_ = other.appVersion_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                id_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                type_ = input.readEnum();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                token_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                userAppId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getUserIdFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getCreatedAtFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getChangedAtFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                appVersion_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int id_ ;
      /**
       * <pre>
       * Идентификатор.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @return The id.
       */
      @java.lang.Override
      public int getId() {
        return id_;
      }
      /**
       * <pre>
       * Идентификатор.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(int value) {

        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0;
        onChanged();
        return this;
      }

      private int type_ = 0;
      /**
       * <pre>
       * Тип
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.Type type = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The enum numeric value on the wire for type.
       */
      @java.lang.Override public int getTypeValue() {
        return type_;
      }
      /**
       * <pre>
       * Тип
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.Type type = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The enum numeric value on the wire for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeValue(int value) {
        type_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.Type type = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The type.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type getType() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type result = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type.forNumber(type_);
        return result == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Тип
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.Type type = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.Type type = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        type_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object token_ = "";
      /**
       * <pre>
       * Токен.
       * # Диапазон: 16..256
       * </pre>
       *
       * <code>string token = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The token.
       */
      public java.lang.String getToken() {
        java.lang.Object ref = token_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          token_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Токен.
       * # Диапазон: 16..256
       * </pre>
       *
       * <code>string token = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for token.
       */
      public com.google.protobuf.ByteString
          getTokenBytes() {
        java.lang.Object ref = token_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          token_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Токен.
       * # Диапазон: 16..256
       * </pre>
       *
       * <code>string token = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The token to set.
       * @return This builder for chaining.
       */
      public Builder setToken(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        token_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Токен.
       * # Диапазон: 16..256
       * </pre>
       *
       * <code>string token = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearToken() {
        token_ = getDefaultInstance().getToken();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Токен.
       * # Диапазон: 16..256
       * </pre>
       *
       * <code>string token = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for token to set.
       * @return This builder for chaining.
       */
      public Builder setTokenBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        token_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object userAppId_ = "";
      /**
       * <pre>
       * Идентификатор устройства пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>string user_app_id = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The userAppId.
       */
      public java.lang.String getUserAppId() {
        java.lang.Object ref = userAppId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          userAppId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор устройства пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>string user_app_id = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for userAppId.
       */
      public com.google.protobuf.ByteString
          getUserAppIdBytes() {
        java.lang.Object ref = userAppId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          userAppId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор устройства пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>string user_app_id = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The userAppId to set.
       * @return This builder for chaining.
       */
      public Builder setUserAppId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        userAppId_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор устройства пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>string user_app_id = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearUserAppId() {
        userAppId_ = getDefaultInstance().getUserAppId();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор устройства пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>string user_app_id = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for userAppId to set.
       * @return This builder for chaining.
       */
      public Builder setUserAppIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        userAppId_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private com.google.protobuf.Int32Value userId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int32Value, com.google.protobuf.Int32Value.Builder, com.google.protobuf.Int32ValueOrBuilder> userIdBuilder_;
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       * @return Whether the userId field is set.
       */
      public boolean hasUserId() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       * @return The userId.
       */
      public com.google.protobuf.Int32Value getUserId() {
        if (userIdBuilder_ == null) {
          return userId_ == null ? com.google.protobuf.Int32Value.getDefaultInstance() : userId_;
        } else {
          return userIdBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public Builder setUserId(com.google.protobuf.Int32Value value) {
        if (userIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userId_ = value;
        } else {
          userIdBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public Builder setUserId(
          com.google.protobuf.Int32Value.Builder builderForValue) {
        if (userIdBuilder_ == null) {
          userId_ = builderForValue.build();
        } else {
          userIdBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public Builder mergeUserId(com.google.protobuf.Int32Value value) {
        if (userIdBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            userId_ != null &&
            userId_ != com.google.protobuf.Int32Value.getDefaultInstance()) {
            getUserIdBuilder().mergeFrom(value);
          } else {
            userId_ = value;
          }
        } else {
          userIdBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public Builder clearUserId() {
        bitField0_ = (bitField0_ & ~0x00000010);
        userId_ = null;
        if (userIdBuilder_ != null) {
          userIdBuilder_.dispose();
          userIdBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public com.google.protobuf.Int32Value.Builder getUserIdBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getUserIdFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public com.google.protobuf.Int32ValueOrBuilder getUserIdOrBuilder() {
        if (userIdBuilder_ != null) {
          return userIdBuilder_.getMessageOrBuilder();
        } else {
          return userId_ == null ?
              com.google.protobuf.Int32Value.getDefaultInstance() : userId_;
        }
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>.google.protobuf.Int32Value user_id = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int32Value, com.google.protobuf.Int32Value.Builder, com.google.protobuf.Int32ValueOrBuilder> 
          getUserIdFieldBuilder() {
        if (userIdBuilder_ == null) {
          userIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Int32Value, com.google.protobuf.Int32Value.Builder, com.google.protobuf.Int32ValueOrBuilder>(
                  getUserId(),
                  getParentForChildren(),
                  isClean());
          userId_ = null;
        }
        return userIdBuilder_;
      }

      private com.google.protobuf.Timestamp createdAt_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> createdAtBuilder_;
      /**
       * <pre>
       * Дата и время создания.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       * @return Whether the createdAt field is set.
       */
      public boolean hasCreatedAt() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Дата и время создания.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       * @return The createdAt.
       */
      public com.google.protobuf.Timestamp getCreatedAt() {
        if (createdAtBuilder_ == null) {
          return createdAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createdAt_;
        } else {
          return createdAtBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Дата и время создания.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public Builder setCreatedAt(com.google.protobuf.Timestamp value) {
        if (createdAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          createdAt_ = value;
        } else {
          createdAtBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Дата и время создания.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public Builder setCreatedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (createdAtBuilder_ == null) {
          createdAt_ = builderForValue.build();
        } else {
          createdAtBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Дата и время создания.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public Builder mergeCreatedAt(com.google.protobuf.Timestamp value) {
        if (createdAtBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            createdAt_ != null &&
            createdAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getCreatedAtBuilder().mergeFrom(value);
          } else {
            createdAt_ = value;
          }
        } else {
          createdAtBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Дата и время создания.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public Builder clearCreatedAt() {
        bitField0_ = (bitField0_ & ~0x00000020);
        createdAt_ = null;
        if (createdAtBuilder_ != null) {
          createdAtBuilder_.dispose();
          createdAtBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Дата и время создания.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public com.google.protobuf.Timestamp.Builder getCreatedAtBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getCreatedAtFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Дата и время создания.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public com.google.protobuf.TimestampOrBuilder getCreatedAtOrBuilder() {
        if (createdAtBuilder_ != null) {
          return createdAtBuilder_.getMessageOrBuilder();
        } else {
          return createdAt_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : createdAt_;
        }
      }
      /**
       * <pre>
       * Дата и время создания.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getCreatedAtFieldBuilder() {
        if (createdAtBuilder_ == null) {
          createdAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getCreatedAt(),
                  getParentForChildren(),
                  isClean());
          createdAt_ = null;
        }
        return createdAtBuilder_;
      }

      private com.google.protobuf.Timestamp changedAt_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> changedAtBuilder_;
      /**
       * <pre>
       * Дата последнего изменения.
       * Заполняется и обновляется сервером.
       * Заполняется при создании и изменении.
       * Является версией объекта.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       * @return Whether the changedAt field is set.
       */
      public boolean hasChangedAt() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Дата последнего изменения.
       * Заполняется и обновляется сервером.
       * Заполняется при создании и изменении.
       * Является версией объекта.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       * @return The changedAt.
       */
      public com.google.protobuf.Timestamp getChangedAt() {
        if (changedAtBuilder_ == null) {
          return changedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : changedAt_;
        } else {
          return changedAtBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Дата последнего изменения.
       * Заполняется и обновляется сервером.
       * Заполняется при создании и изменении.
       * Является версией объекта.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public Builder setChangedAt(com.google.protobuf.Timestamp value) {
        if (changedAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          changedAt_ = value;
        } else {
          changedAtBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Дата последнего изменения.
       * Заполняется и обновляется сервером.
       * Заполняется при создании и изменении.
       * Является версией объекта.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public Builder setChangedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (changedAtBuilder_ == null) {
          changedAt_ = builderForValue.build();
        } else {
          changedAtBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Дата последнего изменения.
       * Заполняется и обновляется сервером.
       * Заполняется при создании и изменении.
       * Является версией объекта.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public Builder mergeChangedAt(com.google.protobuf.Timestamp value) {
        if (changedAtBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            changedAt_ != null &&
            changedAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getChangedAtBuilder().mergeFrom(value);
          } else {
            changedAt_ = value;
          }
        } else {
          changedAtBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Дата последнего изменения.
       * Заполняется и обновляется сервером.
       * Заполняется при создании и изменении.
       * Является версией объекта.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public Builder clearChangedAt() {
        bitField0_ = (bitField0_ & ~0x00000040);
        changedAt_ = null;
        if (changedAtBuilder_ != null) {
          changedAtBuilder_.dispose();
          changedAtBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Дата последнего изменения.
       * Заполняется и обновляется сервером.
       * Заполняется при создании и изменении.
       * Является версией объекта.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public com.google.protobuf.Timestamp.Builder getChangedAtBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getChangedAtFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Дата последнего изменения.
       * Заполняется и обновляется сервером.
       * Заполняется при создании и изменении.
       * Является версией объекта.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      public com.google.protobuf.TimestampOrBuilder getChangedAtOrBuilder() {
        if (changedAtBuilder_ != null) {
          return changedAtBuilder_.getMessageOrBuilder();
        } else {
          return changedAt_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : changedAt_;
        }
      }
      /**
       * <pre>
       * Дата последнего изменения.
       * Заполняется и обновляется сервером.
       * Заполняется при создании и изменении.
       * Является версией объекта.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getChangedAtFieldBuilder() {
        if (changedAtBuilder_ == null) {
          changedAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getChangedAt(),
                  getParentForChildren(),
                  isClean());
          changedAt_ = null;
        }
        return changedAtBuilder_;
      }

      private java.lang.Object appVersion_ = "";
      /**
       * <pre>
       * Версия приложения.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string app_version = 8 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The appVersion.
       */
      public java.lang.String getAppVersion() {
        java.lang.Object ref = appVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          appVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Версия приложения.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string app_version = 8 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for appVersion.
       */
      public com.google.protobuf.ByteString
          getAppVersionBytes() {
        java.lang.Object ref = appVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          appVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Версия приложения.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string app_version = 8 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The appVersion to set.
       * @return This builder for chaining.
       */
      public Builder setAppVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        appVersion_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Версия приложения.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string app_version = 8 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearAppVersion() {
        appVersion_ = getDefaultInstance().getAppVersion();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Версия приложения.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string app_version = 8 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for appVersion to set.
       * @return This builder for chaining.
       */
      public Builder setAppVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        appVersion_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PushToken)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PushToken)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PushToken>
        PARSER = new com.google.protobuf.AbstractParser<PushToken>() {
      @java.lang.Override
      public PushToken parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<PushToken> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PushToken> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PushTokenFilterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PushTokenFilter)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * По типам пуш-токенов
     * </pre>
     *
     * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
     * @return A list containing the types.
     */
    java.util.List<ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type> getTypesList();
    /**
     * <pre>
     * По типам пуш-токенов
     * </pre>
     *
     * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
     * @return The count of types.
     */
    int getTypesCount();
    /**
     * <pre>
     * По типам пуш-токенов
     * </pre>
     *
     * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
     * @param index The index of the element to return.
     * @return The types at the given index.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type getTypes(int index);
    /**
     * <pre>
     * По типам пуш-токенов
     * </pre>
     *
     * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
     * @return A list containing the enum numeric values on the wire for types.
     */
    java.util.List<java.lang.Integer>
    getTypesValueList();
    /**
     * <pre>
     * По типам пуш-токенов
     * </pre>
     *
     * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of types at the given index.
     */
    int getTypesValue(int index);

    /**
     * <pre>
     * По идентификаторам устройств пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>repeated string user_app_ids = 2;</code>
     * @return A list containing the userAppIds.
     */
    java.util.List<java.lang.String>
        getUserAppIdsList();
    /**
     * <pre>
     * По идентификаторам устройств пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>repeated string user_app_ids = 2;</code>
     * @return The count of userAppIds.
     */
    int getUserAppIdsCount();
    /**
     * <pre>
     * По идентификаторам устройств пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>repeated string user_app_ids = 2;</code>
     * @param index The index of the element to return.
     * @return The userAppIds at the given index.
     */
    java.lang.String getUserAppIds(int index);
    /**
     * <pre>
     * По идентификаторам устройств пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>repeated string user_app_ids = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the userAppIds at the given index.
     */
    com.google.protobuf.ByteString
        getUserAppIdsBytes(int index);

    /**
     * <pre>
     * По идентификаторам пользователя
     * </pre>
     *
     * <code>repeated int32 user_ids = 3;</code>
     * @return A list containing the userIds.
     */
    java.util.List<java.lang.Integer> getUserIdsList();
    /**
     * <pre>
     * По идентификаторам пользователя
     * </pre>
     *
     * <code>repeated int32 user_ids = 3;</code>
     * @return The count of userIds.
     */
    int getUserIdsCount();
    /**
     * <pre>
     * По идентификаторам пользователя
     * </pre>
     *
     * <code>repeated int32 user_ids = 3;</code>
     * @param index The index of the element to return.
     * @return The userIds at the given index.
     */
    int getUserIds(int index);

    /**
     * <pre>
     * От даты создания включительно (&gt;=)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
     * @return Whether the beginCreatedAt field is set.
     */
    boolean hasBeginCreatedAt();
    /**
     * <pre>
     * От даты создания включительно (&gt;=)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
     * @return The beginCreatedAt.
     */
    com.google.protobuf.Timestamp getBeginCreatedAt();
    /**
     * <pre>
     * От даты создания включительно (&gt;=)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
     */
    com.google.protobuf.TimestampOrBuilder getBeginCreatedAtOrBuilder();

    /**
     * <pre>
     * До даты создания (&lt;)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
     * @return Whether the endCreatedAt field is set.
     */
    boolean hasEndCreatedAt();
    /**
     * <pre>
     * До даты создания (&lt;)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
     * @return The endCreatedAt.
     */
    com.google.protobuf.Timestamp getEndCreatedAt();
    /**
     * <pre>
     * До даты создания (&lt;)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
     */
    com.google.protobuf.TimestampOrBuilder getEndCreatedAtOrBuilder();

    /**
     * <pre>
     * От даты изменения включительно (&gt;=)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
     * @return Whether the beginChangedAt field is set.
     */
    boolean hasBeginChangedAt();
    /**
     * <pre>
     * От даты изменения включительно (&gt;=)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
     * @return The beginChangedAt.
     */
    com.google.protobuf.Timestamp getBeginChangedAt();
    /**
     * <pre>
     * От даты изменения включительно (&gt;=)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
     */
    com.google.protobuf.TimestampOrBuilder getBeginChangedAtOrBuilder();

    /**
     * <pre>
     * До даты изменения (&lt;)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
     * @return Whether the endChangedAt field is set.
     */
    boolean hasEndChangedAt();
    /**
     * <pre>
     * До даты изменения (&lt;)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
     * @return The endChangedAt.
     */
    com.google.protobuf.Timestamp getEndChangedAt();
    /**
     * <pre>
     * До даты изменения (&lt;)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
     */
    com.google.protobuf.TimestampOrBuilder getEndChangedAtOrBuilder();
  }
  /**
   * <pre>
   * Фильтр по пуш-токенам
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.PushTokenFilter}
   */
  public static final class PushTokenFilter extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PushTokenFilter)
      PushTokenFilterOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PushTokenFilter.newBuilder() to construct.
    private PushTokenFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PushTokenFilter() {
      types_ = java.util.Collections.emptyList();
      userAppIds_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      userIds_ = emptyIntList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PushTokenFilter();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.Builder.class);
    }

    public interface ValidationErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PushTokenFilter.ValidationError)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Идентификаторы устройств пользователя переданы некоректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
       * @return Whether the userAppIds field is set.
       */
      boolean hasUserAppIds();
      /**
       * <pre>
       * Идентификаторы устройств пользователя переданы некоректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
       * @return The userAppIds.
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid getUserAppIds();
      /**
       * <pre>
       * Идентификаторы устройств пользователя переданы некоректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalidOrBuilder getUserAppIdsOrBuilder();

      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибки валидации фильтра по фильтру пуш-токенов.
     * Эти проверки выполняются до обращения в базу данных
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.PushTokenFilter.ValidationError}
     */
    public static final class ValidationError extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PushTokenFilter.ValidationError)
        ValidationErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ValidationError.newBuilder() to construct.
      private ValidationError(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ValidationError() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new ValidationError();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.Builder.class);
      }

      public interface UserAppIdsInvalidOrBuilder extends
          // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid)
          com.google.protobuf.MessageOrBuilder {
      }
      /**
       * <pre>
       * Причины:
       * - Cодержит значение не Guid
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid}
       */
      public static final class UserAppIdsInvalid extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid)
          UserAppIdsInvalidOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use UserAppIdsInvalid.newBuilder() to construct.
        private UserAppIdsInvalid(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private UserAppIdsInvalid() {
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(
            UnusedPrivateParameter unused) {
          return new UserAppIdsInvalid();
        }

        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_UserAppIdsInvalid_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_UserAppIdsInvalid_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.Builder.class);
        }

        private byte memoizedIsInitialized = -1;
        @java.lang.Override
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;

          size = 0;
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid)) {
            return super.equals(obj);
          }
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid) obj;

          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * <pre>
         * Причины:
         * - Cодержит значение не Guid
         * </pre>
         *
         * Protobuf type {@code keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid)
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalidOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_UserAppIdsInvalid_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_UserAppIdsInvalid_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.Builder.class);
          }

          // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.newBuilder()
          private Builder() {

          }

          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_UserAppIdsInvalid_descriptor;
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid getDefaultInstanceForType() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.getDefaultInstance();
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid build() {
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid buildPartial() {
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid(this);
            onBuilt();
            return result;
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid) {
              return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid other) {
            if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.getDefaultInstance()) return this;
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

          @java.lang.Override
          public final boolean isInitialized() {
            return true;
          }

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

          @java.lang.Override
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }


          // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid)
        }

        // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid)
        private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid();
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<UserAppIdsInvalid>
            PARSER = new com.google.protobuf.AbstractParser<UserAppIdsInvalid>() {
          @java.lang.Override
          public UserAppIdsInvalid parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

        public static com.google.protobuf.Parser<UserAppIdsInvalid> parser() {
          return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<UserAppIdsInvalid> getParserForType() {
          return PARSER;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      private int reasonCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object reason_;
      public enum ReasonCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        USER_APP_IDS(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return USER_APP_IDS;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      public static final int USER_APP_IDS_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Идентификаторы устройств пользователя переданы некоректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
       * @return Whether the userAppIds field is set.
       */
      @java.lang.Override
      public boolean hasUserAppIds() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Идентификаторы устройств пользователя переданы некоректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
       * @return The userAppIds.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid getUserAppIds() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.getDefaultInstance();
      }
      /**
       * <pre>
       * Идентификаторы устройств пользователя переданы некоректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalidOrBuilder getUserAppIdsOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.getDefaultInstance();
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid) reason_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError)) {
          return super.equals(obj);
        }
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) obj;

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getUserAppIds()
                .equals(other.getUserAppIds())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        switch (reasonCase_) {
          case 1:
            hash = (37 * hash) + USER_APP_IDS_FIELD_NUMBER;
            hash = (53 * hash) + getUserAppIds().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибки валидации фильтра по фильтру пуш-токенов.
       * Эти проверки выполняются до обращения в базу данных
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.PushTokenFilter.ValidationError}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PushTokenFilter.ValidationError)
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.Builder.class);
        }

        // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (userAppIdsBuilder_ != null) {
            userAppIdsBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError getDefaultInstanceForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError build() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError buildPartial() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              userAppIdsBuilder_ != null) {
            result.reason_ = userAppIdsBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) {
            return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError other) {
          if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case USER_APP_IDS: {
              mergeUserAppIds(other.getUserAppIds());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getUserAppIdsFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

        public Builder clearReason() {
          reasonCase_ = 0;
          reason_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalidOrBuilder> userAppIdsBuilder_;
        /**
         * <pre>
         * Идентификаторы устройств пользователя переданы некоректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
         * @return Whether the userAppIds field is set.
         */
        @java.lang.Override
        public boolean hasUserAppIds() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Идентификаторы устройств пользователя переданы некоректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
         * @return The userAppIds.
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid getUserAppIds() {
          if (userAppIdsBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return userAppIdsBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Идентификаторы устройств пользователя переданы некоректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
         */
        public Builder setUserAppIds(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid value) {
          if (userAppIdsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            userAppIdsBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Идентификаторы устройств пользователя переданы некоректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
         */
        public Builder setUserAppIds(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.Builder builderForValue) {
          if (userAppIdsBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            userAppIdsBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Идентификаторы устройств пользователя переданы некоректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
         */
        public Builder mergeUserAppIds(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid value) {
          if (userAppIdsBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              userAppIdsBuilder_.mergeFrom(value);
            } else {
              userAppIdsBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Идентификаторы устройств пользователя переданы некоректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
         */
        public Builder clearUserAppIds() {
          if (userAppIdsBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            userAppIdsBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Идентификаторы устройств пользователя переданы некоректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
         */
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.Builder getUserAppIdsBuilder() {
          return getUserAppIdsFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Идентификаторы устройств пользователя переданы некоректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalidOrBuilder getUserAppIdsOrBuilder() {
          if ((reasonCase_ == 1) && (userAppIdsBuilder_ != null)) {
            return userAppIdsBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Идентификаторы устройств пользователя переданы некоректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid user_app_ids = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalidOrBuilder> 
            getUserAppIdsFieldBuilder() {
          if (userAppIdsBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.getDefaultInstance();
            }
            userAppIdsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalidOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.UserAppIdsInvalid) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return userAppIdsBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PushTokenFilter.ValidationError)
      }

      // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PushTokenFilter.ValidationError)
      private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError();
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<ValidationError>
          PARSER = new com.google.protobuf.AbstractParser<ValidationError>() {
        @java.lang.Override
        public ValidationError parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<ValidationError> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<ValidationError> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int TYPES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<java.lang.Integer> types_;
    private static final com.google.protobuf.Internal.ListAdapter.Converter<
        java.lang.Integer, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type> types_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type>() {
              public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type convert(java.lang.Integer from) {
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type result = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type.forNumber(from);
                return result == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type.UNRECOGNIZED : result;
              }
            };
    /**
     * <pre>
     * По типам пуш-токенов
     * </pre>
     *
     * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
     * @return A list containing the types.
     */
    @java.lang.Override
    public java.util.List<ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type> getTypesList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type>(types_, types_converter_);
    }
    /**
     * <pre>
     * По типам пуш-токенов
     * </pre>
     *
     * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
     * @return The count of types.
     */
    @java.lang.Override
    public int getTypesCount() {
      return types_.size();
    }
    /**
     * <pre>
     * По типам пуш-токенов
     * </pre>
     *
     * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
     * @param index The index of the element to return.
     * @return The types at the given index.
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type getTypes(int index) {
      return types_converter_.convert(types_.get(index));
    }
    /**
     * <pre>
     * По типам пуш-токенов
     * </pre>
     *
     * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
     * @return A list containing the enum numeric values on the wire for types.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
    getTypesValueList() {
      return types_;
    }
    /**
     * <pre>
     * По типам пуш-токенов
     * </pre>
     *
     * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
     * @param index The index of the value to return.
     * @return The enum numeric value on the wire of types at the given index.
     */
    @java.lang.Override
    public int getTypesValue(int index) {
      return types_.get(index);
    }
    private int typesMemoizedSerializedSize;

    public static final int USER_APP_IDS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList userAppIds_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * По идентификаторам устройств пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>repeated string user_app_ids = 2;</code>
     * @return A list containing the userAppIds.
     */
    public com.google.protobuf.ProtocolStringList
        getUserAppIdsList() {
      return userAppIds_;
    }
    /**
     * <pre>
     * По идентификаторам устройств пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>repeated string user_app_ids = 2;</code>
     * @return The count of userAppIds.
     */
    public int getUserAppIdsCount() {
      return userAppIds_.size();
    }
    /**
     * <pre>
     * По идентификаторам устройств пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>repeated string user_app_ids = 2;</code>
     * @param index The index of the element to return.
     * @return The userAppIds at the given index.
     */
    public java.lang.String getUserAppIds(int index) {
      return userAppIds_.get(index);
    }
    /**
     * <pre>
     * По идентификаторам устройств пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>repeated string user_app_ids = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the userAppIds at the given index.
     */
    public com.google.protobuf.ByteString
        getUserAppIdsBytes(int index) {
      return userAppIds_.getByteString(index);
    }

    public static final int USER_IDS_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.IntList userIds_;
    /**
     * <pre>
     * По идентификаторам пользователя
     * </pre>
     *
     * <code>repeated int32 user_ids = 3;</code>
     * @return A list containing the userIds.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getUserIdsList() {
      return userIds_;
    }
    /**
     * <pre>
     * По идентификаторам пользователя
     * </pre>
     *
     * <code>repeated int32 user_ids = 3;</code>
     * @return The count of userIds.
     */
    public int getUserIdsCount() {
      return userIds_.size();
    }
    /**
     * <pre>
     * По идентификаторам пользователя
     * </pre>
     *
     * <code>repeated int32 user_ids = 3;</code>
     * @param index The index of the element to return.
     * @return The userIds at the given index.
     */
    public int getUserIds(int index) {
      return userIds_.getInt(index);
    }
    private int userIdsMemoizedSerializedSize = -1;

    public static final int BEGIN_CREATED_AT_FIELD_NUMBER = 4;
    private com.google.protobuf.Timestamp beginCreatedAt_;
    /**
     * <pre>
     * От даты создания включительно (&gt;=)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
     * @return Whether the beginCreatedAt field is set.
     */
    @java.lang.Override
    public boolean hasBeginCreatedAt() {
      return beginCreatedAt_ != null;
    }
    /**
     * <pre>
     * От даты создания включительно (&gt;=)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
     * @return The beginCreatedAt.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getBeginCreatedAt() {
      return beginCreatedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : beginCreatedAt_;
    }
    /**
     * <pre>
     * От даты создания включительно (&gt;=)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getBeginCreatedAtOrBuilder() {
      return beginCreatedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : beginCreatedAt_;
    }

    public static final int END_CREATED_AT_FIELD_NUMBER = 5;
    private com.google.protobuf.Timestamp endCreatedAt_;
    /**
     * <pre>
     * До даты создания (&lt;)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
     * @return Whether the endCreatedAt field is set.
     */
    @java.lang.Override
    public boolean hasEndCreatedAt() {
      return endCreatedAt_ != null;
    }
    /**
     * <pre>
     * До даты создания (&lt;)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
     * @return The endCreatedAt.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getEndCreatedAt() {
      return endCreatedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : endCreatedAt_;
    }
    /**
     * <pre>
     * До даты создания (&lt;)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getEndCreatedAtOrBuilder() {
      return endCreatedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : endCreatedAt_;
    }

    public static final int BEGIN_CHANGED_AT_FIELD_NUMBER = 6;
    private com.google.protobuf.Timestamp beginChangedAt_;
    /**
     * <pre>
     * От даты изменения включительно (&gt;=)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
     * @return Whether the beginChangedAt field is set.
     */
    @java.lang.Override
    public boolean hasBeginChangedAt() {
      return beginChangedAt_ != null;
    }
    /**
     * <pre>
     * От даты изменения включительно (&gt;=)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
     * @return The beginChangedAt.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getBeginChangedAt() {
      return beginChangedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : beginChangedAt_;
    }
    /**
     * <pre>
     * От даты изменения включительно (&gt;=)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getBeginChangedAtOrBuilder() {
      return beginChangedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : beginChangedAt_;
    }

    public static final int END_CHANGED_AT_FIELD_NUMBER = 7;
    private com.google.protobuf.Timestamp endChangedAt_;
    /**
     * <pre>
     * До даты изменения (&lt;)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
     * @return Whether the endChangedAt field is set.
     */
    @java.lang.Override
    public boolean hasEndChangedAt() {
      return endChangedAt_ != null;
    }
    /**
     * <pre>
     * До даты изменения (&lt;)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
     * @return The endChangedAt.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getEndChangedAt() {
      return endChangedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : endChangedAt_;
    }
    /**
     * <pre>
     * До даты изменения (&lt;)
     * </pre>
     *
     * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getEndChangedAtOrBuilder() {
      return endChangedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : endChangedAt_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getTypesList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(typesMemoizedSerializedSize);
      }
      for (int i = 0; i < types_.size(); i++) {
        output.writeEnumNoTag(types_.get(i));
      }
      for (int i = 0; i < userAppIds_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, userAppIds_.getRaw(i));
      }
      if (getUserIdsList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(userIdsMemoizedSerializedSize);
      }
      for (int i = 0; i < userIds_.size(); i++) {
        output.writeInt32NoTag(userIds_.getInt(i));
      }
      if (beginCreatedAt_ != null) {
        output.writeMessage(4, getBeginCreatedAt());
      }
      if (endCreatedAt_ != null) {
        output.writeMessage(5, getEndCreatedAt());
      }
      if (beginChangedAt_ != null) {
        output.writeMessage(6, getBeginChangedAt());
      }
      if (endChangedAt_ != null) {
        output.writeMessage(7, getEndChangedAt());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < types_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(types_.get(i));
        }
        size += dataSize;
        if (!getTypesList().isEmpty()) {  size += 1;
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(dataSize);
        }typesMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < userAppIds_.size(); i++) {
          dataSize += computeStringSizeNoTag(userAppIds_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getUserAppIdsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < userIds_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(userIds_.getInt(i));
        }
        size += dataSize;
        if (!getUserIdsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        userIdsMemoizedSerializedSize = dataSize;
      }
      if (beginCreatedAt_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getBeginCreatedAt());
      }
      if (endCreatedAt_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getEndCreatedAt());
      }
      if (beginChangedAt_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getBeginChangedAt());
      }
      if (endChangedAt_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getEndChangedAt());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter) obj;

      if (!types_.equals(other.types_)) return false;
      if (!getUserAppIdsList()
          .equals(other.getUserAppIdsList())) return false;
      if (!getUserIdsList()
          .equals(other.getUserIdsList())) return false;
      if (hasBeginCreatedAt() != other.hasBeginCreatedAt()) return false;
      if (hasBeginCreatedAt()) {
        if (!getBeginCreatedAt()
            .equals(other.getBeginCreatedAt())) return false;
      }
      if (hasEndCreatedAt() != other.hasEndCreatedAt()) return false;
      if (hasEndCreatedAt()) {
        if (!getEndCreatedAt()
            .equals(other.getEndCreatedAt())) return false;
      }
      if (hasBeginChangedAt() != other.hasBeginChangedAt()) return false;
      if (hasBeginChangedAt()) {
        if (!getBeginChangedAt()
            .equals(other.getBeginChangedAt())) return false;
      }
      if (hasEndChangedAt() != other.hasEndChangedAt()) return false;
      if (hasEndChangedAt()) {
        if (!getEndChangedAt()
            .equals(other.getEndChangedAt())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTypesCount() > 0) {
        hash = (37 * hash) + TYPES_FIELD_NUMBER;
        hash = (53 * hash) + types_.hashCode();
      }
      if (getUserAppIdsCount() > 0) {
        hash = (37 * hash) + USER_APP_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getUserAppIdsList().hashCode();
      }
      if (getUserIdsCount() > 0) {
        hash = (37 * hash) + USER_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getUserIdsList().hashCode();
      }
      if (hasBeginCreatedAt()) {
        hash = (37 * hash) + BEGIN_CREATED_AT_FIELD_NUMBER;
        hash = (53 * hash) + getBeginCreatedAt().hashCode();
      }
      if (hasEndCreatedAt()) {
        hash = (37 * hash) + END_CREATED_AT_FIELD_NUMBER;
        hash = (53 * hash) + getEndCreatedAt().hashCode();
      }
      if (hasBeginChangedAt()) {
        hash = (37 * hash) + BEGIN_CHANGED_AT_FIELD_NUMBER;
        hash = (53 * hash) + getBeginChangedAt().hashCode();
      }
      if (hasEndChangedAt()) {
        hash = (37 * hash) + END_CHANGED_AT_FIELD_NUMBER;
        hash = (53 * hash) + getEndChangedAt().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Фильтр по пуш-токенам
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.PushTokenFilter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PushTokenFilter)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilterOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        types_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        userAppIds_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        userIds_ = emptyIntList();
        beginCreatedAt_ = null;
        if (beginCreatedAtBuilder_ != null) {
          beginCreatedAtBuilder_.dispose();
          beginCreatedAtBuilder_ = null;
        }
        endCreatedAt_ = null;
        if (endCreatedAtBuilder_ != null) {
          endCreatedAtBuilder_.dispose();
          endCreatedAtBuilder_ = null;
        }
        beginChangedAt_ = null;
        if (beginChangedAtBuilder_ != null) {
          beginChangedAtBuilder_.dispose();
          beginChangedAtBuilder_ = null;
        }
        endChangedAt_ = null;
        if (endChangedAtBuilder_ != null) {
          endChangedAtBuilder_.dispose();
          endChangedAtBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenFilter_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter result) {
        if (((bitField0_ & 0x00000001) != 0)) {
          types_ = java.util.Collections.unmodifiableList(types_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.types_ = types_;
        if (((bitField0_ & 0x00000004) != 0)) {
          userIds_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.userIds_ = userIds_;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          userAppIds_.makeImmutable();
          result.userAppIds_ = userAppIds_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.beginCreatedAt_ = beginCreatedAtBuilder_ == null
              ? beginCreatedAt_
              : beginCreatedAtBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.endCreatedAt_ = endCreatedAtBuilder_ == null
              ? endCreatedAt_
              : endCreatedAtBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.beginChangedAt_ = beginChangedAtBuilder_ == null
              ? beginChangedAt_
              : beginChangedAtBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.endChangedAt_ = endChangedAtBuilder_ == null
              ? endChangedAt_
              : endChangedAtBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.getDefaultInstance()) return this;
        if (!other.types_.isEmpty()) {
          if (types_.isEmpty()) {
            types_ = other.types_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTypesIsMutable();
            types_.addAll(other.types_);
          }
          onChanged();
        }
        if (!other.userAppIds_.isEmpty()) {
          if (userAppIds_.isEmpty()) {
            userAppIds_ = other.userAppIds_;
            bitField0_ |= 0x00000002;
          } else {
            ensureUserAppIdsIsMutable();
            userAppIds_.addAll(other.userAppIds_);
          }
          onChanged();
        }
        if (!other.userIds_.isEmpty()) {
          if (userIds_.isEmpty()) {
            userIds_ = other.userIds_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureUserIdsIsMutable();
            userIds_.addAll(other.userIds_);
          }
          onChanged();
        }
        if (other.hasBeginCreatedAt()) {
          mergeBeginCreatedAt(other.getBeginCreatedAt());
        }
        if (other.hasEndCreatedAt()) {
          mergeEndCreatedAt(other.getEndCreatedAt());
        }
        if (other.hasBeginChangedAt()) {
          mergeBeginChangedAt(other.getBeginChangedAt());
        }
        if (other.hasEndChangedAt()) {
          mergeEndChangedAt(other.getEndChangedAt());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                int tmpRaw = input.readEnum();
                ensureTypesIsMutable();
                types_.add(tmpRaw);
                break;
              } // case 8
              case 10: {
                int length = input.readRawVarint32();
                int oldLimit = input.pushLimit(length);
                while(input.getBytesUntilLimit() > 0) {
                  int tmpRaw = input.readEnum();
                  ensureTypesIsMutable();
                  types_.add(tmpRaw);
                }
                input.popLimit(oldLimit);
                break;
              } // case 10
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureUserAppIdsIsMutable();
                userAppIds_.add(s);
                break;
              } // case 18
              case 24: {
                int v = input.readInt32();
                ensureUserIdsIsMutable();
                userIds_.addInt(v);
                break;
              } // case 24
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureUserIdsIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  userIds_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getBeginCreatedAtFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getEndCreatedAtFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getBeginChangedAtFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getEndChangedAtFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<java.lang.Integer> types_ =
        java.util.Collections.emptyList();
      private void ensureTypesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          types_ = new java.util.ArrayList<java.lang.Integer>(types_);
          bitField0_ |= 0x00000001;
        }
      }
      /**
       * <pre>
       * По типам пуш-токенов
       * </pre>
       *
       * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
       * @return A list containing the types.
       */
      public java.util.List<ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type> getTypesList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type>(types_, types_converter_);
      }
      /**
       * <pre>
       * По типам пуш-токенов
       * </pre>
       *
       * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
       * @return The count of types.
       */
      public int getTypesCount() {
        return types_.size();
      }
      /**
       * <pre>
       * По типам пуш-токенов
       * </pre>
       *
       * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
       * @param index The index of the element to return.
       * @return The types at the given index.
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type getTypes(int index) {
        return types_converter_.convert(types_.get(index));
      }
      /**
       * <pre>
       * По типам пуш-токенов
       * </pre>
       *
       * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
       * @param index The index to set the value at.
       * @param value The types to set.
       * @return This builder for chaining.
       */
      public Builder setTypes(
          int index, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypesIsMutable();
        types_.set(index, value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По типам пуш-токенов
       * </pre>
       *
       * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
       * @param value The types to add.
       * @return This builder for chaining.
       */
      public Builder addTypes(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTypesIsMutable();
        types_.add(value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По типам пуш-токенов
       * </pre>
       *
       * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
       * @param values The types to add.
       * @return This builder for chaining.
       */
      public Builder addAllTypes(
          java.lang.Iterable<? extends ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type> values) {
        ensureTypesIsMutable();
        for (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Type value : values) {
          types_.add(value.getNumber());
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По типам пуш-токенов
       * </pre>
       *
       * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTypes() {
        types_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По типам пуш-токенов
       * </pre>
       *
       * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
       * @return A list containing the enum numeric values on the wire for types.
       */
      public java.util.List<java.lang.Integer>
      getTypesValueList() {
        return java.util.Collections.unmodifiableList(types_);
      }
      /**
       * <pre>
       * По типам пуш-токенов
       * </pre>
       *
       * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
       * @param index The index of the value to return.
       * @return The enum numeric value on the wire of types at the given index.
       */
      public int getTypesValue(int index) {
        return types_.get(index);
      }
      /**
       * <pre>
       * По типам пуш-токенов
       * </pre>
       *
       * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
       * @param index The index to set the value at.
       * @param value The enum numeric value on the wire for types to set.
       * @return This builder for chaining.
       */
      public Builder setTypesValue(
          int index, int value) {
        ensureTypesIsMutable();
        types_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По типам пуш-токенов
       * </pre>
       *
       * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
       * @param value The enum numeric value on the wire for types to add.
       * @return This builder for chaining.
       */
      public Builder addTypesValue(int value) {
        ensureTypesIsMutable();
        types_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По типам пуш-токенов
       * </pre>
       *
       * <code>repeated .keyapis.notification.v1.PushToken.Type types = 1;</code>
       * @param values The enum numeric values on the wire for types to add.
       * @return This builder for chaining.
       */
      public Builder addAllTypesValue(
          java.lang.Iterable<java.lang.Integer> values) {
        ensureTypesIsMutable();
        for (int value : values) {
          types_.add(value);
        }
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList userAppIds_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureUserAppIdsIsMutable() {
        if (!userAppIds_.isModifiable()) {
          userAppIds_ = new com.google.protobuf.LazyStringArrayList(userAppIds_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * По идентификаторам устройств пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>repeated string user_app_ids = 2;</code>
       * @return A list containing the userAppIds.
       */
      public com.google.protobuf.ProtocolStringList
          getUserAppIdsList() {
        userAppIds_.makeImmutable();
        return userAppIds_;
      }
      /**
       * <pre>
       * По идентификаторам устройств пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>repeated string user_app_ids = 2;</code>
       * @return The count of userAppIds.
       */
      public int getUserAppIdsCount() {
        return userAppIds_.size();
      }
      /**
       * <pre>
       * По идентификаторам устройств пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>repeated string user_app_ids = 2;</code>
       * @param index The index of the element to return.
       * @return The userAppIds at the given index.
       */
      public java.lang.String getUserAppIds(int index) {
        return userAppIds_.get(index);
      }
      /**
       * <pre>
       * По идентификаторам устройств пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>repeated string user_app_ids = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the userAppIds at the given index.
       */
      public com.google.protobuf.ByteString
          getUserAppIdsBytes(int index) {
        return userAppIds_.getByteString(index);
      }
      /**
       * <pre>
       * По идентификаторам устройств пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>repeated string user_app_ids = 2;</code>
       * @param index The index to set the value at.
       * @param value The userAppIds to set.
       * @return This builder for chaining.
       */
      public Builder setUserAppIds(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureUserAppIdsIsMutable();
        userAppIds_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По идентификаторам устройств пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>repeated string user_app_ids = 2;</code>
       * @param value The userAppIds to add.
       * @return This builder for chaining.
       */
      public Builder addUserAppIds(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureUserAppIdsIsMutable();
        userAppIds_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По идентификаторам устройств пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>repeated string user_app_ids = 2;</code>
       * @param values The userAppIds to add.
       * @return This builder for chaining.
       */
      public Builder addAllUserAppIds(
          java.lang.Iterable<java.lang.String> values) {
        ensureUserAppIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, userAppIds_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По идентификаторам устройств пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>repeated string user_app_ids = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearUserAppIds() {
        userAppIds_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По идентификаторам устройств пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>repeated string user_app_ids = 2;</code>
       * @param value The bytes of the userAppIds to add.
       * @return This builder for chaining.
       */
      public Builder addUserAppIdsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureUserAppIdsIsMutable();
        userAppIds_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList userIds_ = emptyIntList();
      private void ensureUserIdsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          userIds_ = mutableCopy(userIds_);
          bitField0_ |= 0x00000004;
        }
      }
      /**
       * <pre>
       * По идентификаторам пользователя
       * </pre>
       *
       * <code>repeated int32 user_ids = 3;</code>
       * @return A list containing the userIds.
       */
      public java.util.List<java.lang.Integer>
          getUserIdsList() {
        return ((bitField0_ & 0x00000004) != 0) ?
                 java.util.Collections.unmodifiableList(userIds_) : userIds_;
      }
      /**
       * <pre>
       * По идентификаторам пользователя
       * </pre>
       *
       * <code>repeated int32 user_ids = 3;</code>
       * @return The count of userIds.
       */
      public int getUserIdsCount() {
        return userIds_.size();
      }
      /**
       * <pre>
       * По идентификаторам пользователя
       * </pre>
       *
       * <code>repeated int32 user_ids = 3;</code>
       * @param index The index of the element to return.
       * @return The userIds at the given index.
       */
      public int getUserIds(int index) {
        return userIds_.getInt(index);
      }
      /**
       * <pre>
       * По идентификаторам пользователя
       * </pre>
       *
       * <code>repeated int32 user_ids = 3;</code>
       * @param index The index to set the value at.
       * @param value The userIds to set.
       * @return This builder for chaining.
       */
      public Builder setUserIds(
          int index, int value) {

        ensureUserIdsIsMutable();
        userIds_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По идентификаторам пользователя
       * </pre>
       *
       * <code>repeated int32 user_ids = 3;</code>
       * @param value The userIds to add.
       * @return This builder for chaining.
       */
      public Builder addUserIds(int value) {

        ensureUserIdsIsMutable();
        userIds_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По идентификаторам пользователя
       * </pre>
       *
       * <code>repeated int32 user_ids = 3;</code>
       * @param values The userIds to add.
       * @return This builder for chaining.
       */
      public Builder addAllUserIds(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureUserIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, userIds_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По идентификаторам пользователя
       * </pre>
       *
       * <code>repeated int32 user_ids = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearUserIds() {
        userIds_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp beginCreatedAt_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> beginCreatedAtBuilder_;
      /**
       * <pre>
       * От даты создания включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
       * @return Whether the beginCreatedAt field is set.
       */
      public boolean hasBeginCreatedAt() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * От даты создания включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
       * @return The beginCreatedAt.
       */
      public com.google.protobuf.Timestamp getBeginCreatedAt() {
        if (beginCreatedAtBuilder_ == null) {
          return beginCreatedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : beginCreatedAt_;
        } else {
          return beginCreatedAtBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * От даты создания включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
       */
      public Builder setBeginCreatedAt(com.google.protobuf.Timestamp value) {
        if (beginCreatedAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          beginCreatedAt_ = value;
        } else {
          beginCreatedAtBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * От даты создания включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
       */
      public Builder setBeginCreatedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (beginCreatedAtBuilder_ == null) {
          beginCreatedAt_ = builderForValue.build();
        } else {
          beginCreatedAtBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * От даты создания включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
       */
      public Builder mergeBeginCreatedAt(com.google.protobuf.Timestamp value) {
        if (beginCreatedAtBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            beginCreatedAt_ != null &&
            beginCreatedAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getBeginCreatedAtBuilder().mergeFrom(value);
          } else {
            beginCreatedAt_ = value;
          }
        } else {
          beginCreatedAtBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * От даты создания включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
       */
      public Builder clearBeginCreatedAt() {
        bitField0_ = (bitField0_ & ~0x00000008);
        beginCreatedAt_ = null;
        if (beginCreatedAtBuilder_ != null) {
          beginCreatedAtBuilder_.dispose();
          beginCreatedAtBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * От даты создания включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
       */
      public com.google.protobuf.Timestamp.Builder getBeginCreatedAtBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getBeginCreatedAtFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * От даты создания включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getBeginCreatedAtOrBuilder() {
        if (beginCreatedAtBuilder_ != null) {
          return beginCreatedAtBuilder_.getMessageOrBuilder();
        } else {
          return beginCreatedAt_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : beginCreatedAt_;
        }
      }
      /**
       * <pre>
       * От даты создания включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_created_at = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getBeginCreatedAtFieldBuilder() {
        if (beginCreatedAtBuilder_ == null) {
          beginCreatedAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getBeginCreatedAt(),
                  getParentForChildren(),
                  isClean());
          beginCreatedAt_ = null;
        }
        return beginCreatedAtBuilder_;
      }

      private com.google.protobuf.Timestamp endCreatedAt_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> endCreatedAtBuilder_;
      /**
       * <pre>
       * До даты создания (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
       * @return Whether the endCreatedAt field is set.
       */
      public boolean hasEndCreatedAt() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * До даты создания (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
       * @return The endCreatedAt.
       */
      public com.google.protobuf.Timestamp getEndCreatedAt() {
        if (endCreatedAtBuilder_ == null) {
          return endCreatedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : endCreatedAt_;
        } else {
          return endCreatedAtBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * До даты создания (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
       */
      public Builder setEndCreatedAt(com.google.protobuf.Timestamp value) {
        if (endCreatedAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endCreatedAt_ = value;
        } else {
          endCreatedAtBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * До даты создания (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
       */
      public Builder setEndCreatedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (endCreatedAtBuilder_ == null) {
          endCreatedAt_ = builderForValue.build();
        } else {
          endCreatedAtBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * До даты создания (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
       */
      public Builder mergeEndCreatedAt(com.google.protobuf.Timestamp value) {
        if (endCreatedAtBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            endCreatedAt_ != null &&
            endCreatedAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getEndCreatedAtBuilder().mergeFrom(value);
          } else {
            endCreatedAt_ = value;
          }
        } else {
          endCreatedAtBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * До даты создания (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
       */
      public Builder clearEndCreatedAt() {
        bitField0_ = (bitField0_ & ~0x00000010);
        endCreatedAt_ = null;
        if (endCreatedAtBuilder_ != null) {
          endCreatedAtBuilder_.dispose();
          endCreatedAtBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * До даты создания (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
       */
      public com.google.protobuf.Timestamp.Builder getEndCreatedAtBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getEndCreatedAtFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * До даты создания (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getEndCreatedAtOrBuilder() {
        if (endCreatedAtBuilder_ != null) {
          return endCreatedAtBuilder_.getMessageOrBuilder();
        } else {
          return endCreatedAt_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : endCreatedAt_;
        }
      }
      /**
       * <pre>
       * До даты создания (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_created_at = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getEndCreatedAtFieldBuilder() {
        if (endCreatedAtBuilder_ == null) {
          endCreatedAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getEndCreatedAt(),
                  getParentForChildren(),
                  isClean());
          endCreatedAt_ = null;
        }
        return endCreatedAtBuilder_;
      }

      private com.google.protobuf.Timestamp beginChangedAt_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> beginChangedAtBuilder_;
      /**
       * <pre>
       * От даты изменения включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
       * @return Whether the beginChangedAt field is set.
       */
      public boolean hasBeginChangedAt() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * От даты изменения включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
       * @return The beginChangedAt.
       */
      public com.google.protobuf.Timestamp getBeginChangedAt() {
        if (beginChangedAtBuilder_ == null) {
          return beginChangedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : beginChangedAt_;
        } else {
          return beginChangedAtBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * От даты изменения включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
       */
      public Builder setBeginChangedAt(com.google.protobuf.Timestamp value) {
        if (beginChangedAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          beginChangedAt_ = value;
        } else {
          beginChangedAtBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * От даты изменения включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
       */
      public Builder setBeginChangedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (beginChangedAtBuilder_ == null) {
          beginChangedAt_ = builderForValue.build();
        } else {
          beginChangedAtBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * От даты изменения включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
       */
      public Builder mergeBeginChangedAt(com.google.protobuf.Timestamp value) {
        if (beginChangedAtBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            beginChangedAt_ != null &&
            beginChangedAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getBeginChangedAtBuilder().mergeFrom(value);
          } else {
            beginChangedAt_ = value;
          }
        } else {
          beginChangedAtBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * От даты изменения включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
       */
      public Builder clearBeginChangedAt() {
        bitField0_ = (bitField0_ & ~0x00000020);
        beginChangedAt_ = null;
        if (beginChangedAtBuilder_ != null) {
          beginChangedAtBuilder_.dispose();
          beginChangedAtBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * От даты изменения включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
       */
      public com.google.protobuf.Timestamp.Builder getBeginChangedAtBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getBeginChangedAtFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * От даты изменения включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getBeginChangedAtOrBuilder() {
        if (beginChangedAtBuilder_ != null) {
          return beginChangedAtBuilder_.getMessageOrBuilder();
        } else {
          return beginChangedAt_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : beginChangedAt_;
        }
      }
      /**
       * <pre>
       * От даты изменения включительно (&gt;=)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp begin_changed_at = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getBeginChangedAtFieldBuilder() {
        if (beginChangedAtBuilder_ == null) {
          beginChangedAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getBeginChangedAt(),
                  getParentForChildren(),
                  isClean());
          beginChangedAt_ = null;
        }
        return beginChangedAtBuilder_;
      }

      private com.google.protobuf.Timestamp endChangedAt_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> endChangedAtBuilder_;
      /**
       * <pre>
       * До даты изменения (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
       * @return Whether the endChangedAt field is set.
       */
      public boolean hasEndChangedAt() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * До даты изменения (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
       * @return The endChangedAt.
       */
      public com.google.protobuf.Timestamp getEndChangedAt() {
        if (endChangedAtBuilder_ == null) {
          return endChangedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : endChangedAt_;
        } else {
          return endChangedAtBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * До даты изменения (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
       */
      public Builder setEndChangedAt(com.google.protobuf.Timestamp value) {
        if (endChangedAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endChangedAt_ = value;
        } else {
          endChangedAtBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * До даты изменения (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
       */
      public Builder setEndChangedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (endChangedAtBuilder_ == null) {
          endChangedAt_ = builderForValue.build();
        } else {
          endChangedAtBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * До даты изменения (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
       */
      public Builder mergeEndChangedAt(com.google.protobuf.Timestamp value) {
        if (endChangedAtBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            endChangedAt_ != null &&
            endChangedAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getEndChangedAtBuilder().mergeFrom(value);
          } else {
            endChangedAt_ = value;
          }
        } else {
          endChangedAtBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * До даты изменения (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
       */
      public Builder clearEndChangedAt() {
        bitField0_ = (bitField0_ & ~0x00000040);
        endChangedAt_ = null;
        if (endChangedAtBuilder_ != null) {
          endChangedAtBuilder_.dispose();
          endChangedAtBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * До даты изменения (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
       */
      public com.google.protobuf.Timestamp.Builder getEndChangedAtBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getEndChangedAtFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * До даты изменения (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getEndChangedAtOrBuilder() {
        if (endChangedAtBuilder_ != null) {
          return endChangedAtBuilder_.getMessageOrBuilder();
        } else {
          return endChangedAt_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : endChangedAt_;
        }
      }
      /**
       * <pre>
       * До даты изменения (&lt;)
       * </pre>
       *
       * <code>.google.protobuf.Timestamp end_changed_at = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getEndChangedAtFieldBuilder() {
        if (endChangedAtBuilder_ == null) {
          endChangedAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getEndChangedAt(),
                  getParentForChildren(),
                  isClean());
          endChangedAt_ = null;
        }
        return endChangedAtBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PushTokenFilter)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PushTokenFilter)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PushTokenFilter>
        PARSER = new com.google.protobuf.AbstractParser<PushTokenFilter>() {
      @java.lang.Override
      public PushTokenFilter parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<PushTokenFilter> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PushTokenFilter> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PushTokenPagingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PushTokenPaging)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: ID
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging.OrderByType order_by_type = 1;</code>
     * @return The enum numeric value on the wire for orderByType.
     */
    int getOrderByTypeValue();
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: ID
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging.OrderByType order_by_type = 1;</code>
     * @return The orderByType.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.OrderByType getOrderByType();

    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging.DirectionType direction_type = 2;</code>
     * @return The enum numeric value on the wire for directionType.
     */
    int getDirectionTypeValue();
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging.DirectionType direction_type = 2;</code>
     * @return The directionType.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.DirectionType getDirectionType();

    /**
     * <pre>
     * Количество записей на страницу.
     * Если значение 0 (не передано), то будет взято значение по умолчанию.
     * # Диапазон: 0..100.
     * # По умолчанию: 20
     * </pre>
     *
     * <code>int32 limit = 3;</code>
     * @return The limit.
     */
    int getLimit();

    /**
     * <pre>
     * Сдвиг.
     * # Диапазон: 0..2147483647
     * </pre>
     *
     * <code>int32 offset = 4;</code>
     * @return The offset.
     */
    int getOffset();
  }
  /**
   * <pre>
   * Постраничный вывод
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.PushTokenPaging}
   */
  public static final class PushTokenPaging extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PushTokenPaging)
      PushTokenPagingOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PushTokenPaging.newBuilder() to construct.
    private PushTokenPaging(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PushTokenPaging() {
      orderByType_ = 0;
      directionType_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PushTokenPaging();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.Builder.class);
    }

    /**
     * <pre>
     * Справочник типов значений сортировки.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.notification.v1.PushTokenPaging.OrderByType}
     */
    public enum OrderByType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>ORDER_BY_TYPE_UNKNOWN = 0;</code>
       */
      ORDER_BY_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * По идентификатору
       * </pre>
       *
       * <code>ID = 1;</code>
       */
      ID(1),
      /**
       * <pre>
       * По времени создания
       * </pre>
       *
       * <code>CREATED_AT = 2;</code>
       */
      CREATED_AT(2),
      /**
       * <pre>
       * По времени изменения
       * </pre>
       *
       * <code>CHANGED_AT = 3;</code>
       */
      CHANGED_AT(3),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>ORDER_BY_TYPE_UNKNOWN = 0;</code>
       */
      public static final int ORDER_BY_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * По идентификатору
       * </pre>
       *
       * <code>ID = 1;</code>
       */
      public static final int ID_VALUE = 1;
      /**
       * <pre>
       * По времени создания
       * </pre>
       *
       * <code>CREATED_AT = 2;</code>
       */
      public static final int CREATED_AT_VALUE = 2;
      /**
       * <pre>
       * По времени изменения
       * </pre>
       *
       * <code>CHANGED_AT = 3;</code>
       */
      public static final int CHANGED_AT_VALUE = 3;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static OrderByType valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static OrderByType forNumber(int value) {
        switch (value) {
          case 0: return ORDER_BY_TYPE_UNKNOWN;
          case 1: return ID;
          case 2: return CREATED_AT;
          case 3: return CHANGED_AT;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<OrderByType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          OrderByType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<OrderByType>() {
              public OrderByType findValueByNumber(int number) {
                return OrderByType.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.getDescriptor().getEnumTypes().get(0);
      }

      private static final OrderByType[] VALUES = values();

      public static OrderByType valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private OrderByType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.notification.v1.PushTokenPaging.OrderByType)
    }

    /**
     * <pre>
     * Справочник типов направлений сортировки.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.notification.v1.PushTokenPaging.DirectionType}
     */
    public enum DirectionType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>DIRECTION_TYPE_UNKNOWN = 0;</code>
       */
      DIRECTION_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * От большего к меньшему
       * </pre>
       *
       * <code>DESC = 1;</code>
       */
      DESC(1),
      /**
       * <pre>
       * От меньшего к большему
       * </pre>
       *
       * <code>ASC = 2;</code>
       */
      ASC(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>DIRECTION_TYPE_UNKNOWN = 0;</code>
       */
      public static final int DIRECTION_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * От большего к меньшему
       * </pre>
       *
       * <code>DESC = 1;</code>
       */
      public static final int DESC_VALUE = 1;
      /**
       * <pre>
       * От меньшего к большему
       * </pre>
       *
       * <code>ASC = 2;</code>
       */
      public static final int ASC_VALUE = 2;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static DirectionType valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static DirectionType forNumber(int value) {
        switch (value) {
          case 0: return DIRECTION_TYPE_UNKNOWN;
          case 1: return DESC;
          case 2: return ASC;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<DirectionType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          DirectionType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<DirectionType>() {
              public DirectionType findValueByNumber(int number) {
                return DirectionType.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.getDescriptor().getEnumTypes().get(1);
      }

      private static final DirectionType[] VALUES = values();

      public static DirectionType valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private DirectionType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.notification.v1.PushTokenPaging.DirectionType)
    }

    public interface ValidationErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PushTokenPaging.ValidationError)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Количество передано некорректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
       * @return Whether the limit field is set.
       */
      boolean hasLimit();
      /**
       * <pre>
       * Количество передано некорректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
       * @return The limit.
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid getLimit();
      /**
       * <pre>
       * Количество передано некорректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalidOrBuilder getLimitOrBuilder();

      /**
       * <pre>
       * Сдвиг передан некорректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
       * @return Whether the offset field is set.
       */
      boolean hasOffset();
      /**
       * <pre>
       * Сдвиг передан некорректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
       * @return The offset.
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid getOffset();
      /**
       * <pre>
       * Сдвиг передан некорректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalidOrBuilder getOffsetOrBuilder();

      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка валидации постраничной пагинации по пуш-токенам.
     * Эти проверки выполняются до обращения в базу данных
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.PushTokenPaging.ValidationError}
     */
    public static final class ValidationError extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PushTokenPaging.ValidationError)
        ValidationErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ValidationError.newBuilder() to construct.
      private ValidationError(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ValidationError() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new ValidationError();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.Builder.class);
      }

      public interface LimitInvalidOrBuilder extends
          // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid)
          com.google.protobuf.MessageOrBuilder {
      }
      /**
       * <pre>
       * Причины:
       * - Значение количества &lt; 0 или &gt; 100
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid}
       */
      public static final class LimitInvalid extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid)
          LimitInvalidOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use LimitInvalid.newBuilder() to construct.
        private LimitInvalid(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private LimitInvalid() {
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(
            UnusedPrivateParameter unused) {
          return new LimitInvalid();
        }

        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_LimitInvalid_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_LimitInvalid_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.Builder.class);
        }

        private byte memoizedIsInitialized = -1;
        @java.lang.Override
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;

          size = 0;
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid)) {
            return super.equals(obj);
          }
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid) obj;

          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * <pre>
         * Причины:
         * - Значение количества &lt; 0 или &gt; 100
         * </pre>
         *
         * Protobuf type {@code keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid)
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalidOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_LimitInvalid_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_LimitInvalid_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.Builder.class);
          }

          // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.newBuilder()
          private Builder() {

          }

          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_LimitInvalid_descriptor;
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid getDefaultInstanceForType() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.getDefaultInstance();
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid build() {
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid buildPartial() {
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid(this);
            onBuilt();
            return result;
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid) {
              return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid other) {
            if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.getDefaultInstance()) return this;
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

          @java.lang.Override
          public final boolean isInitialized() {
            return true;
          }

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

          @java.lang.Override
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }


          // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid)
        }

        // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid)
        private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid();
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<LimitInvalid>
            PARSER = new com.google.protobuf.AbstractParser<LimitInvalid>() {
          @java.lang.Override
          public LimitInvalid parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

        public static com.google.protobuf.Parser<LimitInvalid> parser() {
          return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<LimitInvalid> getParserForType() {
          return PARSER;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      public interface OffsetInvalidOrBuilder extends
          // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid)
          com.google.protobuf.MessageOrBuilder {
      }
      /**
       * <pre>
       * Причины:
       * - Значение сдвига &lt; 0
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid}
       */
      public static final class OffsetInvalid extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid)
          OffsetInvalidOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use OffsetInvalid.newBuilder() to construct.
        private OffsetInvalid(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private OffsetInvalid() {
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(
            UnusedPrivateParameter unused) {
          return new OffsetInvalid();
        }

        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_OffsetInvalid_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_OffsetInvalid_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.Builder.class);
        }

        private byte memoizedIsInitialized = -1;
        @java.lang.Override
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;

          size = 0;
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid)) {
            return super.equals(obj);
          }
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid) obj;

          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * <pre>
         * Причины:
         * - Значение сдвига &lt; 0
         * </pre>
         *
         * Protobuf type {@code keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid)
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalidOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_OffsetInvalid_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_OffsetInvalid_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.Builder.class);
          }

          // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.newBuilder()
          private Builder() {

          }

          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_OffsetInvalid_descriptor;
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid getDefaultInstanceForType() {
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.getDefaultInstance();
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid build() {
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid buildPartial() {
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid(this);
            onBuilt();
            return result;
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid) {
              return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid other) {
            if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.getDefaultInstance()) return this;
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

          @java.lang.Override
          public final boolean isInitialized() {
            return true;
          }

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

          @java.lang.Override
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }


          // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid)
        }

        // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid)
        private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid();
        }

        public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<OffsetInvalid>
            PARSER = new com.google.protobuf.AbstractParser<OffsetInvalid>() {
          @java.lang.Override
          public OffsetInvalid parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

        public static com.google.protobuf.Parser<OffsetInvalid> parser() {
          return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<OffsetInvalid> getParserForType() {
          return PARSER;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      private int reasonCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object reason_;
      public enum ReasonCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        LIMIT(1),
        OFFSET(2),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return LIMIT;
            case 2: return OFFSET;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      public static final int LIMIT_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Количество передано некорректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
       * @return Whether the limit field is set.
       */
      @java.lang.Override
      public boolean hasLimit() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Количество передано некорректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
       * @return The limit.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid getLimit() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.getDefaultInstance();
      }
      /**
       * <pre>
       * Количество передано некорректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalidOrBuilder getLimitOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.getDefaultInstance();
      }

      public static final int OFFSET_FIELD_NUMBER = 2;
      /**
       * <pre>
       * Сдвиг передан некорректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
       * @return Whether the offset field is set.
       */
      @java.lang.Override
      public boolean hasOffset() {
        return reasonCase_ == 2;
      }
      /**
       * <pre>
       * Сдвиг передан некорректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
       * @return The offset.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid getOffset() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.getDefaultInstance();
      }
      /**
       * <pre>
       * Сдвиг передан некорректно
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalidOrBuilder getOffsetOrBuilder() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.getDefaultInstance();
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid) reason_);
        }
        if (reasonCase_ == 2) {
          output.writeMessage(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid) reason_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid) reason_);
        }
        if (reasonCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError)) {
          return super.equals(obj);
        }
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError) obj;

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getLimit()
                .equals(other.getLimit())) return false;
            break;
          case 2:
            if (!getOffset()
                .equals(other.getOffset())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        switch (reasonCase_) {
          case 1:
            hash = (37 * hash) + LIMIT_FIELD_NUMBER;
            hash = (53 * hash) + getLimit().hashCode();
            break;
          case 2:
            hash = (37 * hash) + OFFSET_FIELD_NUMBER;
            hash = (53 * hash) + getOffset().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибка валидации постраничной пагинации по пуш-токенам.
       * Эти проверки выполняются до обращения в базу данных
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.PushTokenPaging.ValidationError}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PushTokenPaging.ValidationError)
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.Builder.class);
        }

        // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (limitBuilder_ != null) {
            limitBuilder_.clear();
          }
          if (offsetBuilder_ != null) {
            offsetBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError getDefaultInstanceForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError build() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError buildPartial() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              limitBuilder_ != null) {
            result.reason_ = limitBuilder_.build();
          }
          if (reasonCase_ == 2 &&
              offsetBuilder_ != null) {
            result.reason_ = offsetBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError) {
            return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError other) {
          if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case LIMIT: {
              mergeLimit(other.getLimit());
              break;
            }
            case OFFSET: {
              mergeOffset(other.getOffset());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getLimitFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getOffsetFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 2;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

        public Builder clearReason() {
          reasonCase_ = 0;
          reason_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalidOrBuilder> limitBuilder_;
        /**
         * <pre>
         * Количество передано некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
         * @return Whether the limit field is set.
         */
        @java.lang.Override
        public boolean hasLimit() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Количество передано некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
         * @return The limit.
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid getLimit() {
          if (limitBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return limitBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Количество передано некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
         */
        public Builder setLimit(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid value) {
          if (limitBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            limitBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Количество передано некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
         */
        public Builder setLimit(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.Builder builderForValue) {
          if (limitBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            limitBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Количество передано некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
         */
        public Builder mergeLimit(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid value) {
          if (limitBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              limitBuilder_.mergeFrom(value);
            } else {
              limitBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Количество передано некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
         */
        public Builder clearLimit() {
          if (limitBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            limitBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Количество передано некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
         */
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.Builder getLimitBuilder() {
          return getLimitFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Количество передано некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalidOrBuilder getLimitOrBuilder() {
          if ((reasonCase_ == 1) && (limitBuilder_ != null)) {
            return limitBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Количество передано некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid limit = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalidOrBuilder> 
            getLimitFieldBuilder() {
          if (limitBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.getDefaultInstance();
            }
            limitBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalidOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.LimitInvalid) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return limitBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalidOrBuilder> offsetBuilder_;
        /**
         * <pre>
         * Сдвиг передан некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
         * @return Whether the offset field is set.
         */
        @java.lang.Override
        public boolean hasOffset() {
          return reasonCase_ == 2;
        }
        /**
         * <pre>
         * Сдвиг передан некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
         * @return The offset.
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid getOffset() {
          if (offsetBuilder_ == null) {
            if (reasonCase_ == 2) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.getDefaultInstance();
          } else {
            if (reasonCase_ == 2) {
              return offsetBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Сдвиг передан некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
         */
        public Builder setOffset(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid value) {
          if (offsetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            offsetBuilder_.setMessage(value);
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Сдвиг передан некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
         */
        public Builder setOffset(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.Builder builderForValue) {
          if (offsetBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            offsetBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Сдвиг передан некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
         */
        public Builder mergeOffset(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid value) {
          if (offsetBuilder_ == null) {
            if (reasonCase_ == 2 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 2) {
              offsetBuilder_.mergeFrom(value);
            } else {
              offsetBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Сдвиг передан некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
         */
        public Builder clearOffset() {
          if (offsetBuilder_ == null) {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
            }
            offsetBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Сдвиг передан некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
         */
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.Builder getOffsetBuilder() {
          return getOffsetFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Сдвиг передан некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalidOrBuilder getOffsetOrBuilder() {
          if ((reasonCase_ == 2) && (offsetBuilder_ != null)) {
            return offsetBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 2) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Сдвиг передан некорректно
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid offset = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalidOrBuilder> 
            getOffsetFieldBuilder() {
          if (offsetBuilder_ == null) {
            if (!(reasonCase_ == 2)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.getDefaultInstance();
            }
            offsetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalidOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.OffsetInvalid) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 2;
          onChanged();
          return offsetBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PushTokenPaging.ValidationError)
      }

      // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PushTokenPaging.ValidationError)
      private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError();
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<ValidationError>
          PARSER = new com.google.protobuf.AbstractParser<ValidationError>() {
        @java.lang.Override
        public ValidationError parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<ValidationError> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<ValidationError> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int ORDER_BY_TYPE_FIELD_NUMBER = 1;
    private int orderByType_ = 0;
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: ID
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging.OrderByType order_by_type = 1;</code>
     * @return The enum numeric value on the wire for orderByType.
     */
    @java.lang.Override public int getOrderByTypeValue() {
      return orderByType_;
    }
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: ID
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging.OrderByType order_by_type = 1;</code>
     * @return The orderByType.
     */
    @java.lang.Override public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.OrderByType getOrderByType() {
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.OrderByType result = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.OrderByType.forNumber(orderByType_);
      return result == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.OrderByType.UNRECOGNIZED : result;
    }

    public static final int DIRECTION_TYPE_FIELD_NUMBER = 2;
    private int directionType_ = 0;
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging.DirectionType direction_type = 2;</code>
     * @return The enum numeric value on the wire for directionType.
     */
    @java.lang.Override public int getDirectionTypeValue() {
      return directionType_;
    }
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging.DirectionType direction_type = 2;</code>
     * @return The directionType.
     */
    @java.lang.Override public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.DirectionType getDirectionType() {
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.DirectionType result = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.DirectionType.forNumber(directionType_);
      return result == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.DirectionType.UNRECOGNIZED : result;
    }

    public static final int LIMIT_FIELD_NUMBER = 3;
    private int limit_ = 0;
    /**
     * <pre>
     * Количество записей на страницу.
     * Если значение 0 (не передано), то будет взято значение по умолчанию.
     * # Диапазон: 0..100.
     * # По умолчанию: 20
     * </pre>
     *
     * <code>int32 limit = 3;</code>
     * @return The limit.
     */
    @java.lang.Override
    public int getLimit() {
      return limit_;
    }

    public static final int OFFSET_FIELD_NUMBER = 4;
    private int offset_ = 0;
    /**
     * <pre>
     * Сдвиг.
     * # Диапазон: 0..2147483647
     * </pre>
     *
     * <code>int32 offset = 4;</code>
     * @return The offset.
     */
    @java.lang.Override
    public int getOffset() {
      return offset_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (orderByType_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.OrderByType.ORDER_BY_TYPE_UNKNOWN.getNumber()) {
        output.writeEnum(1, orderByType_);
      }
      if (directionType_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.DirectionType.DIRECTION_TYPE_UNKNOWN.getNumber()) {
        output.writeEnum(2, directionType_);
      }
      if (limit_ != 0) {
        output.writeInt32(3, limit_);
      }
      if (offset_ != 0) {
        output.writeInt32(4, offset_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (orderByType_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.OrderByType.ORDER_BY_TYPE_UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, orderByType_);
      }
      if (directionType_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.DirectionType.DIRECTION_TYPE_UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, directionType_);
      }
      if (limit_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, limit_);
      }
      if (offset_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, offset_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging) obj;

      if (orderByType_ != other.orderByType_) return false;
      if (directionType_ != other.directionType_) return false;
      if (getLimit()
          != other.getLimit()) return false;
      if (getOffset()
          != other.getOffset()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ORDER_BY_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + orderByType_;
      hash = (37 * hash) + DIRECTION_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + directionType_;
      hash = (37 * hash) + LIMIT_FIELD_NUMBER;
      hash = (53 * hash) + getLimit();
      hash = (37 * hash) + OFFSET_FIELD_NUMBER;
      hash = (53 * hash) + getOffset();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Постраничный вывод
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.PushTokenPaging}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PushTokenPaging)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPagingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        orderByType_ = 0;
        directionType_ = 0;
        limit_ = 0;
        offset_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PushTokenPaging_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.orderByType_ = orderByType_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.directionType_ = directionType_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.limit_ = limit_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.offset_ = offset_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.getDefaultInstance()) return this;
        if (other.orderByType_ != 0) {
          setOrderByTypeValue(other.getOrderByTypeValue());
        }
        if (other.directionType_ != 0) {
          setDirectionTypeValue(other.getDirectionTypeValue());
        }
        if (other.getLimit() != 0) {
          setLimit(other.getLimit());
        }
        if (other.getOffset() != 0) {
          setOffset(other.getOffset());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                orderByType_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                directionType_ = input.readEnum();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                limit_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                offset_ = input.readInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int orderByType_ = 0;
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.OrderByType order_by_type = 1;</code>
       * @return The enum numeric value on the wire for orderByType.
       */
      @java.lang.Override public int getOrderByTypeValue() {
        return orderByType_;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.OrderByType order_by_type = 1;</code>
       * @param value The enum numeric value on the wire for orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByTypeValue(int value) {
        orderByType_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.OrderByType order_by_type = 1;</code>
       * @return The orderByType.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.OrderByType getOrderByType() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.OrderByType result = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.OrderByType.forNumber(orderByType_);
        return result == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.OrderByType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.OrderByType order_by_type = 1;</code>
       * @param value The orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByType(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.OrderByType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        orderByType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.OrderByType order_by_type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOrderByType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        orderByType_ = 0;
        onChanged();
        return this;
      }

      private int directionType_ = 0;
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.DirectionType direction_type = 2;</code>
       * @return The enum numeric value on the wire for directionType.
       */
      @java.lang.Override public int getDirectionTypeValue() {
        return directionType_;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.DirectionType direction_type = 2;</code>
       * @param value The enum numeric value on the wire for directionType to set.
       * @return This builder for chaining.
       */
      public Builder setDirectionTypeValue(int value) {
        directionType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.DirectionType direction_type = 2;</code>
       * @return The directionType.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.DirectionType getDirectionType() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.DirectionType result = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.DirectionType.forNumber(directionType_);
        return result == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.DirectionType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.DirectionType direction_type = 2;</code>
       * @param value The directionType to set.
       * @return This builder for chaining.
       */
      public Builder setDirectionType(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.DirectionType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        directionType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.DirectionType direction_type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDirectionType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        directionType_ = 0;
        onChanged();
        return this;
      }

      private int limit_ ;
      /**
       * <pre>
       * Количество записей на страницу.
       * Если значение 0 (не передано), то будет взято значение по умолчанию.
       * # Диапазон: 0..100.
       * # По умолчанию: 20
       * </pre>
       *
       * <code>int32 limit = 3;</code>
       * @return The limit.
       */
      @java.lang.Override
      public int getLimit() {
        return limit_;
      }
      /**
       * <pre>
       * Количество записей на страницу.
       * Если значение 0 (не передано), то будет взято значение по умолчанию.
       * # Диапазон: 0..100.
       * # По умолчанию: 20
       * </pre>
       *
       * <code>int32 limit = 3;</code>
       * @param value The limit to set.
       * @return This builder for chaining.
       */
      public Builder setLimit(int value) {

        limit_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Количество записей на страницу.
       * Если значение 0 (не передано), то будет взято значение по умолчанию.
       * # Диапазон: 0..100.
       * # По умолчанию: 20
       * </pre>
       *
       * <code>int32 limit = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLimit() {
        bitField0_ = (bitField0_ & ~0x00000004);
        limit_ = 0;
        onChanged();
        return this;
      }

      private int offset_ ;
      /**
       * <pre>
       * Сдвиг.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @return The offset.
       */
      @java.lang.Override
      public int getOffset() {
        return offset_;
      }
      /**
       * <pre>
       * Сдвиг.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @param value The offset to set.
       * @return This builder for chaining.
       */
      public Builder setOffset(int value) {

        offset_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Сдвиг.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        bitField0_ = (bitField0_ & ~0x00000008);
        offset_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PushTokenPaging)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PushTokenPaging)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PushTokenPaging>
        PARSER = new com.google.protobuf.AbstractParser<PushTokenPaging>() {
      @java.lang.Override
      public PushTokenPaging parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<PushTokenPaging> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PushTokenPaging> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostPushTokenRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PostPushTokenRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The data.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken getData();
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder getDataOrBuilder();
  }
  /**
   * <pre>
   * Запрос на создание/изменение пуш-токена
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.PostPushTokenRequest}
   */
  public static final class PostPushTokenRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PostPushTokenRequest)
      PostPushTokenRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostPushTokenRequest.newBuilder() to construct.
    private PostPushTokenRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostPushTokenRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PostPushTokenRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest.Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken data_;
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The data.
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken getData() {
      return data_ == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance() : data_;
    }
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder getDataOrBuilder() {
      return data_ == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance() : data_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (data_ != null) {
        output.writeMessage(1, getData());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getData());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest) obj;

      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос на создание/изменение пуш-токена
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.PostPushTokenRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PostPushTokenRequest)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        data_ = null;
        if (dataBuilder_ != null) {
          dataBuilder_.dispose();
          dataBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.data_ = dataBuilder_ == null
              ? data_
              : dataBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest.getDefaultInstance()) return this;
        if (other.hasData()) {
          mergeData(other.getData());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken data_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The data.
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setData(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
        } else {
          dataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setData(
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder mergeData(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken value) {
        if (dataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            data_ != null &&
            data_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance()) {
            getDataBuilder().mergeFrom(value);
          } else {
            data_ = value;
          }
        } else {
          dataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearData() {
        bitField0_ = (bitField0_ & ~0x00000001);
        data_ = null;
        if (dataBuilder_ != null) {
          dataBuilder_.dispose();
          dataBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder getDataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance() : data_;
        }
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PostPushTokenRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PostPushTokenRequest)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PostPushTokenRequest>
        PARSER = new com.google.protobuf.AbstractParser<PostPushTokenRequest>() {
      @java.lang.Override
      public PostPushTokenRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<PostPushTokenRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PostPushTokenRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostPushTokenResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PostPushTokenResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1;</code>
     * @return The data.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken getData();
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1;</code>
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder getDataOrBuilder();

    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
     * @return The error.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error getError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.ErrorOrBuilder getErrorOrBuilder();

    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос на создание/изменение пуш-токена
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.PostPushTokenResponse}
   */
  public static final class PostPushTokenResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PostPushTokenResponse)
      PostPushTokenResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostPushTokenResponse.newBuilder() to construct.
    private PostPushTokenResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostPushTokenResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PostPushTokenResponse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Builder.class);
    }

    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.PostPushTokenResponse.Error)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Ошибка валидации пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.PostPushTokenResponse.Error.push_token_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=274
       * @return Whether the pushTokenValidation field is set.
       */
      @java.lang.Deprecated boolean hasPushTokenValidation();
      /**
       * <pre>
       * Ошибка валидации пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.PostPushTokenResponse.Error.push_token_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=274
       * @return The pushTokenValidation.
       */
      @java.lang.Deprecated ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError getPushTokenValidation();
      /**
       * <pre>
       * Ошибка валидации пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       */
      @java.lang.Deprecated ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationErrorOrBuilder getPushTokenValidationOrBuilder();

      /**
       * <pre>
       * Ошибка сохранения пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
       * @return Whether the pushTokenSaving field is set.
       */
      boolean hasPushTokenSaving();
      /**
       * <pre>
       * Ошибка сохранения пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
       * @return The pushTokenSaving.
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError getPushTokenSaving();
      /**
       * <pre>
       * Ошибка сохранения пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingErrorOrBuilder getPushTokenSavingOrBuilder();

      /**
       * <pre>
       * Ошибка валидации пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
       * @return The validation.
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation();
      /**
       * <pre>
       * Ошибка валидации пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder();

      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка запроса сохранения пуш-токена
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.PostPushTokenResponse.Error}
     */
    public static final class Error extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.notification.v1.PostPushTokenResponse.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Error.newBuilder() to construct.
      private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Error() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Error();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.Builder.class);
      }

      private int reasonCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object reason_;
      public enum ReasonCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        @java.lang.Deprecated PUSH_TOKEN_VALIDATION(1),
        PUSH_TOKEN_SAVING(2),
        VALIDATION(3),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return PUSH_TOKEN_VALIDATION;
            case 2: return PUSH_TOKEN_SAVING;
            case 3: return VALIDATION;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      public static final int PUSH_TOKEN_VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.PostPushTokenResponse.Error.push_token_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=274
       * @return Whether the pushTokenValidation field is set.
       */
      @java.lang.Override
      @java.lang.Deprecated public boolean hasPushTokenValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.PostPushTokenResponse.Error.push_token_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=274
       * @return The pushTokenValidation.
       */
      @java.lang.Override
      @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError getPushTokenValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       */
      @java.lang.Override
      @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationErrorOrBuilder getPushTokenValidationOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.getDefaultInstance();
      }

      public static final int PUSH_TOKEN_SAVING_FIELD_NUMBER = 2;
      /**
       * <pre>
       * Ошибка сохранения пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
       * @return Whether the pushTokenSaving field is set.
       */
      @java.lang.Override
      public boolean hasPushTokenSaving() {
        return reasonCase_ == 2;
      }
      /**
       * <pre>
       * Ошибка сохранения пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
       * @return The pushTokenSaving.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError getPushTokenSaving() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка сохранения пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingErrorOrBuilder getPushTokenSavingOrBuilder() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.getDefaultInstance();
      }

      public static final int VALIDATION_FIELD_NUMBER = 3;
      /**
       * <pre>
       * Ошибка валидации пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
       * @return Whether the validation field is set.
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 3;
      }
      /**
       * <pre>
       * Ошибка валидации пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
       * @return The validation.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 3) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации пуш-токена
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
        if (reasonCase_ == 3) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError) reason_);
        }
        if (reasonCase_ == 2) {
          output.writeMessage(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError) reason_);
        }
        if (reasonCase_ == 3) {
          output.writeMessage(3, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError) reason_);
        }
        if (reasonCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError) reason_);
        }
        if (reasonCase_ == 3) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error)) {
          return super.equals(obj);
        }
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error) obj;

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getPushTokenValidation()
                .equals(other.getPushTokenValidation())) return false;
            break;
          case 2:
            if (!getPushTokenSaving()
                .equals(other.getPushTokenSaving())) return false;
            break;
          case 3:
            if (!getValidation()
                .equals(other.getValidation())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        switch (reasonCase_) {
          case 1:
            hash = (37 * hash) + PUSH_TOKEN_VALIDATION_FIELD_NUMBER;
            hash = (53 * hash) + getPushTokenValidation().hashCode();
            break;
          case 2:
            hash = (37 * hash) + PUSH_TOKEN_SAVING_FIELD_NUMBER;
            hash = (53 * hash) + getPushTokenSaving().hashCode();
            break;
          case 3:
            hash = (37 * hash) + VALIDATION_FIELD_NUMBER;
            hash = (53 * hash) + getValidation().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибка запроса сохранения пуш-токена
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.PostPushTokenResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PostPushTokenResponse.Error)
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.ErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenResponse_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (pushTokenValidationBuilder_ != null) {
            pushTokenValidationBuilder_.clear();
          }
          if (pushTokenSavingBuilder_ != null) {
            pushTokenSavingBuilder_.clear();
          }
          if (validationBuilder_ != null) {
            validationBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error build() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error buildPartial() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              pushTokenValidationBuilder_ != null) {
            result.reason_ = pushTokenValidationBuilder_.build();
          }
          if (reasonCase_ == 2 &&
              pushTokenSavingBuilder_ != null) {
            result.reason_ = pushTokenSavingBuilder_.build();
          }
          if (reasonCase_ == 3 &&
              validationBuilder_ != null) {
            result.reason_ = validationBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error) {
            return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error other) {
          if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case PUSH_TOKEN_VALIDATION: {
              mergePushTokenValidation(other.getPushTokenValidation());
              break;
            }
            case PUSH_TOKEN_SAVING: {
              mergePushTokenSaving(other.getPushTokenSaving());
              break;
            }
            case VALIDATION: {
              mergeValidation(other.getValidation());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getPushTokenValidationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getPushTokenSavingFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 2;
                  break;
                } // case 18
                case 26: {
                  input.readMessage(
                      getValidationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 3;
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

        public Builder clearReason() {
          reasonCase_ = 0;
          reason_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationErrorOrBuilder> pushTokenValidationBuilder_;
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         * @deprecated keyapis.notification.v1.PostPushTokenResponse.Error.push_token_validation is deprecated.
         *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=274
         * @return Whether the pushTokenValidation field is set.
         */
        @java.lang.Override
        @java.lang.Deprecated public boolean hasPushTokenValidation() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         * @deprecated keyapis.notification.v1.PostPushTokenResponse.Error.push_token_validation is deprecated.
         *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=274
         * @return The pushTokenValidation.
         */
        @java.lang.Override
        @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError getPushTokenValidation() {
          if (pushTokenValidationBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return pushTokenValidationBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder setPushTokenValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError value) {
          if (pushTokenValidationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            pushTokenValidationBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder setPushTokenValidation(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.Builder builderForValue) {
          if (pushTokenValidationBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            pushTokenValidationBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder mergePushTokenValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError value) {
          if (pushTokenValidationBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              pushTokenValidationBuilder_.mergeFrom(value);
            } else {
              pushTokenValidationBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder clearPushTokenValidation() {
          if (pushTokenValidationBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            pushTokenValidationBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.Builder getPushTokenValidationBuilder() {
          return getPushTokenValidationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Override
        @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationErrorOrBuilder getPushTokenValidationOrBuilder() {
          if ((reasonCase_ == 1) && (pushTokenValidationBuilder_ != null)) {
            return pushTokenValidationBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.ValidationError push_token_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationErrorOrBuilder> 
            getPushTokenValidationFieldBuilder() {
          if (pushTokenValidationBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.getDefaultInstance();
            }
            pushTokenValidationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationErrorOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.ValidationError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return pushTokenValidationBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingErrorOrBuilder> pushTokenSavingBuilder_;
        /**
         * <pre>
         * Ошибка сохранения пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
         * @return Whether the pushTokenSaving field is set.
         */
        @java.lang.Override
        public boolean hasPushTokenSaving() {
          return reasonCase_ == 2;
        }
        /**
         * <pre>
         * Ошибка сохранения пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
         * @return The pushTokenSaving.
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError getPushTokenSaving() {
          if (pushTokenSavingBuilder_ == null) {
            if (reasonCase_ == 2) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.getDefaultInstance();
          } else {
            if (reasonCase_ == 2) {
              return pushTokenSavingBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка сохранения пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
         */
        public Builder setPushTokenSaving(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError value) {
          if (pushTokenSavingBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            pushTokenSavingBuilder_.setMessage(value);
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка сохранения пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
         */
        public Builder setPushTokenSaving(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Builder builderForValue) {
          if (pushTokenSavingBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            pushTokenSavingBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка сохранения пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
         */
        public Builder mergePushTokenSaving(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError value) {
          if (pushTokenSavingBuilder_ == null) {
            if (reasonCase_ == 2 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 2) {
              pushTokenSavingBuilder_.mergeFrom(value);
            } else {
              pushTokenSavingBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка сохранения пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
         */
        public Builder clearPushTokenSaving() {
          if (pushTokenSavingBuilder_ == null) {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
            }
            pushTokenSavingBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка сохранения пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
         */
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Builder getPushTokenSavingBuilder() {
          return getPushTokenSavingFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка сохранения пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingErrorOrBuilder getPushTokenSavingOrBuilder() {
          if ((reasonCase_ == 2) && (pushTokenSavingBuilder_ != null)) {
            return pushTokenSavingBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 2) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка сохранения пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushToken.SavingError push_token_saving = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingErrorOrBuilder> 
            getPushTokenSavingFieldBuilder() {
          if (pushTokenSavingBuilder_ == null) {
            if (!(reasonCase_ == 2)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.getDefaultInstance();
            }
            pushTokenSavingBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingErrorOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.SavingError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 2;
          onChanged();
          return pushTokenSavingBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder> validationBuilder_;
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         * @return Whether the validation field is set.
         */
        @java.lang.Override
        public boolean hasValidation() {
          return reasonCase_ == 3;
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         * @return The validation.
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 3) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          } else {
            if (reasonCase_ == 3) {
              return validationBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        public Builder setValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            validationBuilder_.setMessage(value);
          }
          reasonCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        public Builder setValidation(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder builderForValue) {
          if (validationBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            validationBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        public Builder mergeValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 3 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 3) {
              validationBuilder_.mergeFrom(value);
            } else {
              validationBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        public Builder clearValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 3) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 3) {
              reasonCase_ = 0;
              reason_ = null;
            }
            validationBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder getValidationBuilder() {
          return getValidationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
          if ((reasonCase_ == 3) && (validationBuilder_ != null)) {
            return validationBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 3) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации пуш-токена
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder> 
            getValidationFieldBuilder() {
          if (validationBuilder_ == null) {
            if (!(reasonCase_ == 3)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
            }
            validationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 3;
          onChanged();
          return validationBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PostPushTokenResponse.Error)
      }

      // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PostPushTokenResponse.Error)
      private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error();
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<Error>
          PARSER = new com.google.protobuf.AbstractParser<Error>() {
        @java.lang.Override
        public Error parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Error> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Error> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int typeCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object type_;
    public enum TypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      DATA(1),
      ERROR(2),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return DATA;
          case 2: return ERROR;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1;</code>
     * @return The data.
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken getData() {
      if (typeCase_ == 1) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance();
    }
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder getDataOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance();
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
     * @return The error.
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error getError() {
      if (typeCase_ == 2) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 2) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_);
      }
      if (typeCase_ == 2) {
        output.writeMessage(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error) type_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_);
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (!getData()
              .equals(other.getData())) return false;
          break;
        case 2:
          if (!getError()
              .equals(other.getError())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + DATA_FIELD_NUMBER;
          hash = (53 * hash) + getData().hashCode();
          break;
        case 2:
          hash = (37 * hash) + ERROR_FIELD_NUMBER;
          hash = (53 * hash) + getError().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос на создание/изменение пуш-токена
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.PostPushTokenResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.PostPushTokenResponse)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (dataBuilder_ != null) {
          dataBuilder_.clear();
        }
        if (errorBuilder_ != null) {
          errorBuilder_.clear();
        }
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_PostPushTokenResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 1 &&
            dataBuilder_ != null) {
          result.type_ = dataBuilder_.build();
        }
        if (typeCase_ == 2 &&
            errorBuilder_ != null) {
          result.type_ = errorBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case DATA: {
            mergeData(other.getData());
            break;
          }
          case ERROR: {
            mergeError(other.getError());
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 1;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getErrorFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 2;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public Builder clearType() {
        typeCase_ = 0;
        type_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken getData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return dataBuilder_.getMessage();
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      public Builder setData(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder builderForValue) {
        if (dataBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken value) {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1 &&
              type_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance()) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            dataBuilder_.mergeFrom(value);
          } else {
            dataBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          dataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder getDataBuilder() {
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder getDataOrBuilder() {
        if ((typeCase_ == 1) && (dataBuilder_ != null)) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 1) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance();
          }
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder>(
                  (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return dataBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.ErrorOrBuilder> errorBuilder_;
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
       * @return Whether the error field is set.
       */
      @java.lang.Override
      public boolean hasError() {
        return typeCase_ == 2;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
       * @return The error.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error getError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.getDefaultInstance();
        } else {
          if (typeCase_ == 2) {
            return errorBuilder_.getMessage();
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
       */
      public Builder setError(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error value) {
        if (errorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          errorBuilder_.setMessage(value);
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
       */
      public Builder setError(
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.Builder builderForValue) {
        if (errorBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          errorBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
       */
      public Builder mergeError(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error value) {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2 &&
              type_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.getDefaultInstance()) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 2) {
            errorBuilder_.mergeFrom(value);
          } else {
            errorBuilder_.setMessage(value);
          }
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
       */
      public Builder clearError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 2) {
            typeCase_ = 0;
            type_ = null;
          }
          errorBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.Builder getErrorBuilder() {
        return getErrorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.ErrorOrBuilder getErrorOrBuilder() {
        if ((typeCase_ == 2) && (errorBuilder_ != null)) {
          return errorBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 2) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.PostPushTokenResponse.Error error = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.ErrorOrBuilder> 
          getErrorFieldBuilder() {
        if (errorBuilder_ == null) {
          if (!(typeCase_ == 2)) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.getDefaultInstance();
          }
          errorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.ErrorOrBuilder>(
                  (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse.Error) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 2;
        onChanged();
        return errorBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.PostPushTokenResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.PostPushTokenResponse)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PostPushTokenResponse>
        PARSER = new com.google.protobuf.AbstractParser<PostPushTokenResponse>() {
      @java.lang.Override
      public PostPushTokenResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<PostPushTokenResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PostPushTokenResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PostPushTokenResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetPushTokenListRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.GetPushTokenListRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    boolean hasFilter();
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
     * @return The filter.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter getFilter();
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilterOrBuilder getFilterOrBuilder();

    /**
     * <pre>
     * Стандартный постраничный вывод
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
     * @return Whether the paging field is set.
     */
    boolean hasPaging();
    /**
     * <pre>
     * Стандартный постраничный вывод
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
     * @return The paging.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging getPaging();
    /**
     * <pre>
     * Стандартный постраничный вывод
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPagingOrBuilder getPagingOrBuilder();

    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest.PaginationCase getPaginationCase();
  }
  /**
   * <pre>
   * Запрос на получение пуш-токенов пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.GetPushTokenListRequest}
   */
  public static final class GetPushTokenListRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.GetPushTokenListRequest)
      GetPushTokenListRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetPushTokenListRequest.newBuilder() to construct.
    private GetPushTokenListRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetPushTokenListRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetPushTokenListRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest.Builder.class);
    }

    private int paginationCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object pagination_;
    public enum PaginationCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      PAGING(2),
      PAGINATION_NOT_SET(0);
      private final int value;
      private PaginationCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static PaginationCase valueOf(int value) {
        return forNumber(value);
      }

      public static PaginationCase forNumber(int value) {
        switch (value) {
          case 2: return PAGING;
          case 0: return PAGINATION_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public PaginationCase
    getPaginationCase() {
      return PaginationCase.forNumber(
          paginationCase_);
    }

    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter filter_;
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
     * @return The filter.
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter getFilter() {
      return filter_ == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.getDefaultInstance() : filter_;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilterOrBuilder getFilterOrBuilder() {
      return filter_ == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.getDefaultInstance() : filter_;
    }

    public static final int PAGING_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Стандартный постраничный вывод
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
     * @return Whether the paging field is set.
     */
    @java.lang.Override
    public boolean hasPaging() {
      return paginationCase_ == 2;
    }
    /**
     * <pre>
     * Стандартный постраничный вывод
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
     * @return The paging.
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging getPaging() {
      if (paginationCase_ == 2) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging) pagination_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.getDefaultInstance();
    }
    /**
     * <pre>
     * Стандартный постраничный вывод
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPagingOrBuilder getPagingOrBuilder() {
      if (paginationCase_ == 2) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging) pagination_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (filter_ != null) {
        output.writeMessage(1, getFilter());
      }
      if (paginationCase_ == 2) {
        output.writeMessage(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging) pagination_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (filter_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getFilter());
      }
      if (paginationCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging) pagination_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest) obj;

      if (hasFilter() != other.hasFilter()) return false;
      if (hasFilter()) {
        if (!getFilter()
            .equals(other.getFilter())) return false;
      }
      if (!getPaginationCase().equals(other.getPaginationCase())) return false;
      switch (paginationCase_) {
        case 2:
          if (!getPaging()
              .equals(other.getPaging())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasFilter()) {
        hash = (37 * hash) + FILTER_FIELD_NUMBER;
        hash = (53 * hash) + getFilter().hashCode();
      }
      switch (paginationCase_) {
        case 2:
          hash = (37 * hash) + PAGING_FIELD_NUMBER;
          hash = (53 * hash) + getPaging().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос на получение пуш-токенов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.GetPushTokenListRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.GetPushTokenListRequest)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        filter_ = null;
        if (filterBuilder_ != null) {
          filterBuilder_.dispose();
          filterBuilder_ = null;
        }
        if (pagingBuilder_ != null) {
          pagingBuilder_.clear();
        }
        paginationCase_ = 0;
        pagination_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.filter_ = filterBuilder_ == null
              ? filter_
              : filterBuilder_.build();
        }
      }

      private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest result) {
        result.paginationCase_ = paginationCase_;
        result.pagination_ = this.pagination_;
        if (paginationCase_ == 2 &&
            pagingBuilder_ != null) {
          result.pagination_ = pagingBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest.getDefaultInstance()) return this;
        if (other.hasFilter()) {
          mergeFilter(other.getFilter());
        }
        switch (other.getPaginationCase()) {
          case PAGING: {
            mergePaging(other.getPaging());
            break;
          }
          case PAGINATION_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getFilterFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getPagingFieldBuilder().getBuilder(),
                    extensionRegistry);
                paginationCase_ = 2;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int paginationCase_ = 0;
      private java.lang.Object pagination_;
      public PaginationCase
          getPaginationCase() {
        return PaginationCase.forNumber(
            paginationCase_);
      }

      public Builder clearPagination() {
        paginationCase_ = 0;
        pagination_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter filter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilterOrBuilder> filterBuilder_;
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       * @return Whether the filter field is set.
       */
      public boolean hasFilter() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       * @return The filter.
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter getFilter() {
        if (filterBuilder_ == null) {
          return filter_ == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.getDefaultInstance() : filter_;
        } else {
          return filterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter value) {
        if (filterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          filter_ = value;
        } else {
          filterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.Builder builderForValue) {
        if (filterBuilder_ == null) {
          filter_ = builderForValue.build();
        } else {
          filterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter value) {
        if (filterBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            filter_ != null &&
            filter_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.getDefaultInstance()) {
            getFilterBuilder().mergeFrom(value);
          } else {
            filter_ = value;
          }
        } else {
          filterBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      public Builder clearFilter() {
        bitField0_ = (bitField0_ & ~0x00000001);
        filter_ = null;
        if (filterBuilder_ != null) {
          filterBuilder_.dispose();
          filterBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.Builder getFilterBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFilterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilterOrBuilder getFilterOrBuilder() {
        if (filterBuilder_ != null) {
          return filterBuilder_.getMessageOrBuilder();
        } else {
          return filter_ == null ?
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.getDefaultInstance() : filter_;
        }
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilterOrBuilder> 
          getFilterFieldBuilder() {
        if (filterBuilder_ == null) {
          filterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilterOrBuilder>(
                  getFilter(),
                  getParentForChildren(),
                  isClean());
          filter_ = null;
        }
        return filterBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPagingOrBuilder> pagingBuilder_;
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
       * @return Whether the paging field is set.
       */
      @java.lang.Override
      public boolean hasPaging() {
        return paginationCase_ == 2;
      }
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
       * @return The paging.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging getPaging() {
        if (pagingBuilder_ == null) {
          if (paginationCase_ == 2) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging) pagination_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.getDefaultInstance();
        } else {
          if (paginationCase_ == 2) {
            return pagingBuilder_.getMessage();
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
       */
      public Builder setPaging(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging value) {
        if (pagingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          pagination_ = value;
          onChanged();
        } else {
          pagingBuilder_.setMessage(value);
        }
        paginationCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
       */
      public Builder setPaging(
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.Builder builderForValue) {
        if (pagingBuilder_ == null) {
          pagination_ = builderForValue.build();
          onChanged();
        } else {
          pagingBuilder_.setMessage(builderForValue.build());
        }
        paginationCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
       */
      public Builder mergePaging(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging value) {
        if (pagingBuilder_ == null) {
          if (paginationCase_ == 2 &&
              pagination_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.getDefaultInstance()) {
            pagination_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging) pagination_)
                .mergeFrom(value).buildPartial();
          } else {
            pagination_ = value;
          }
          onChanged();
        } else {
          if (paginationCase_ == 2) {
            pagingBuilder_.mergeFrom(value);
          } else {
            pagingBuilder_.setMessage(value);
          }
        }
        paginationCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
       */
      public Builder clearPaging() {
        if (pagingBuilder_ == null) {
          if (paginationCase_ == 2) {
            paginationCase_ = 0;
            pagination_ = null;
            onChanged();
          }
        } else {
          if (paginationCase_ == 2) {
            paginationCase_ = 0;
            pagination_ = null;
          }
          pagingBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.Builder getPagingBuilder() {
        return getPagingFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPagingOrBuilder getPagingOrBuilder() {
        if ((paginationCase_ == 2) && (pagingBuilder_ != null)) {
          return pagingBuilder_.getMessageOrBuilder();
        } else {
          if (paginationCase_ == 2) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging) pagination_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging paging = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPagingOrBuilder> 
          getPagingFieldBuilder() {
        if (pagingBuilder_ == null) {
          if (!(paginationCase_ == 2)) {
            pagination_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.getDefaultInstance();
          }
          pagingBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPagingOrBuilder>(
                  (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging) pagination_,
                  getParentForChildren(),
                  isClean());
          pagination_ = null;
        }
        paginationCase_ = 2;
        onChanged();
        return pagingBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.GetPushTokenListRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.GetPushTokenListRequest)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetPushTokenListRequest>
        PARSER = new com.google.protobuf.AbstractParser<GetPushTokenListRequest>() {
      @java.lang.Override
      public GetPushTokenListRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetPushTokenListRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetPushTokenListRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetPushTokenCountRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.GetPushTokenCountRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    boolean hasFilter();
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
     * @return The filter.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter getFilter();
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilterOrBuilder getFilterOrBuilder();
  }
  /**
   * <pre>
   * Запрос получения количества пуш-токенов
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.GetPushTokenCountRequest}
   */
  public static final class GetPushTokenCountRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.GetPushTokenCountRequest)
      GetPushTokenCountRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetPushTokenCountRequest.newBuilder() to construct.
    private GetPushTokenCountRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetPushTokenCountRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetPushTokenCountRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest.Builder.class);
    }

    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter filter_;
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
     * @return The filter.
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter getFilter() {
      return filter_ == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.getDefaultInstance() : filter_;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilterOrBuilder getFilterOrBuilder() {
      return filter_ == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.getDefaultInstance() : filter_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (filter_ != null) {
        output.writeMessage(1, getFilter());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (filter_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getFilter());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest) obj;

      if (hasFilter() != other.hasFilter()) return false;
      if (hasFilter()) {
        if (!getFilter()
            .equals(other.getFilter())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasFilter()) {
        hash = (37 * hash) + FILTER_FIELD_NUMBER;
        hash = (53 * hash) + getFilter().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос получения количества пуш-токенов
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.GetPushTokenCountRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.GetPushTokenCountRequest)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        filter_ = null;
        if (filterBuilder_ != null) {
          filterBuilder_.dispose();
          filterBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.filter_ = filterBuilder_ == null
              ? filter_
              : filterBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest.getDefaultInstance()) return this;
        if (other.hasFilter()) {
          mergeFilter(other.getFilter());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getFilterFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter filter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilterOrBuilder> filterBuilder_;
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       * @return Whether the filter field is set.
       */
      public boolean hasFilter() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       * @return The filter.
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter getFilter() {
        if (filterBuilder_ == null) {
          return filter_ == null ? ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.getDefaultInstance() : filter_;
        } else {
          return filterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter value) {
        if (filterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          filter_ = value;
        } else {
          filterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.Builder builderForValue) {
        if (filterBuilder_ == null) {
          filter_ = builderForValue.build();
        } else {
          filterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter value) {
        if (filterBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            filter_ != null &&
            filter_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.getDefaultInstance()) {
            getFilterBuilder().mergeFrom(value);
          } else {
            filter_ = value;
          }
        } else {
          filterBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      public Builder clearFilter() {
        bitField0_ = (bitField0_ & ~0x00000001);
        filter_ = null;
        if (filterBuilder_ != null) {
          filterBuilder_.dispose();
          filterBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.Builder getFilterBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFilterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilterOrBuilder getFilterOrBuilder() {
        if (filterBuilder_ != null) {
          return filterBuilder_.getMessageOrBuilder();
        } else {
          return filter_ == null ?
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.getDefaultInstance() : filter_;
        }
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter filter = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilterOrBuilder> 
          getFilterFieldBuilder() {
        if (filterBuilder_ == null) {
          filterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilterOrBuilder>(
                  getFilter(),
                  getParentForChildren(),
                  isClean());
          filter_ = null;
        }
        return filterBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.GetPushTokenCountRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.GetPushTokenCountRequest)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetPushTokenCountRequest>
        PARSER = new com.google.protobuf.AbstractParser<GetPushTokenCountRequest>() {
      @java.lang.Override
      public GetPushTokenCountRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetPushTokenCountRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetPushTokenCountRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetPushTokenCountResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.GetPushTokenCountResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Всего пуш-токенов
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Всего пуш-токенов
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return The data.
     */
    int getData();

    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
     * @return The error.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error getError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.ErrorOrBuilder getErrorOrBuilder();

    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос получения количества пуш-токенов
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.GetPushTokenCountResponse}
   */
  public static final class GetPushTokenCountResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.GetPushTokenCountResponse)
      GetPushTokenCountResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetPushTokenCountResponse.newBuilder() to construct.
    private GetPushTokenCountResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetPushTokenCountResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetPushTokenCountResponse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Builder.class);
    }

    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.GetPushTokenCountResponse.Error)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Ошибка фильтрации
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.GetPushTokenCountResponse.Error.push_token_filter_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=313
       * @return Whether the pushTokenFilterValidation field is set.
       */
      @java.lang.Deprecated boolean hasPushTokenFilterValidation();
      /**
       * <pre>
       * Ошибка фильтрации
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.GetPushTokenCountResponse.Error.push_token_filter_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=313
       * @return The pushTokenFilterValidation.
       */
      @java.lang.Deprecated ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError getPushTokenFilterValidation();
      /**
       * <pre>
       * Ошибка фильтрации
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       */
      @java.lang.Deprecated ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationErrorOrBuilder getPushTokenFilterValidationOrBuilder();

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
       * @return The validation.
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder();

      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка запроса получения количества пуш-токенов
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.GetPushTokenCountResponse.Error}
     */
    public static final class Error extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.notification.v1.GetPushTokenCountResponse.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Error.newBuilder() to construct.
      private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Error() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Error();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.Builder.class);
      }

      private int reasonCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object reason_;
      public enum ReasonCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        @java.lang.Deprecated PUSH_TOKEN_FILTER_VALIDATION(1),
        VALIDATION(2),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return PUSH_TOKEN_FILTER_VALIDATION;
            case 2: return VALIDATION;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      public static final int PUSH_TOKEN_FILTER_VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка фильтрации
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.GetPushTokenCountResponse.Error.push_token_filter_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=313
       * @return Whether the pushTokenFilterValidation field is set.
       */
      @java.lang.Override
      @java.lang.Deprecated public boolean hasPushTokenFilterValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка фильтрации
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.GetPushTokenCountResponse.Error.push_token_filter_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=313
       * @return The pushTokenFilterValidation.
       */
      @java.lang.Override
      @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError getPushTokenFilterValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка фильтрации
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       */
      @java.lang.Override
      @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationErrorOrBuilder getPushTokenFilterValidationOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance();
      }

      public static final int VALIDATION_FIELD_NUMBER = 2;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
       * @return Whether the validation field is set.
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 2;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
       * @return The validation.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_);
        }
        if (reasonCase_ == 2) {
          output.writeMessage(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_);
        }
        if (reasonCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error)) {
          return super.equals(obj);
        }
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error) obj;

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getPushTokenFilterValidation()
                .equals(other.getPushTokenFilterValidation())) return false;
            break;
          case 2:
            if (!getValidation()
                .equals(other.getValidation())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        switch (reasonCase_) {
          case 1:
            hash = (37 * hash) + PUSH_TOKEN_FILTER_VALIDATION_FIELD_NUMBER;
            hash = (53 * hash) + getPushTokenFilterValidation().hashCode();
            break;
          case 2:
            hash = (37 * hash) + VALIDATION_FIELD_NUMBER;
            hash = (53 * hash) + getValidation().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибка запроса получения количества пуш-токенов
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.GetPushTokenCountResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.GetPushTokenCountResponse.Error)
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.ErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountResponse_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (pushTokenFilterValidationBuilder_ != null) {
            pushTokenFilterValidationBuilder_.clear();
          }
          if (validationBuilder_ != null) {
            validationBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error build() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error buildPartial() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              pushTokenFilterValidationBuilder_ != null) {
            result.reason_ = pushTokenFilterValidationBuilder_.build();
          }
          if (reasonCase_ == 2 &&
              validationBuilder_ != null) {
            result.reason_ = validationBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error) {
            return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error other) {
          if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case PUSH_TOKEN_FILTER_VALIDATION: {
              mergePushTokenFilterValidation(other.getPushTokenFilterValidation());
              break;
            }
            case VALIDATION: {
              mergeValidation(other.getValidation());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getPushTokenFilterValidationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getValidationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 2;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

        public Builder clearReason() {
          reasonCase_ = 0;
          reason_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationErrorOrBuilder> pushTokenFilterValidationBuilder_;
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         * @deprecated keyapis.notification.v1.GetPushTokenCountResponse.Error.push_token_filter_validation is deprecated.
         *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=313
         * @return Whether the pushTokenFilterValidation field is set.
         */
        @java.lang.Override
        @java.lang.Deprecated public boolean hasPushTokenFilterValidation() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         * @deprecated keyapis.notification.v1.GetPushTokenCountResponse.Error.push_token_filter_validation is deprecated.
         *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=313
         * @return The pushTokenFilterValidation.
         */
        @java.lang.Override
        @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError getPushTokenFilterValidation() {
          if (pushTokenFilterValidationBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return pushTokenFilterValidationBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder setPushTokenFilterValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError value) {
          if (pushTokenFilterValidationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            pushTokenFilterValidationBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder setPushTokenFilterValidation(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.Builder builderForValue) {
          if (pushTokenFilterValidationBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            pushTokenFilterValidationBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder mergePushTokenFilterValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError value) {
          if (pushTokenFilterValidationBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              pushTokenFilterValidationBuilder_.mergeFrom(value);
            } else {
              pushTokenFilterValidationBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder clearPushTokenFilterValidation() {
          if (pushTokenFilterValidationBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            pushTokenFilterValidationBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.Builder getPushTokenFilterValidationBuilder() {
          return getPushTokenFilterValidationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Override
        @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationErrorOrBuilder getPushTokenFilterValidationOrBuilder() {
          if ((reasonCase_ == 1) && (pushTokenFilterValidationBuilder_ != null)) {
            return pushTokenFilterValidationBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationErrorOrBuilder> 
            getPushTokenFilterValidationFieldBuilder() {
          if (pushTokenFilterValidationBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance();
            }
            pushTokenFilterValidationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationErrorOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return pushTokenFilterValidationBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder> validationBuilder_;
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
         * @return Whether the validation field is set.
         */
        @java.lang.Override
        public boolean hasValidation() {
          return reasonCase_ == 2;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
         * @return The validation.
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 2) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          } else {
            if (reasonCase_ == 2) {
              return validationBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
         */
        public Builder setValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            validationBuilder_.setMessage(value);
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
         */
        public Builder setValidation(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder builderForValue) {
          if (validationBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            validationBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
         */
        public Builder mergeValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 2 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 2) {
              validationBuilder_.mergeFrom(value);
            } else {
              validationBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
         */
        public Builder clearValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
            }
            validationBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
         */
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder getValidationBuilder() {
          return getValidationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
          if ((reasonCase_ == 2) && (validationBuilder_ != null)) {
            return validationBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 2) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder> 
            getValidationFieldBuilder() {
          if (validationBuilder_ == null) {
            if (!(reasonCase_ == 2)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
            }
            validationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 2;
          onChanged();
          return validationBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.GetPushTokenCountResponse.Error)
      }

      // @@protoc_insertion_point(class_scope:keyapis.notification.v1.GetPushTokenCountResponse.Error)
      private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error();
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<Error>
          PARSER = new com.google.protobuf.AbstractParser<Error>() {
        @java.lang.Override
        public Error parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Error> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Error> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int typeCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object type_;
    public enum TypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      DATA(1),
      ERROR(2),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return DATA;
          case 2: return ERROR;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Всего пуш-токенов
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Всего пуш-токенов
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return The data.
     */
    @java.lang.Override
    public int getData() {
      if (typeCase_ == 1) {
        return (java.lang.Integer) type_;
      }
      return 0;
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
     * @return The error.
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error getError() {
      if (typeCase_ == 2) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 2) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeInt32(
            1, (int)((java.lang.Integer) type_));
      }
      if (typeCase_ == 2) {
        output.writeMessage(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error) type_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              1, (int)((java.lang.Integer) type_));
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (getData()
              != other.getData()) return false;
          break;
        case 2:
          if (!getError()
              .equals(other.getError())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + DATA_FIELD_NUMBER;
          hash = (53 * hash) + getData();
          break;
        case 2:
          hash = (37 * hash) + ERROR_FIELD_NUMBER;
          hash = (53 * hash) + getError().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос получения количества пуш-токенов
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.GetPushTokenCountResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.GetPushTokenCountResponse)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (errorBuilder_ != null) {
          errorBuilder_.clear();
        }
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenCountResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 2 &&
            errorBuilder_ != null) {
          result.type_ = errorBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case DATA: {
            setData(other.getData());
            break;
          }
          case ERROR: {
            mergeError(other.getError());
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                type_ = input.readInt32();
                typeCase_ = 1;
                break;
              } // case 8
              case 18: {
                input.readMessage(
                    getErrorFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 2;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public Builder clearType() {
        typeCase_ = 0;
        type_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      /**
       * <pre>
       * Всего пуш-токенов
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Всего пуш-токенов
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return The data.
       */
      public int getData() {
        if (typeCase_ == 1) {
          return (java.lang.Integer) type_;
        }
        return 0;
      }
      /**
       * <pre>
       * Всего пуш-токенов
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(int value) {

        typeCase_ = 1;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Всего пуш-токенов
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        if (typeCase_ == 1) {
          typeCase_ = 0;
          type_ = null;
          onChanged();
        }
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.ErrorOrBuilder> errorBuilder_;
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
       * @return Whether the error field is set.
       */
      @java.lang.Override
      public boolean hasError() {
        return typeCase_ == 2;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
       * @return The error.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error getError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.getDefaultInstance();
        } else {
          if (typeCase_ == 2) {
            return errorBuilder_.getMessage();
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
       */
      public Builder setError(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error value) {
        if (errorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          errorBuilder_.setMessage(value);
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
       */
      public Builder setError(
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.Builder builderForValue) {
        if (errorBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          errorBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
       */
      public Builder mergeError(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error value) {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2 &&
              type_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.getDefaultInstance()) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 2) {
            errorBuilder_.mergeFrom(value);
          } else {
            errorBuilder_.setMessage(value);
          }
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
       */
      public Builder clearError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 2) {
            typeCase_ = 0;
            type_ = null;
          }
          errorBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.Builder getErrorBuilder() {
        return getErrorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.ErrorOrBuilder getErrorOrBuilder() {
        if ((typeCase_ == 2) && (errorBuilder_ != null)) {
          return errorBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 2) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenCountResponse.Error error = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.ErrorOrBuilder> 
          getErrorFieldBuilder() {
        if (errorBuilder_ == null) {
          if (!(typeCase_ == 2)) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.getDefaultInstance();
          }
          errorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.ErrorOrBuilder>(
                  (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse.Error) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 2;
        onChanged();
        return errorBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.GetPushTokenCountResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.GetPushTokenCountResponse)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetPushTokenCountResponse>
        PARSER = new com.google.protobuf.AbstractParser<GetPushTokenCountResponse>() {
      @java.lang.Override
      public GetPushTokenCountResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetPushTokenCountResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetPushTokenCountResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenCountResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetPushTokenListResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.GetPushTokenListResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1;</code>
     * @return The data.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken getData();
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1;</code>
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder getDataOrBuilder();

    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
     * @return The error.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error getError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.ErrorOrBuilder getErrorOrBuilder();

    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на получение списка пуш-токенов
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.GetPushTokenListResponse}
   */
  public static final class GetPushTokenListResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.GetPushTokenListResponse)
      GetPushTokenListResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetPushTokenListResponse.newBuilder() to construct.
    private GetPushTokenListResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetPushTokenListResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetPushTokenListResponse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Builder.class);
    }

    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.GetPushTokenListResponse.Error)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Ошибка фильтрации
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_filter_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=334
       * @return Whether the pushTokenFilterValidation field is set.
       */
      @java.lang.Deprecated boolean hasPushTokenFilterValidation();
      /**
       * <pre>
       * Ошибка фильтрации
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_filter_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=334
       * @return The pushTokenFilterValidation.
       */
      @java.lang.Deprecated ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError getPushTokenFilterValidation();
      /**
       * <pre>
       * Ошибка фильтрации
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       */
      @java.lang.Deprecated ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationErrorOrBuilder getPushTokenFilterValidationOrBuilder();

      /**
       * <pre>
       * Ошибка пагинации по страницам
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_paging_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=336
       * @return Whether the pushTokenPagingValidation field is set.
       */
      @java.lang.Deprecated boolean hasPushTokenPagingValidation();
      /**
       * <pre>
       * Ошибка пагинации по страницам
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_paging_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=336
       * @return The pushTokenPagingValidation.
       */
      @java.lang.Deprecated ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError getPushTokenPagingValidation();
      /**
       * <pre>
       * Ошибка пагинации по страницам
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       */
      @java.lang.Deprecated ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationErrorOrBuilder getPushTokenPagingValidationOrBuilder();

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
       * @return The validation.
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder();

      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка запроса получения списка пуш-токенов
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.GetPushTokenListResponse.Error}
     */
    public static final class Error extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.notification.v1.GetPushTokenListResponse.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Error.newBuilder() to construct.
      private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Error() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Error();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.Builder.class);
      }

      private int reasonCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object reason_;
      public enum ReasonCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        @java.lang.Deprecated PUSH_TOKEN_FILTER_VALIDATION(1),
        @java.lang.Deprecated PUSH_TOKEN_PAGING_VALIDATION(2),
        VALIDATION(3),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return PUSH_TOKEN_FILTER_VALIDATION;
            case 2: return PUSH_TOKEN_PAGING_VALIDATION;
            case 3: return VALIDATION;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      public static final int PUSH_TOKEN_FILTER_VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка фильтрации
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_filter_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=334
       * @return Whether the pushTokenFilterValidation field is set.
       */
      @java.lang.Override
      @java.lang.Deprecated public boolean hasPushTokenFilterValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка фильтрации
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_filter_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=334
       * @return The pushTokenFilterValidation.
       */
      @java.lang.Override
      @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError getPushTokenFilterValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка фильтрации
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       */
      @java.lang.Override
      @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationErrorOrBuilder getPushTokenFilterValidationOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance();
      }

      public static final int PUSH_TOKEN_PAGING_VALIDATION_FIELD_NUMBER = 2;
      /**
       * <pre>
       * Ошибка пагинации по страницам
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_paging_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=336
       * @return Whether the pushTokenPagingValidation field is set.
       */
      @java.lang.Override
      @java.lang.Deprecated public boolean hasPushTokenPagingValidation() {
        return reasonCase_ == 2;
      }
      /**
       * <pre>
       * Ошибка пагинации по страницам
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       * @deprecated keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_paging_validation is deprecated.
       *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=336
       * @return The pushTokenPagingValidation.
       */
      @java.lang.Override
      @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError getPushTokenPagingValidation() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка пагинации по страницам
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
       */
      @java.lang.Override
      @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationErrorOrBuilder getPushTokenPagingValidationOrBuilder() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.getDefaultInstance();
      }

      public static final int VALIDATION_FIELD_NUMBER = 3;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
       * @return Whether the validation field is set.
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 3;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
       * @return The validation.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 3) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
        if (reasonCase_ == 3) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_);
        }
        if (reasonCase_ == 2) {
          output.writeMessage(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError) reason_);
        }
        if (reasonCase_ == 3) {
          output.writeMessage(3, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_);
        }
        if (reasonCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError) reason_);
        }
        if (reasonCase_ == 3) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error)) {
          return super.equals(obj);
        }
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error) obj;

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getPushTokenFilterValidation()
                .equals(other.getPushTokenFilterValidation())) return false;
            break;
          case 2:
            if (!getPushTokenPagingValidation()
                .equals(other.getPushTokenPagingValidation())) return false;
            break;
          case 3:
            if (!getValidation()
                .equals(other.getValidation())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        switch (reasonCase_) {
          case 1:
            hash = (37 * hash) + PUSH_TOKEN_FILTER_VALIDATION_FIELD_NUMBER;
            hash = (53 * hash) + getPushTokenFilterValidation().hashCode();
            break;
          case 2:
            hash = (37 * hash) + PUSH_TOKEN_PAGING_VALIDATION_FIELD_NUMBER;
            hash = (53 * hash) + getPushTokenPagingValidation().hashCode();
            break;
          case 3:
            hash = (37 * hash) + VALIDATION_FIELD_NUMBER;
            hash = (53 * hash) + getValidation().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибка запроса получения списка пуш-токенов
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.GetPushTokenListResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.GetPushTokenListResponse.Error)
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.ErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListResponse_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (pushTokenFilterValidationBuilder_ != null) {
            pushTokenFilterValidationBuilder_.clear();
          }
          if (pushTokenPagingValidationBuilder_ != null) {
            pushTokenPagingValidationBuilder_.clear();
          }
          if (validationBuilder_ != null) {
            validationBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error build() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error buildPartial() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              pushTokenFilterValidationBuilder_ != null) {
            result.reason_ = pushTokenFilterValidationBuilder_.build();
          }
          if (reasonCase_ == 2 &&
              pushTokenPagingValidationBuilder_ != null) {
            result.reason_ = pushTokenPagingValidationBuilder_.build();
          }
          if (reasonCase_ == 3 &&
              validationBuilder_ != null) {
            result.reason_ = validationBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error) {
            return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error other) {
          if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case PUSH_TOKEN_FILTER_VALIDATION: {
              mergePushTokenFilterValidation(other.getPushTokenFilterValidation());
              break;
            }
            case PUSH_TOKEN_PAGING_VALIDATION: {
              mergePushTokenPagingValidation(other.getPushTokenPagingValidation());
              break;
            }
            case VALIDATION: {
              mergeValidation(other.getValidation());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getPushTokenFilterValidationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getPushTokenPagingValidationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 2;
                  break;
                } // case 18
                case 26: {
                  input.readMessage(
                      getValidationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 3;
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

        public Builder clearReason() {
          reasonCase_ = 0;
          reason_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationErrorOrBuilder> pushTokenFilterValidationBuilder_;
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         * @deprecated keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_filter_validation is deprecated.
         *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=334
         * @return Whether the pushTokenFilterValidation field is set.
         */
        @java.lang.Override
        @java.lang.Deprecated public boolean hasPushTokenFilterValidation() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         * @deprecated keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_filter_validation is deprecated.
         *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=334
         * @return The pushTokenFilterValidation.
         */
        @java.lang.Override
        @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError getPushTokenFilterValidation() {
          if (pushTokenFilterValidationBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return pushTokenFilterValidationBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder setPushTokenFilterValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError value) {
          if (pushTokenFilterValidationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            pushTokenFilterValidationBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder setPushTokenFilterValidation(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.Builder builderForValue) {
          if (pushTokenFilterValidationBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            pushTokenFilterValidationBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder mergePushTokenFilterValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError value) {
          if (pushTokenFilterValidationBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              pushTokenFilterValidationBuilder_.mergeFrom(value);
            } else {
              pushTokenFilterValidationBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder clearPushTokenFilterValidation() {
          if (pushTokenFilterValidationBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            pushTokenFilterValidationBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.Builder getPushTokenFilterValidationBuilder() {
          return getPushTokenFilterValidationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Override
        @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationErrorOrBuilder getPushTokenFilterValidationOrBuilder() {
          if ((reasonCase_ == 1) && (pushTokenFilterValidationBuilder_ != null)) {
            return pushTokenFilterValidationBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка фильтрации
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenFilter.ValidationError push_token_filter_validation = 1 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationErrorOrBuilder> 
            getPushTokenFilterValidationFieldBuilder() {
          if (pushTokenFilterValidationBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.getDefaultInstance();
            }
            pushTokenFilterValidationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationErrorOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenFilter.ValidationError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return pushTokenFilterValidationBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationErrorOrBuilder> pushTokenPagingValidationBuilder_;
        /**
         * <pre>
         * Ошибка пагинации по страницам
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         * @deprecated keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_paging_validation is deprecated.
         *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=336
         * @return Whether the pushTokenPagingValidation field is set.
         */
        @java.lang.Override
        @java.lang.Deprecated public boolean hasPushTokenPagingValidation() {
          return reasonCase_ == 2;
        }
        /**
         * <pre>
         * Ошибка пагинации по страницам
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         * @deprecated keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_paging_validation is deprecated.
         *     See keyapis/notification/v1/keyapis_notification_push_token_v1.proto;l=336
         * @return The pushTokenPagingValidation.
         */
        @java.lang.Override
        @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError getPushTokenPagingValidation() {
          if (pushTokenPagingValidationBuilder_ == null) {
            if (reasonCase_ == 2) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.getDefaultInstance();
          } else {
            if (reasonCase_ == 2) {
              return pushTokenPagingValidationBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка пагинации по страницам
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder setPushTokenPagingValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError value) {
          if (pushTokenPagingValidationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            pushTokenPagingValidationBuilder_.setMessage(value);
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка пагинации по страницам
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder setPushTokenPagingValidation(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.Builder builderForValue) {
          if (pushTokenPagingValidationBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            pushTokenPagingValidationBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка пагинации по страницам
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder mergePushTokenPagingValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError value) {
          if (pushTokenPagingValidationBuilder_ == null) {
            if (reasonCase_ == 2 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 2) {
              pushTokenPagingValidationBuilder_.mergeFrom(value);
            } else {
              pushTokenPagingValidationBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка пагинации по страницам
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public Builder clearPushTokenPagingValidation() {
          if (pushTokenPagingValidationBuilder_ == null) {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
            }
            pushTokenPagingValidationBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка пагинации по страницам
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.Builder getPushTokenPagingValidationBuilder() {
          return getPushTokenPagingValidationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка пагинации по страницам
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        @java.lang.Override
        @java.lang.Deprecated public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationErrorOrBuilder getPushTokenPagingValidationOrBuilder() {
          if ((reasonCase_ == 2) && (pushTokenPagingValidationBuilder_ != null)) {
            return pushTokenPagingValidationBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 2) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка пагинации по страницам
         * </pre>
         *
         * <code>.keyapis.notification.v1.PushTokenPaging.ValidationError push_token_paging_validation = 2 [deprecated = true, (.google.api.field_visibility) = { ... }</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationErrorOrBuilder> 
            getPushTokenPagingValidationFieldBuilder() {
          if (pushTokenPagingValidationBuilder_ == null) {
            if (!(reasonCase_ == 2)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.getDefaultInstance();
            }
            pushTokenPagingValidationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationErrorOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenPaging.ValidationError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 2;
          onChanged();
          return pushTokenPagingValidationBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder> validationBuilder_;
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         * @return Whether the validation field is set.
         */
        @java.lang.Override
        public boolean hasValidation() {
          return reasonCase_ == 3;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         * @return The validation.
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 3) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          } else {
            if (reasonCase_ == 3) {
              return validationBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        public Builder setValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            validationBuilder_.setMessage(value);
          }
          reasonCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        public Builder setValidation(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder builderForValue) {
          if (validationBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            validationBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        public Builder mergeValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 3 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 3) {
              validationBuilder_.mergeFrom(value);
            } else {
              validationBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        public Builder clearValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 3) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 3) {
              reasonCase_ = 0;
              reason_ = null;
            }
            validationBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder getValidationBuilder() {
          return getValidationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
          if ((reasonCase_ == 3) && (validationBuilder_ != null)) {
            return validationBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 3) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder> 
            getValidationFieldBuilder() {
          if (validationBuilder_ == null) {
            if (!(reasonCase_ == 3)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
            }
            validationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 3;
          onChanged();
          return validationBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.GetPushTokenListResponse.Error)
      }

      // @@protoc_insertion_point(class_scope:keyapis.notification.v1.GetPushTokenListResponse.Error)
      private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error();
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<Error>
          PARSER = new com.google.protobuf.AbstractParser<Error>() {
        @java.lang.Override
        public Error parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Error> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Error> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int typeCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object type_;
    public enum TypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      DATA(1),
      ERROR(2),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return DATA;
          case 2: return ERROR;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1;</code>
     * @return The data.
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken getData() {
      if (typeCase_ == 1) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance();
    }
    /**
     * <pre>
     * Пуш-токен
     * </pre>
     *
     * <code>.keyapis.notification.v1.PushToken data = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder getDataOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance();
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
     * @return The error.
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error getError() {
      if (typeCase_ == 2) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 2) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_);
      }
      if (typeCase_ == 2) {
        output.writeMessage(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error) type_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_);
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (!getData()
              .equals(other.getData())) return false;
          break;
        case 2:
          if (!getError()
              .equals(other.getError())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + DATA_FIELD_NUMBER;
          hash = (53 * hash) + getData().hashCode();
          break;
        case 2:
          hash = (37 * hash) + ERROR_FIELD_NUMBER;
          hash = (53 * hash) + getError().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на получение списка пуш-токенов
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.GetPushTokenListResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.GetPushTokenListResponse)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (dataBuilder_ != null) {
          dataBuilder_.clear();
        }
        if (errorBuilder_ != null) {
          errorBuilder_.clear();
        }
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_GetPushTokenListResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 1 &&
            dataBuilder_ != null) {
          result.type_ = dataBuilder_.build();
        }
        if (typeCase_ == 2 &&
            errorBuilder_ != null) {
          result.type_ = errorBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case DATA: {
            mergeData(other.getData());
            break;
          }
          case ERROR: {
            mergeError(other.getError());
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 1;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getErrorFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 2;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public Builder clearType() {
        typeCase_ = 0;
        type_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken getData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return dataBuilder_.getMessage();
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      public Builder setData(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder builderForValue) {
        if (dataBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken value) {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1 &&
              type_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance()) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            dataBuilder_.mergeFrom(value);
          } else {
            dataBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          dataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder getDataBuilder() {
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder getDataOrBuilder() {
        if ((typeCase_ == 1) && (dataBuilder_ != null)) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 1) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Пуш-токен
       * </pre>
       *
       * <code>.keyapis.notification.v1.PushToken data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.getDefaultInstance();
          }
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushTokenOrBuilder>(
                  (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.PushToken) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return dataBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.ErrorOrBuilder> errorBuilder_;
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
       * @return Whether the error field is set.
       */
      @java.lang.Override
      public boolean hasError() {
        return typeCase_ == 2;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
       * @return The error.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error getError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.getDefaultInstance();
        } else {
          if (typeCase_ == 2) {
            return errorBuilder_.getMessage();
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
       */
      public Builder setError(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error value) {
        if (errorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          errorBuilder_.setMessage(value);
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
       */
      public Builder setError(
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.Builder builderForValue) {
        if (errorBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          errorBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
       */
      public Builder mergeError(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error value) {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2 &&
              type_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.getDefaultInstance()) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 2) {
            errorBuilder_.mergeFrom(value);
          } else {
            errorBuilder_.setMessage(value);
          }
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
       */
      public Builder clearError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 2) {
            typeCase_ = 0;
            type_ = null;
          }
          errorBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.Builder getErrorBuilder() {
        return getErrorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.ErrorOrBuilder getErrorOrBuilder() {
        if ((typeCase_ == 2) && (errorBuilder_ != null)) {
          return errorBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 2) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.GetPushTokenListResponse.Error error = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.ErrorOrBuilder> 
          getErrorFieldBuilder() {
        if (errorBuilder_ == null) {
          if (!(typeCase_ == 2)) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.getDefaultInstance();
          }
          errorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.ErrorOrBuilder>(
                  (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse.Error) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 2;
        onChanged();
        return errorBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.GetPushTokenListResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.GetPushTokenListResponse)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetPushTokenListResponse>
        PARSER = new com.google.protobuf.AbstractParser<GetPushTokenListResponse>() {
      @java.lang.Override
      public GetPushTokenListResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetPushTokenListResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetPushTokenListResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.GetPushTokenListResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeletePushTokenRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.DeletePushTokenRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Идентификатор.
     * # Диапазон: 0..2147483647
     * </pre>
     *
     * <code>int32 id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The id.
     */
    int getId();
  }
  /**
   * <pre>
   * Запрос удаления пуш-токена
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.DeletePushTokenRequest}
   */
  public static final class DeletePushTokenRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.DeletePushTokenRequest)
      DeletePushTokenRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeletePushTokenRequest.newBuilder() to construct.
    private DeletePushTokenRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeletePushTokenRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DeletePushTokenRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private int id_ = 0;
    /**
     * <pre>
     * Идентификатор.
     * # Диапазон: 0..2147483647
     * </pre>
     *
     * <code>int32 id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The id.
     */
    @java.lang.Override
    public int getId() {
      return id_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (id_ != 0) {
        output.writeInt32(1, id_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (id_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest) obj;

      if (getId()
          != other.getId()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос удаления пуш-токена
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.DeletePushTokenRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.DeletePushTokenRequest)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest.getDefaultInstance()) return this;
        if (other.getId() != 0) {
          setId(other.getId());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                id_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int id_ ;
      /**
       * <pre>
       * Идентификатор.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The id.
       */
      @java.lang.Override
      public int getId() {
        return id_;
      }
      /**
       * <pre>
       * Идентификатор.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(int value) {

        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.DeletePushTokenRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.DeletePushTokenRequest)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DeletePushTokenRequest>
        PARSER = new com.google.protobuf.AbstractParser<DeletePushTokenRequest>() {
      @java.lang.Override
      public DeletePushTokenRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DeletePushTokenRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DeletePushTokenRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeletePushTokenResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.DeletePushTokenResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
     * @return The error.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error getError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.ErrorOrBuilder getErrorOrBuilder();

    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос удаления пуш-токена
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.DeletePushTokenResponse}
   */
  public static final class DeletePushTokenResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.DeletePushTokenResponse)
      DeletePushTokenResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeletePushTokenResponse.newBuilder() to construct.
    private DeletePushTokenResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeletePushTokenResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DeletePushTokenResponse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Builder.class);
    }

    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.DeletePushTokenResponse.Error)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder();

      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка удаления пуш-токена
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.DeletePushTokenResponse.Error}
     */
    public static final class Error extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.notification.v1.DeletePushTokenResponse.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Error.newBuilder() to construct.
      private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Error() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Error();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.Builder.class);
      }

      private int reasonCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object reason_;
      public enum ReasonCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        VALIDATION(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return VALIDATION;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error)) {
          return super.equals(obj);
        }
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error) obj;

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getValidation()
                .equals(other.getValidation())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        switch (reasonCase_) {
          case 1:
            hash = (37 * hash) + VALIDATION_FIELD_NUMBER;
            hash = (53 * hash) + getValidation().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибка удаления пуш-токена
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.DeletePushTokenResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.DeletePushTokenResponse.Error)
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.ErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenResponse_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (validationBuilder_ != null) {
            validationBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error build() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error buildPartial() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              validationBuilder_ != null) {
            result.reason_ = validationBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error) {
            return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error other) {
          if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case VALIDATION: {
              mergeValidation(other.getValidation());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getValidationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

        public Builder clearReason() {
          reasonCase_ = 0;
          reason_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder> validationBuilder_;
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         * @return Whether the validation field is set.
         */
        @java.lang.Override
        public boolean hasValidation() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         * @return The validation.
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return validationBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            validationBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder builderForValue) {
          if (validationBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            validationBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              validationBuilder_.mergeFrom(value);
            } else {
              validationBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public Builder clearValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            validationBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder getValidationBuilder() {
          return getValidationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
          if ((reasonCase_ == 1) && (validationBuilder_ != null)) {
            return validationBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder> 
            getValidationFieldBuilder() {
          if (validationBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
            }
            validationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return validationBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.DeletePushTokenResponse.Error)
      }

      // @@protoc_insertion_point(class_scope:keyapis.notification.v1.DeletePushTokenResponse.Error)
      private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error();
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<Error>
          PARSER = new com.google.protobuf.AbstractParser<Error>() {
        @java.lang.Override
        public Error parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Error> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Error> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int typeCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object type_;
    public enum TypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      ERROR(1),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return ERROR;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    public static final int ERROR_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
     * @return The error.
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error getError() {
      if (typeCase_ == 1) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error) type_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (!getError()
              .equals(other.getError())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + ERROR_FIELD_NUMBER;
          hash = (53 * hash) + getError().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос удаления пуш-токена
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.DeletePushTokenResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.DeletePushTokenResponse)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (errorBuilder_ != null) {
          errorBuilder_.clear();
        }
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 1 &&
            errorBuilder_ != null) {
          result.type_ = errorBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case ERROR: {
            mergeError(other.getError());
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getErrorFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 1;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public Builder clearType() {
        typeCase_ = 0;
        type_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.ErrorOrBuilder> errorBuilder_;
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
       * @return Whether the error field is set.
       */
      @java.lang.Override
      public boolean hasError() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
       * @return The error.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error getError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return errorBuilder_.getMessage();
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
       */
      public Builder setError(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error value) {
        if (errorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          errorBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
       */
      public Builder setError(
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.Builder builderForValue) {
        if (errorBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          errorBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
       */
      public Builder mergeError(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error value) {
        if (errorBuilder_ == null) {
          if (typeCase_ == 1 &&
              type_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.getDefaultInstance()) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            errorBuilder_.mergeFrom(value);
          } else {
            errorBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
       */
      public Builder clearError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          errorBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.Builder getErrorBuilder() {
        return getErrorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.ErrorOrBuilder getErrorOrBuilder() {
        if ((typeCase_ == 1) && (errorBuilder_ != null)) {
          return errorBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 1) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenResponse.Error error = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.ErrorOrBuilder> 
          getErrorFieldBuilder() {
        if (errorBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.getDefaultInstance();
          }
          errorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.ErrorOrBuilder>(
                  (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse.Error) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return errorBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.DeletePushTokenResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.DeletePushTokenResponse)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DeletePushTokenResponse>
        PARSER = new com.google.protobuf.AbstractParser<DeletePushTokenResponse>() {
      @java.lang.Override
      public DeletePushTokenResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DeletePushTokenResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DeletePushTokenResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeletePushTokenUserIdRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.DeletePushTokenUserIdRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Идентификатор пользователя.
     * # Диапазон: 1..2147483647
     * </pre>
     *
     * <code>int32 user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userId.
     */
    int getUserId();
  }
  /**
   * <pre>
   * Запрос удаления пуш-токенов по идентификатору пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.DeletePushTokenUserIdRequest}
   */
  public static final class DeletePushTokenUserIdRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.DeletePushTokenUserIdRequest)
      DeletePushTokenUserIdRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeletePushTokenUserIdRequest.newBuilder() to construct.
    private DeletePushTokenUserIdRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeletePushTokenUserIdRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DeletePushTokenUserIdRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest.Builder.class);
    }

    public static final int USER_ID_FIELD_NUMBER = 1;
    private int userId_ = 0;
    /**
     * <pre>
     * Идентификатор пользователя.
     * # Диапазон: 1..2147483647
     * </pre>
     *
     * <code>int32 user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userId.
     */
    @java.lang.Override
    public int getUserId() {
      return userId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (userId_ != 0) {
        output.writeInt32(1, userId_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (userId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, userId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest) obj;

      if (getUserId()
          != other.getUserId()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getUserId();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос удаления пуш-токенов по идентификатору пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.DeletePushTokenUserIdRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.DeletePushTokenUserIdRequest)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        userId_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.userId_ = userId_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest.getDefaultInstance()) return this;
        if (other.getUserId() != 0) {
          setUserId(other.getUserId());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                userId_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int userId_ ;
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>int32 user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The userId.
       */
      @java.lang.Override
      public int getUserId() {
        return userId_;
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>int32 user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The userId to set.
       * @return This builder for chaining.
       */
      public Builder setUserId(int value) {

        userId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>int32 user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearUserId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        userId_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.DeletePushTokenUserIdRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.DeletePushTokenUserIdRequest)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DeletePushTokenUserIdRequest>
        PARSER = new com.google.protobuf.AbstractParser<DeletePushTokenUserIdRequest>() {
      @java.lang.Override
      public DeletePushTokenUserIdRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DeletePushTokenUserIdRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DeletePushTokenUserIdRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeletePushTokenUserIdResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.DeletePushTokenUserIdResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
     * @return The error.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error getError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.ErrorOrBuilder getErrorOrBuilder();

    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос удаления пуш-токенов по идентификатору пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.DeletePushTokenUserIdResponse}
   */
  public static final class DeletePushTokenUserIdResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.DeletePushTokenUserIdResponse)
      DeletePushTokenUserIdResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeletePushTokenUserIdResponse.newBuilder() to construct.
    private DeletePushTokenUserIdResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeletePushTokenUserIdResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DeletePushTokenUserIdResponse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Builder.class);
    }

    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.DeletePushTokenUserIdResponse.Error)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder();

      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка удаления пуш-токенов
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.DeletePushTokenUserIdResponse.Error}
     */
    public static final class Error extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.notification.v1.DeletePushTokenUserIdResponse.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Error.newBuilder() to construct.
      private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Error() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Error();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.Builder.class);
      }

      private int reasonCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object reason_;
      public enum ReasonCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        VALIDATION(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return VALIDATION;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error)) {
          return super.equals(obj);
        }
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error) obj;

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getValidation()
                .equals(other.getValidation())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        switch (reasonCase_) {
          case 1:
            hash = (37 * hash) + VALIDATION_FIELD_NUMBER;
            hash = (53 * hash) + getValidation().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибка удаления пуш-токенов
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.DeletePushTokenUserIdResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.DeletePushTokenUserIdResponse.Error)
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.ErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (validationBuilder_ != null) {
            validationBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error build() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error buildPartial() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              validationBuilder_ != null) {
            result.reason_ = validationBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error) {
            return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error other) {
          if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case VALIDATION: {
              mergeValidation(other.getValidation());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getValidationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

        public Builder clearReason() {
          reasonCase_ = 0;
          reason_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder> validationBuilder_;
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         * @return Whether the validation field is set.
         */
        @java.lang.Override
        public boolean hasValidation() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         * @return The validation.
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return validationBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            validationBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder builderForValue) {
          if (validationBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            validationBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              validationBuilder_.mergeFrom(value);
            } else {
              validationBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public Builder clearValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            validationBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder getValidationBuilder() {
          return getValidationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
          if ((reasonCase_ == 1) && (validationBuilder_ != null)) {
            return validationBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder> 
            getValidationFieldBuilder() {
          if (validationBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
            }
            validationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return validationBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.DeletePushTokenUserIdResponse.Error)
      }

      // @@protoc_insertion_point(class_scope:keyapis.notification.v1.DeletePushTokenUserIdResponse.Error)
      private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error();
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<Error>
          PARSER = new com.google.protobuf.AbstractParser<Error>() {
        @java.lang.Override
        public Error parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Error> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Error> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int typeCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object type_;
    public enum TypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      ERROR(1),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return ERROR;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    public static final int ERROR_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
     * @return The error.
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error getError() {
      if (typeCase_ == 1) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error) type_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (!getError()
              .equals(other.getError())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + ERROR_FIELD_NUMBER;
          hash = (53 * hash) + getError().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос удаления пуш-токенов по идентификатору пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.DeletePushTokenUserIdResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.DeletePushTokenUserIdResponse)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (errorBuilder_ != null) {
          errorBuilder_.clear();
        }
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 1 &&
            errorBuilder_ != null) {
          result.type_ = errorBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case ERROR: {
            mergeError(other.getError());
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getErrorFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 1;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public Builder clearType() {
        typeCase_ = 0;
        type_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.ErrorOrBuilder> errorBuilder_;
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
       * @return Whether the error field is set.
       */
      @java.lang.Override
      public boolean hasError() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
       * @return The error.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error getError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return errorBuilder_.getMessage();
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
       */
      public Builder setError(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error value) {
        if (errorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          errorBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
       */
      public Builder setError(
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.Builder builderForValue) {
        if (errorBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          errorBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
       */
      public Builder mergeError(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error value) {
        if (errorBuilder_ == null) {
          if (typeCase_ == 1 &&
              type_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.getDefaultInstance()) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            errorBuilder_.mergeFrom(value);
          } else {
            errorBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
       */
      public Builder clearError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          errorBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.Builder getErrorBuilder() {
        return getErrorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.ErrorOrBuilder getErrorOrBuilder() {
        if ((typeCase_ == 1) && (errorBuilder_ != null)) {
          return errorBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 1) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserIdResponse.Error error = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.ErrorOrBuilder> 
          getErrorFieldBuilder() {
        if (errorBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.getDefaultInstance();
          }
          errorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.ErrorOrBuilder>(
                  (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse.Error) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return errorBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.DeletePushTokenUserIdResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.DeletePushTokenUserIdResponse)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DeletePushTokenUserIdResponse>
        PARSER = new com.google.protobuf.AbstractParser<DeletePushTokenUserIdResponse>() {
      @java.lang.Override
      public DeletePushTokenUserIdResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DeletePushTokenUserIdResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DeletePushTokenUserIdResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserIdResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeletePushTokenUserAppIdRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.DeletePushTokenUserAppIdRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Идентификатор устройства пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>string user_app_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userAppId.
     */
    java.lang.String getUserAppId();
    /**
     * <pre>
     * Идентификатор устройства пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>string user_app_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for userAppId.
     */
    com.google.protobuf.ByteString
        getUserAppIdBytes();
  }
  /**
   * <pre>
   * Запрос удаления пуш-токена по идентификатору устройства пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.DeletePushTokenUserAppIdRequest}
   */
  public static final class DeletePushTokenUserAppIdRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.DeletePushTokenUserAppIdRequest)
      DeletePushTokenUserAppIdRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeletePushTokenUserAppIdRequest.newBuilder() to construct.
    private DeletePushTokenUserAppIdRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeletePushTokenUserAppIdRequest() {
      userAppId_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DeletePushTokenUserAppIdRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest.Builder.class);
    }

    public static final int USER_APP_ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object userAppId_ = "";
    /**
     * <pre>
     * Идентификатор устройства пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>string user_app_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userAppId.
     */
    @java.lang.Override
    public java.lang.String getUserAppId() {
      java.lang.Object ref = userAppId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        userAppId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Идентификатор устройства пользователя.
     * # Тип: Guid
     * </pre>
     *
     * <code>string user_app_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for userAppId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserAppIdBytes() {
      java.lang.Object ref = userAppId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        userAppId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userAppId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, userAppId_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userAppId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, userAppId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest) obj;

      if (!getUserAppId()
          .equals(other.getUserAppId())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + USER_APP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getUserAppId().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос удаления пуш-токена по идентификатору устройства пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.DeletePushTokenUserAppIdRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.DeletePushTokenUserAppIdRequest)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        userAppId_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.userAppId_ = userAppId_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest.getDefaultInstance()) return this;
        if (!other.getUserAppId().isEmpty()) {
          userAppId_ = other.userAppId_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                userAppId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object userAppId_ = "";
      /**
       * <pre>
       * Идентификатор устройства пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>string user_app_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The userAppId.
       */
      public java.lang.String getUserAppId() {
        java.lang.Object ref = userAppId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          userAppId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор устройства пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>string user_app_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for userAppId.
       */
      public com.google.protobuf.ByteString
          getUserAppIdBytes() {
        java.lang.Object ref = userAppId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          userAppId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор устройства пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>string user_app_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The userAppId to set.
       * @return This builder for chaining.
       */
      public Builder setUserAppId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        userAppId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор устройства пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>string user_app_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearUserAppId() {
        userAppId_ = getDefaultInstance().getUserAppId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор устройства пользователя.
       * # Тип: Guid
       * </pre>
       *
       * <code>string user_app_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for userAppId to set.
       * @return This builder for chaining.
       */
      public Builder setUserAppIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        userAppId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.DeletePushTokenUserAppIdRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.DeletePushTokenUserAppIdRequest)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DeletePushTokenUserAppIdRequest>
        PARSER = new com.google.protobuf.AbstractParser<DeletePushTokenUserAppIdRequest>() {
      @java.lang.Override
      public DeletePushTokenUserAppIdRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DeletePushTokenUserAppIdRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DeletePushTokenUserAppIdRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeletePushTokenUserAppIdResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.DeletePushTokenUserAppIdResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
     * @return The error.
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error getError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
     */
    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.ErrorOrBuilder getErrorOrBuilder();

    ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос удаления пуш-токена по идентификатору устройства пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.DeletePushTokenUserAppIdResponse}
   */
  public static final class DeletePushTokenUserAppIdResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.DeletePushTokenUserAppIdResponse)
      DeletePushTokenUserAppIdResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeletePushTokenUserAppIdResponse.newBuilder() to construct.
    private DeletePushTokenUserAppIdResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeletePushTokenUserAppIdResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DeletePushTokenUserAppIdResponse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Builder.class);
    }

    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       */
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder();

      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка удаления пуш-токена
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error}
     */
    public static final class Error extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Error.newBuilder() to construct.
      private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Error() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Error();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.Builder.class);
      }

      private int reasonCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object reason_;
      public enum ReasonCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        VALIDATION(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return VALIDATION;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error)) {
          return super.equals(obj);
        }
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error) obj;

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getValidation()
                .equals(other.getValidation())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        switch (reasonCase_) {
          case 1:
            hash = (37 * hash) + VALIDATION_FIELD_NUMBER;
            hash = (53 * hash) + getValidation().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибка удаления пуш-токена
       * </pre>
       *
       * Protobuf type {@code keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error)
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.ErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (validationBuilder_ != null) {
            validationBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error build() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error buildPartial() {
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              validationBuilder_ != null) {
            result.reason_ = validationBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error) {
            return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error other) {
          if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case VALIDATION: {
              mergeValidation(other.getValidation());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getValidationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

        public Builder clearReason() {
          reasonCase_ = 0;
          reason_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder> validationBuilder_;
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         * @return Whether the validation field is set.
         */
        @java.lang.Override
        public boolean hasValidation() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         * @return The validation.
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return validationBuilder_.getMessage();
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            validationBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder builderForValue) {
          if (validationBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            validationBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance()) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              validationBuilder_.mergeFrom(value);
            } else {
              validationBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public Builder clearValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            validationBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder getValidationBuilder() {
          return getValidationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
          if ((reasonCase_ == 1) && (validationBuilder_ != null)) {
            return validationBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.notification.v1.ValidationError validation = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder> 
            getValidationFieldBuilder() {
          if (validationBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
            }
            validationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder>(
                    (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return validationBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error)
      }

      // @@protoc_insertion_point(class_scope:keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error)
      private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error();
      }

      public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<Error>
          PARSER = new com.google.protobuf.AbstractParser<Error>() {
        @java.lang.Override
        public Error parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Error> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Error> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int typeCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object type_;
    public enum TypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      ERROR(1),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return ERROR;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    public static final int ERROR_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
     * @return The error.
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error getError() {
      if (typeCase_ == 1) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error) type_;
      }
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeMessage(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error) type_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (!getError()
              .equals(other.getError())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + ERROR_FIELD_NUMBER;
          hash = (53 * hash) + getError().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос удаления пуш-токена по идентификатору устройства пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.DeletePushTokenUserAppIdResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.DeletePushTokenUserAppIdResponse)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (errorBuilder_ != null) {
          errorBuilder_.clear();
        }
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 1 &&
            errorBuilder_ != null) {
          result.type_ = errorBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case ERROR: {
            mergeError(other.getError());
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getErrorFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 1;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public Builder clearType() {
        typeCase_ = 0;
        type_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.ErrorOrBuilder> errorBuilder_;
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
       * @return Whether the error field is set.
       */
      @java.lang.Override
      public boolean hasError() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
       * @return The error.
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error getError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return errorBuilder_.getMessage();
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
       */
      public Builder setError(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error value) {
        if (errorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          errorBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
       */
      public Builder setError(
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.Builder builderForValue) {
        if (errorBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          errorBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
       */
      public Builder mergeError(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error value) {
        if (errorBuilder_ == null) {
          if (typeCase_ == 1 &&
              type_ != ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.getDefaultInstance()) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.newBuilder((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            errorBuilder_.mergeFrom(value);
          } else {
            errorBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
       */
      public Builder clearError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          errorBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
       */
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.Builder getErrorBuilder() {
        return getErrorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.ErrorOrBuilder getErrorOrBuilder() {
        if ((typeCase_ == 1) && (errorBuilder_ != null)) {
          return errorBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 1) {
            return (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error) type_;
          }
          return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error error = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.ErrorOrBuilder> 
          getErrorFieldBuilder() {
        if (errorBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.getDefaultInstance();
          }
          errorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error.Builder, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.ErrorOrBuilder>(
                  (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse.Error) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return errorBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.DeletePushTokenUserAppIdResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.DeletePushTokenUserAppIdResponse)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DeletePushTokenUserAppIdResponse>
        PARSER = new com.google.protobuf.AbstractParser<DeletePushTokenUserAppIdResponse>() {
      @java.lang.Override
      public DeletePushTokenUserAppIdResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DeletePushTokenUserAppIdResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DeletePushTokenUserAppIdResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.DeletePushTokenUserAppIdResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ValidationErrorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.notification.v1.ValidationError)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Путь к полю в формате наименования прото
     * </pre>
     *
     * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * Путь к полю в формате наименования прото
     * </pre>
     *
     * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * Валидационное сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * Валидационное сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * <pre>
   * Ошибки валидации.
   * Эти проверки выполняются до обращения в базу данных
   * </pre>
   *
   * Protobuf type {@code keyapis.notification.v1.ValidationError}
   */
  public static final class ValidationError extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.notification.v1.ValidationError)
      ValidationErrorOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ValidationError.newBuilder() to construct.
    private ValidationError(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ValidationError() {
      path_ = "";
      message_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ValidationError();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_ValidationError_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_ValidationError_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder.class);
    }

    public static final int PATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * Путь к полю в формате наименования прото
     * </pre>
     *
     * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The path.
     */
    @java.lang.Override
    public java.lang.String getPath() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        path_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Путь к полю в формате наименования прото
     * </pre>
     *
     * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for path.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPathBytes() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        path_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MESSAGE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * Валидационное сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The message.
     */
    @java.lang.Override
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        message_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Валидационное сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for message.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, message_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, path_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, message_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError)) {
        return super.equals(obj);
      }
      ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError other = (ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) obj;

      if (!getPath()
          .equals(other.getPath())) return false;
      if (!getMessage()
          .equals(other.getMessage())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PATH_FIELD_NUMBER;
      hash = (53 * hash) + getPath().hashCode();
      hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getMessage().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ошибки валидации.
     * Эти проверки выполняются до обращения в базу данных
     * </pre>
     *
     * Protobuf type {@code keyapis.notification.v1.ValidationError}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.notification.v1.ValidationError)
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationErrorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_ValidationError_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_ValidationError_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.class, ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.Builder.class);
      }

      // Construct using ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        path_ = "";
        message_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.internal_static_keyapis_notification_v1_ValidationError_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getDefaultInstanceForType() {
        return ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError build() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError buildPartial() {
        ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError result = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.path_ = path_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.message_ = message_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError) {
          return mergeFrom((ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError other) {
        if (other == ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError.getDefaultInstance()) return this;
        if (!other.getPath().isEmpty()) {
          path_ = other.path_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getMessage().isEmpty()) {
          message_ = other.message_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                path_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                message_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * Путь к полю в формате наименования прото
       * </pre>
       *
       * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The path.
       */
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          path_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Путь к полю в формате наименования прото
       * </pre>
       *
       * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for path.
       */
      public com.google.protobuf.ByteString
          getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Путь к полю в формате наименования прото
       * </pre>
       *
       * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Путь к полю в формате наименования прото
       * </pre>
       *
       * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Путь к полю в формате наименования прото
       * </pre>
       *
       * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for path to set.
       * @return This builder for chaining.
       */
      public Builder setPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * Валидационное сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The message.
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          message_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Валидационное сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for message.
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Валидационное сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The message to set.
       * @return This builder for chaining.
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        message_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Валидационное сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Валидационное сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for message to set.
       * @return This builder for chaining.
       */
      public Builder setMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        message_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.notification.v1.ValidationError)
    }

    // @@protoc_insertion_point(class_scope:keyapis.notification.v1.ValidationError)
    private static final ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError();
    }

    public static ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ValidationError>
        PARSER = new com.google.protobuf.AbstractParser<ValidationError>() {
      @java.lang.Override
      public ValidationError parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ValidationError> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ValidationError> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.notification.v1.KeyapisNotificationV1Proto.ValidationError getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PushToken_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PushToken_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PushToken_ValidationError_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PushToken_ValidationError_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PushToken_ValidationError_UserAppIdInvalid_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PushToken_ValidationError_UserAppIdInvalid_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PushToken_SavingError_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PushToken_SavingError_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PushToken_SavingError_UserAppIdExists_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PushToken_SavingError_UserAppIdExists_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PushToken_SavingError_Conflict_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PushToken_SavingError_Conflict_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PushTokenFilter_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PushTokenFilter_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_UserAppIdsInvalid_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_UserAppIdsInvalid_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PushTokenPaging_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PushTokenPaging_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_LimitInvalid_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_LimitInvalid_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_OffsetInvalid_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_OffsetInvalid_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PostPushTokenRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PostPushTokenRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PostPushTokenResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PostPushTokenResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_PostPushTokenResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_PostPushTokenResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_GetPushTokenListRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_GetPushTokenListRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_GetPushTokenCountRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_GetPushTokenCountRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_GetPushTokenCountResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_GetPushTokenCountResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_GetPushTokenCountResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_GetPushTokenCountResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_GetPushTokenListResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_GetPushTokenListResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_GetPushTokenListResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_GetPushTokenListResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_DeletePushTokenRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_DeletePushTokenRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_DeletePushTokenResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_DeletePushTokenResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_DeletePushTokenResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_DeletePushTokenResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_DeletePushTokenUserIdRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_DeletePushTokenUserIdRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_notification_v1_ValidationError_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_notification_v1_ValidationError_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n@keyapis/notification/v1/keyapis_notifi" +
      "cation_push_token_v1.proto\022\027keyapis.noti" +
      "fication.v1\032\034google/api/annotations.prot" +
      "o\032\037google/api/field_behavior.proto\032 goog" +
      "le/protobuf/descriptor.proto\032\037google/pro" +
      "tobuf/timestamp.proto\032\036google/protobuf/w" +
      "rappers.proto\032\033google/api/visibility.pro" +
      "to\"\300\006\n\tPushToken\022\n\n\002id\030\001 \001(\005\022:\n\004type\030\002 \001" +
      "(\0162\'.keyapis.notification.v1.PushToken.T" +
      "ypeB\003\340A\002\022\022\n\005token\030\003 \001(\tB\003\340A\002\022\030\n\013user_app" +
      "_id\030\004 \001(\tB\003\340A\002\0221\n\007user_id\030\005 \001(\0132\033.google" +
      ".protobuf.Int32ValueB\003\340A\003\0223\n\ncreated_at\030" +
      "\006 \001(\0132\032.google.protobuf.TimestampB\003\340A\003\0223" +
      "\n\nchanged_at\030\007 \001(\0132\032.google.protobuf.Tim" +
      "estampB\003\340A\003\022\030\n\013app_version\030\010 \001(\tB\003\340A\002\032\213\001" +
      "\n\017ValidationError\022Z\n\013user_app_id\030\001 \001(\0132C" +
      ".keyapis.notification.v1.PushToken.Valid" +
      "ationError.UserAppIdInvalidH\000\032\022\n\020UserApp" +
      "IdInvalidB\010\n\006reason\032\341\001\n\013SavingError\022\\\n\022u" +
      "ser_app_id_exists\030\001 \001(\0132>.keyapis.notifi" +
      "cation.v1.PushToken.SavingError.UserAppI" +
      "dExistsH\000\022K\n\010conflict\030\002 \001(\01327.keyapis.no" +
      "tification.v1.PushToken.SavingError.Conf" +
      "lictH\000\032\021\n\017UserAppIdExists\032\n\n\010ConflictB\010\n" +
      "\006reason\"\223\001\n\004Type\022\020\n\014TYPE_UNKNOWN\020\000\022\016\n\nMO" +
      "BILE_FCM\020\001\022\016\n\nMOBILE_HMS\020\002\022\024\n\020MOBILE_APN" +
      "S_TEXT\020\003\022\024\n\020MOBILE_APNS_CALL\020\004\022\013\n\007PWA_FC" +
      "M\020\005\022\014\n\010PWA_APNS\020\006\022\022\n\016MOBILE_RUSTORE\020\007\"\334\003" +
      "\n\017PushTokenFilter\0226\n\005types\030\001 \003(\0162\'.keyap" +
      "is.notification.v1.PushToken.Type\022\024\n\014use" +
      "r_app_ids\030\002 \003(\t\022\020\n\010user_ids\030\003 \003(\005\0224\n\020beg" +
      "in_created_at\030\004 \001(\0132\032.google.protobuf.Ti" +
      "mestamp\0222\n\016end_created_at\030\005 \001(\0132\032.google" +
      ".protobuf.Timestamp\0224\n\020begin_changed_at\030" +
      "\006 \001(\0132\032.google.protobuf.Timestamp\0222\n\016end" +
      "_changed_at\030\007 \001(\0132\032.google.protobuf.Time" +
      "stamp\032\224\001\n\017ValidationError\022b\n\014user_app_id" +
      "s\030\001 \001(\0132J.keyapis.notification.v1.PushTo" +
      "kenFilter.ValidationError.UserAppIdsInva" +
      "lidH\000\032\023\n\021UserAppIdsInvalidB\010\n\006reason\"\320\004\n" +
      "\017PushTokenPaging\022K\n\rorder_by_type\030\001 \001(\0162" +
      "4.keyapis.notification.v1.PushTokenPagin" +
      "g.OrderByType\022N\n\016direction_type\030\002 \001(\01626." +
      "keyapis.notification.v1.PushTokenPaging." +
      "DirectionType\022\r\n\005limit\030\003 \001(\005\022\016\n\006offset\030\004" +
      " \001(\005\032\356\001\n\017ValidationError\022V\n\005limit\030\001 \001(\0132" +
      "E.keyapis.notification.v1.PushTokenPagin" +
      "g.ValidationError.LimitInvalidH\000\022X\n\006offs" +
      "et\030\002 \001(\0132F.keyapis.notification.v1.PushT" +
      "okenPaging.ValidationError.OffsetInvalid" +
      "H\000\032\016\n\014LimitInvalid\032\017\n\rOffsetInvalidB\010\n\006r" +
      "eason\"P\n\013OrderByType\022\031\n\025ORDER_BY_TYPE_UN" +
      "KNOWN\020\000\022\006\n\002ID\020\001\022\016\n\nCREATED_AT\020\002\022\016\n\nCHANG" +
      "ED_AT\020\003\">\n\rDirectionType\022\032\n\026DIRECTION_TY" +
      "PE_UNKNOWN\020\000\022\010\n\004DESC\020\001\022\007\n\003ASC\020\002\"M\n\024PostP" +
      "ushTokenRequest\0225\n\004data\030\001 \001(\0132\".keyapis." +
      "notification.v1.PushTokenB\003\340A\002\"\246\003\n\025PostP" +
      "ushTokenResponse\0222\n\004data\030\001 \001(\0132\".keyapis" +
      ".notification.v1.PushTokenH\000\022E\n\005error\030\002 " +
      "\001(\01324.keyapis.notification.v1.PostPushTo" +
      "kenResponse.ErrorH\000\032\211\002\n\005Error\022i\n\025push_to" +
      "ken_validation\030\001 \001(\01322.keyapis.notificat" +
      "ion.v1.PushToken.ValidationErrorB\024\030\001\372\322\344\223" +
      "\002\014\022\nDEPRECATEDH\000\022K\n\021push_token_saving\030\002 " +
      "\001(\0132..keyapis.notification.v1.PushToken." +
      "SavingErrorH\000\022>\n\nvalidation\030\003 \001(\0132(.keya" +
      "pis.notification.v1.ValidationErrorH\000B\010\n" +
      "\006reasonB\006\n\004type\"\235\001\n\027GetPushTokenListRequ" +
      "est\0228\n\006filter\030\001 \001(\0132(.keyapis.notificati" +
      "on.v1.PushTokenFilter\022:\n\006paging\030\002 \001(\0132(." +
      "keyapis.notification.v1.PushTokenPagingH" +
      "\000B\014\n\npagination\"T\n\030GetPushTokenCountRequ" +
      "est\0228\n\006filter\030\001 \001(\0132(.keyapis.notificati" +
      "on.v1.PushTokenFilter\"\312\002\n\031GetPushTokenCo" +
      "untResponse\022\016\n\004data\030\001 \001(\005H\000\022I\n\005error\030\002 \001" +
      "(\01328.keyapis.notification.v1.GetPushToke" +
      "nCountResponse.ErrorH\000\032\311\001\n\005Error\022v\n\034push" +
      "_token_filter_validation\030\001 \001(\01328.keyapis" +
      ".notification.v1.PushTokenFilter.Validat" +
      "ionErrorB\024\030\001\372\322\344\223\002\014\022\nDEPRECATEDH\000\022>\n\nvali" +
      "dation\030\002 \001(\0132(.keyapis.notification.v1.V" +
      "alidationErrorH\000B\010\n\006reasonB\006\n\004type\"\344\003\n\030G" +
      "etPushTokenListResponse\0222\n\004data\030\001 \001(\0132\"." +
      "keyapis.notification.v1.PushTokenH\000\022H\n\005e" +
      "rror\030\002 \001(\01327.keyapis.notification.v1.Get" +
      "PushTokenListResponse.ErrorH\000\032\301\002\n\005Error\022" +
      "v\n\034push_token_filter_validation\030\001 \001(\01328." +
      "keyapis.notification.v1.PushTokenFilter." +
      "ValidationErrorB\024\030\001\372\322\344\223\002\014\022\nDEPRECATEDH\000\022" +
      "v\n\034push_token_paging_validation\030\002 \001(\01328." +
      "keyapis.notification.v1.PushTokenPaging." +
      "ValidationErrorB\024\030\001\372\322\344\223\002\014\022\nDEPRECATEDH\000\022" +
      ">\n\nvalidation\030\003 \001(\0132(.keyapis.notificati" +
      "on.v1.ValidationErrorH\000B\010\n\006reasonB\006\n\004typ" +
      "e\")\n\026DeletePushTokenRequest\022\017\n\002id\030\001 \001(\005B" +
      "\003\340A\002\"\275\001\n\027DeletePushTokenResponse\022G\n\005erro" +
      "r\030\001 \001(\01326.keyapis.notification.v1.Delete" +
      "PushTokenResponse.ErrorH\000\032Q\n\005Error\022>\n\nva" +
      "lidation\030\001 \001(\0132(.keyapis.notification.v1" +
      ".ValidationErrorH\000B\010\n\006reasonB\006\n\004type\"4\n\034" +
      "DeletePushTokenUserIdRequest\022\024\n\007user_id\030" +
      "\001 \001(\005B\003\340A\002\"\311\001\n\035DeletePushTokenUserIdResp" +
      "onse\022M\n\005error\030\001 \001(\0132<.keyapis.notificati" +
      "on.v1.DeletePushTokenUserIdResponse.Erro" +
      "rH\000\032Q\n\005Error\022>\n\nvalidation\030\001 \001(\0132(.keyap" +
      "is.notification.v1.ValidationErrorH\000B\010\n\006" +
      "reasonB\006\n\004type\";\n\037DeletePushTokenUserApp" +
      "IdRequest\022\030\n\013user_app_id\030\001 \001(\tB\003\340A\002\"\317\001\n " +
      "DeletePushTokenUserAppIdResponse\022P\n\005erro" +
      "r\030\001 \001(\0132?.keyapis.notification.v1.Delete" +
      "PushTokenUserAppIdResponse.ErrorH\000\032Q\n\005Er" +
      "ror\022>\n\nvalidation\030\001 \001(\0132(.keyapis.notifi" +
      "cation.v1.ValidationErrorH\000B\010\n\006reasonB\006\n" +
      "\004type\":\n\017ValidationError\022\021\n\004path\030\001 \001(\tB\003" +
      "\340A\002\022\024\n\007message\030\002 \001(\tB\003\340A\0022\303\010\n\020PushTokenS" +
      "ervice\022\232\001\n\rPostPushToken\022-.keyapis.notif" +
      "ication.v1.PostPushTokenRequest\032..keyapi" +
      "s.notification.v1.PostPushTokenResponse\"" +
      "*\202\323\344\223\002$\"\037/notification/api/v1/push_token" +
      ":\001*\022\247\001\n\020GetPushTokenList\0220.keyapis.notif" +
      "ication.v1.GetPushTokenListRequest\0321.key" +
      "apis.notification.v1.GetPushTokenListRes" +
      "ponse\",\202\323\344\223\002&\022$/notification/api/v1/push" +
      "_token/list0\001\022\251\001\n\021GetPushTokenCount\0221.ke" +
      "yapis.notification.v1.GetPushTokenCountR" +
      "equest\0322.keyapis.notification.v1.GetPush" +
      "TokenCountResponse\"-\202\323\344\223\002\'\022%/notificatio" +
      "n/api/v1/push_token/count\022\242\001\n\017DeletePush" +
      "Token\022/.keyapis.notification.v1.DeletePu" +
      "shTokenRequest\0320.keyapis.notification.v1" +
      ".DeletePushTokenResponse\",\202\323\344\223\002&*$/notif" +
      "ication/api/v1/push_token/{id}\022\322\001\n\030Delet" +
      "ePushTokenUserAppId\0228.keyapis.notificati" +
      "on.v1.DeletePushTokenUserAppIdRequest\0329." +
      "keyapis.notification.v1.DeletePushTokenU" +
      "serAppIdResponse\"A\202\323\344\223\002;*9/notification/" +
      "api/v1/push_token/user_app_id/{user_app_" +
      "id}\022\301\001\n\025DeletePushTokenUserId\0225.keyapis." +
      "notification.v1.DeletePushTokenUserIdReq" +
      "uest\0326.keyapis.notification.v1.DeletePus" +
      "hTokenUserIdResponse\"9\202\323\344\223\0023*1/notificat" +
      "ion/api/v1/push_token/user_id/{user_id}B" +
      "\304\001\n\032ru.keyapis.notification.v1B\032KeyapisN" +
      "otificationV1ProtoH\003P\000Z\030/keyapis_notific" +
      "ation_v1\330\001\001\370\001\001\242\002\025KEYAPISNOTIFICATIONV1\252\002" +
      "\027Keyapis.Notification.V1\312\002\027Keyapis\\Notif" +
      "ication\\V1\352\002\031Keyapis::Notification::V1b\006" +
      "proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.api.AnnotationsProto.getDescriptor(),
          com.google.api.FieldBehaviorProto.getDescriptor(),
          com.google.protobuf.DescriptorProtos.getDescriptor(),
          com.google.protobuf.TimestampProto.getDescriptor(),
          com.google.protobuf.WrappersProto.getDescriptor(),
          com.google.api.VisibilityProto.getDescriptor(),
        });
    internal_static_keyapis_notification_v1_PushToken_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_keyapis_notification_v1_PushToken_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PushToken_descriptor,
        new java.lang.String[] { "Id", "Type", "Token", "UserAppId", "UserId", "CreatedAt", "ChangedAt", "AppVersion", });
    internal_static_keyapis_notification_v1_PushToken_ValidationError_descriptor =
      internal_static_keyapis_notification_v1_PushToken_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_notification_v1_PushToken_ValidationError_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PushToken_ValidationError_descriptor,
        new java.lang.String[] { "UserAppId", "Reason", });
    internal_static_keyapis_notification_v1_PushToken_ValidationError_UserAppIdInvalid_descriptor =
      internal_static_keyapis_notification_v1_PushToken_ValidationError_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_notification_v1_PushToken_ValidationError_UserAppIdInvalid_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PushToken_ValidationError_UserAppIdInvalid_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_notification_v1_PushToken_SavingError_descriptor =
      internal_static_keyapis_notification_v1_PushToken_descriptor.getNestedTypes().get(1);
    internal_static_keyapis_notification_v1_PushToken_SavingError_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PushToken_SavingError_descriptor,
        new java.lang.String[] { "UserAppIdExists", "Conflict", "Reason", });
    internal_static_keyapis_notification_v1_PushToken_SavingError_UserAppIdExists_descriptor =
      internal_static_keyapis_notification_v1_PushToken_SavingError_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_notification_v1_PushToken_SavingError_UserAppIdExists_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PushToken_SavingError_UserAppIdExists_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_notification_v1_PushToken_SavingError_Conflict_descriptor =
      internal_static_keyapis_notification_v1_PushToken_SavingError_descriptor.getNestedTypes().get(1);
    internal_static_keyapis_notification_v1_PushToken_SavingError_Conflict_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PushToken_SavingError_Conflict_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_notification_v1_PushTokenFilter_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_keyapis_notification_v1_PushTokenFilter_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PushTokenFilter_descriptor,
        new java.lang.String[] { "Types", "UserAppIds", "UserIds", "BeginCreatedAt", "EndCreatedAt", "BeginChangedAt", "EndChangedAt", });
    internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_descriptor =
      internal_static_keyapis_notification_v1_PushTokenFilter_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_descriptor,
        new java.lang.String[] { "UserAppIds", "Reason", });
    internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_UserAppIdsInvalid_descriptor =
      internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_UserAppIdsInvalid_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PushTokenFilter_ValidationError_UserAppIdsInvalid_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_notification_v1_PushTokenPaging_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_keyapis_notification_v1_PushTokenPaging_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PushTokenPaging_descriptor,
        new java.lang.String[] { "OrderByType", "DirectionType", "Limit", "Offset", });
    internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_descriptor =
      internal_static_keyapis_notification_v1_PushTokenPaging_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_descriptor,
        new java.lang.String[] { "Limit", "Offset", "Reason", });
    internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_LimitInvalid_descriptor =
      internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_LimitInvalid_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_LimitInvalid_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_OffsetInvalid_descriptor =
      internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_descriptor.getNestedTypes().get(1);
    internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_OffsetInvalid_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PushTokenPaging_ValidationError_OffsetInvalid_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_notification_v1_PostPushTokenRequest_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_keyapis_notification_v1_PostPushTokenRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PostPushTokenRequest_descriptor,
        new java.lang.String[] { "Data", });
    internal_static_keyapis_notification_v1_PostPushTokenResponse_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_keyapis_notification_v1_PostPushTokenResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PostPushTokenResponse_descriptor,
        new java.lang.String[] { "Data", "Error", "Type", });
    internal_static_keyapis_notification_v1_PostPushTokenResponse_Error_descriptor =
      internal_static_keyapis_notification_v1_PostPushTokenResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_notification_v1_PostPushTokenResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_PostPushTokenResponse_Error_descriptor,
        new java.lang.String[] { "PushTokenValidation", "PushTokenSaving", "Validation", "Reason", });
    internal_static_keyapis_notification_v1_GetPushTokenListRequest_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_keyapis_notification_v1_GetPushTokenListRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_GetPushTokenListRequest_descriptor,
        new java.lang.String[] { "Filter", "Paging", "Pagination", });
    internal_static_keyapis_notification_v1_GetPushTokenCountRequest_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_keyapis_notification_v1_GetPushTokenCountRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_GetPushTokenCountRequest_descriptor,
        new java.lang.String[] { "Filter", });
    internal_static_keyapis_notification_v1_GetPushTokenCountResponse_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_keyapis_notification_v1_GetPushTokenCountResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_GetPushTokenCountResponse_descriptor,
        new java.lang.String[] { "Data", "Error", "Type", });
    internal_static_keyapis_notification_v1_GetPushTokenCountResponse_Error_descriptor =
      internal_static_keyapis_notification_v1_GetPushTokenCountResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_notification_v1_GetPushTokenCountResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_GetPushTokenCountResponse_Error_descriptor,
        new java.lang.String[] { "PushTokenFilterValidation", "Validation", "Reason", });
    internal_static_keyapis_notification_v1_GetPushTokenListResponse_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_keyapis_notification_v1_GetPushTokenListResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_GetPushTokenListResponse_descriptor,
        new java.lang.String[] { "Data", "Error", "Type", });
    internal_static_keyapis_notification_v1_GetPushTokenListResponse_Error_descriptor =
      internal_static_keyapis_notification_v1_GetPushTokenListResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_notification_v1_GetPushTokenListResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_GetPushTokenListResponse_Error_descriptor,
        new java.lang.String[] { "PushTokenFilterValidation", "PushTokenPagingValidation", "Validation", "Reason", });
    internal_static_keyapis_notification_v1_DeletePushTokenRequest_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_keyapis_notification_v1_DeletePushTokenRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_DeletePushTokenRequest_descriptor,
        new java.lang.String[] { "Id", });
    internal_static_keyapis_notification_v1_DeletePushTokenResponse_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_keyapis_notification_v1_DeletePushTokenResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_DeletePushTokenResponse_descriptor,
        new java.lang.String[] { "Error", "Type", });
    internal_static_keyapis_notification_v1_DeletePushTokenResponse_Error_descriptor =
      internal_static_keyapis_notification_v1_DeletePushTokenResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_notification_v1_DeletePushTokenResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_DeletePushTokenResponse_Error_descriptor,
        new java.lang.String[] { "Validation", "Reason", });
    internal_static_keyapis_notification_v1_DeletePushTokenUserIdRequest_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_keyapis_notification_v1_DeletePushTokenUserIdRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_DeletePushTokenUserIdRequest_descriptor,
        new java.lang.String[] { "UserId", });
    internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_descriptor,
        new java.lang.String[] { "Error", "Type", });
    internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_Error_descriptor =
      internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_DeletePushTokenUserIdResponse_Error_descriptor,
        new java.lang.String[] { "Validation", "Reason", });
    internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdRequest_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdRequest_descriptor,
        new java.lang.String[] { "UserAppId", });
    internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_descriptor,
        new java.lang.String[] { "Error", "Type", });
    internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_Error_descriptor =
      internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_DeletePushTokenUserAppIdResponse_Error_descriptor,
        new java.lang.String[] { "Validation", "Reason", });
    internal_static_keyapis_notification_v1_ValidationError_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_keyapis_notification_v1_ValidationError_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_notification_v1_ValidationError_descriptor,
        new java.lang.String[] { "Path", "Message", });
    com.google.protobuf.ExtensionRegistry registry =
        com.google.protobuf.ExtensionRegistry.newInstance();
    registry.add(com.google.api.FieldBehaviorProto.fieldBehavior);
    registry.add(com.google.api.VisibilityProto.fieldVisibility);
    registry.add(com.google.api.AnnotationsProto.http);
    com.google.protobuf.Descriptors.FileDescriptor
        .internalUpdateFileDescriptor(descriptor, registry);
    com.google.api.AnnotationsProto.getDescriptor();
    com.google.api.FieldBehaviorProto.getDescriptor();
    com.google.protobuf.DescriptorProtos.getDescriptor();
    com.google.protobuf.TimestampProto.getDescriptor();
    com.google.protobuf.WrappersProto.getDescriptor();
    com.google.api.VisibilityProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
