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

package ru.keyapis.access_management.v1;

public final class KeyapisAccessManagementV1Proto {
  private KeyapisAccessManagementV1Proto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }
  public interface PutGroupApiKeyCreateRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PutGroupApiKeyCreateRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The groupId.
     */
    java.lang.String getGroupId();
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for groupId.
     */
    com.google.protobuf.ByteString
        getGroupIdBytes();
  }
  /**
   * <pre>
   * Запрос на добавления группе ключа доступа ApiKey
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PutGroupApiKeyCreateRequest}
   */
  public  static final class PutGroupApiKeyCreateRequest extends
      com.google.protobuf.GeneratedMessageLite<
          PutGroupApiKeyCreateRequest, PutGroupApiKeyCreateRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupApiKeyCreateRequest)
      PutGroupApiKeyCreateRequestOrBuilder {
    private PutGroupApiKeyCreateRequest() {
      groupId_ = "";
    }
    public static final int GROUP_ID_FIELD_NUMBER = 1;
    private java.lang.String groupId_;
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The groupId.
     */
    @java.lang.Override
    public java.lang.String getGroupId() {
      return groupId_;
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for groupId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGroupIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(groupId_);
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The groupId to set.
     */
    private void setGroupId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      groupId_ = value;
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearGroupId() {

      groupId_ = getDefaultInstance().getGroupId();
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for groupId to set.
     */
    private void setGroupIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      groupId_ = value.toStringUtf8();

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос на добавления группе ключа доступа ApiKey
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupApiKeyCreateRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupApiKeyCreateRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The groupId.
       */
      @java.lang.Override
      public java.lang.String getGroupId() {
        return instance.getGroupId();
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for groupId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getGroupIdBytes() {
        return instance.getGroupIdBytes();
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The groupId to set.
       * @return This builder for chaining.
       */
      public Builder setGroupId(
          java.lang.String value) {
        copyOnWrite();
        instance.setGroupId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearGroupId() {
        copyOnWrite();
        instance.clearGroupId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for groupId to set.
       * @return This builder for chaining.
       */
      public Builder setGroupIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setGroupIdBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupApiKeyCreateRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "groupId_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0208";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupApiKeyCreateRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest DEFAULT_INSTANCE;
    static {
      PutGroupApiKeyCreateRequest defaultInstance = new PutGroupApiKeyCreateRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PutGroupApiKeyCreateRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PutGroupApiKeyCreateRequest> PARSER;

    public static com.google.protobuf.Parser<PutGroupApiKeyCreateRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface PutGroupApiKeyCreateResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PutGroupApiKeyCreateResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Значение ключа доступа ApiKey.
     * # Тип: Guid
     * </pre>
     *
     * <code>string data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Значение ключа доступа ApiKey.
     * # Тип: Guid
     * </pre>
     *
     * <code>string data = 1;</code>
     * @return The data.
     */
    java.lang.String getData();
    /**
     * <pre>
     * Значение ключа доступа ApiKey.
     * # Тип: Guid
     * </pre>
     *
     * <code>string data = 1;</code>
     * @return The bytes for data.
     */
    com.google.protobuf.ByteString
        getDataBytes();

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос на добавления группе ключа доступа ApiKey
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PutGroupApiKeyCreateResponse}
   */
  public  static final class PutGroupApiKeyCreateResponse extends
      com.google.protobuf.GeneratedMessageLite<
          PutGroupApiKeyCreateResponse, PutGroupApiKeyCreateResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupApiKeyCreateResponse)
      PutGroupApiKeyCreateResponseOrBuilder {
    private PutGroupApiKeyCreateResponse() {
    }
    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      DATA(1),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @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 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Значение ключа доступа ApiKey.
     * # Тип: Guid
     * </pre>
     *
     * <code>string data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Значение ключа доступа ApiKey.
     * # Тип: Guid
     * </pre>
     *
     * <code>string data = 1;</code>
     * @return The data.
     */
    @java.lang.Override
    public java.lang.String getData() {
      java.lang.String ref = "";
      if (typeCase_ == 1) {
        ref = (java.lang.String) type_;
      }
      return ref;
    }
    /**
     * <pre>
     * Значение ключа доступа ApiKey.
     * # Тип: Guid
     * </pre>
     *
     * <code>string data = 1;</code>
     * @return The bytes for data.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDataBytes() {
      java.lang.String ref = "";
      if (typeCase_ == 1) {
        ref = (java.lang.String) type_;
      }
      return com.google.protobuf.ByteString.copyFromUtf8(ref);
    }
    /**
     * <pre>
     * Значение ключа доступа ApiKey.
     * # Тип: Guid
     * </pre>
     *
     * <code>string data = 1;</code>
     * @param value The data to set.
     */
    private void setData(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  typeCase_ = 1;
      type_ = value;
    }
    /**
     * <pre>
     * Значение ключа доступа ApiKey.
     * # Тип: Guid
     * </pre>
     *
     * <code>string data = 1;</code>
     */
    private void clearData() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }
    /**
     * <pre>
     * Значение ключа доступа ApiKey.
     * # Тип: Guid
     * </pre>
     *
     * <code>string data = 1;</code>
     * @param value The bytes for data to set.
     */
    private void setDataBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      type_ = value.toStringUtf8();
      typeCase_ = 1;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос на добавления группе ключа доступа ApiKey
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupApiKeyCreateResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupApiKeyCreateResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Значение ключа доступа ApiKey.
       * # Тип: Guid
       * </pre>
       *
       * <code>string data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Значение ключа доступа ApiKey.
       * # Тип: Guid
       * </pre>
       *
       * <code>string data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public java.lang.String getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Значение ключа доступа ApiKey.
       * # Тип: Guid
       * </pre>
       *
       * <code>string data = 1;</code>
       * @return The bytes for data.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getDataBytes() {
        return instance.getDataBytes();
      }
      /**
       * <pre>
       * Значение ключа доступа ApiKey.
       * # Тип: Guid
       * </pre>
       *
       * <code>string data = 1;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(
          java.lang.String value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Значение ключа доступа ApiKey.
       * # Тип: Guid
       * </pre>
       *
       * <code>string data = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }
      /**
       * <pre>
       * Значение ключа доступа ApiKey.
       * # Тип: Guid
       * </pre>
       *
       * <code>string data = 1;</code>
       * @param value The bytes for data to set.
       * @return This builder for chaining.
       */
      public Builder setDataBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setDataBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupApiKeyCreateResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
            };
            java.lang.String info =
                "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u023b\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupApiKeyCreateResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse DEFAULT_INSTANCE;
    static {
      PutGroupApiKeyCreateResponse defaultInstance = new PutGroupApiKeyCreateResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PutGroupApiKeyCreateResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PutGroupApiKeyCreateResponse> PARSER;

    public static com.google.protobuf.Parser<PutGroupApiKeyCreateResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface PutGroupApiKeyDeleteRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PutGroupApiKeyDeleteRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The groupId.
     */
    java.lang.String getGroupId();
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for groupId.
     */
    com.google.protobuf.ByteString
        getGroupIdBytes();
  }
  /**
   * <pre>
   * Запрос на удаление ключей доступа ApiKey
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PutGroupApiKeyDeleteRequest}
   */
  public  static final class PutGroupApiKeyDeleteRequest extends
      com.google.protobuf.GeneratedMessageLite<
          PutGroupApiKeyDeleteRequest, PutGroupApiKeyDeleteRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupApiKeyDeleteRequest)
      PutGroupApiKeyDeleteRequestOrBuilder {
    private PutGroupApiKeyDeleteRequest() {
      groupId_ = "";
    }
    public static final int GROUP_ID_FIELD_NUMBER = 1;
    private java.lang.String groupId_;
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The groupId.
     */
    @java.lang.Override
    public java.lang.String getGroupId() {
      return groupId_;
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for groupId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGroupIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(groupId_);
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The groupId to set.
     */
    private void setGroupId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      groupId_ = value;
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearGroupId() {

      groupId_ = getDefaultInstance().getGroupId();
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for groupId to set.
     */
    private void setGroupIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      groupId_ = value.toStringUtf8();

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос на удаление ключей доступа ApiKey
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupApiKeyDeleteRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupApiKeyDeleteRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The groupId.
       */
      @java.lang.Override
      public java.lang.String getGroupId() {
        return instance.getGroupId();
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for groupId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getGroupIdBytes() {
        return instance.getGroupIdBytes();
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The groupId to set.
       * @return This builder for chaining.
       */
      public Builder setGroupId(
          java.lang.String value) {
        copyOnWrite();
        instance.setGroupId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearGroupId() {
        copyOnWrite();
        instance.clearGroupId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for groupId to set.
       * @return This builder for chaining.
       */
      public Builder setGroupIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setGroupIdBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupApiKeyDeleteRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "groupId_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0208";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupApiKeyDeleteRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest DEFAULT_INSTANCE;
    static {
      PutGroupApiKeyDeleteRequest defaultInstance = new PutGroupApiKeyDeleteRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PutGroupApiKeyDeleteRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PutGroupApiKeyDeleteRequest> PARSER;

    public static com.google.protobuf.Parser<PutGroupApiKeyDeleteRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface PutGroupApiKeyDeleteResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PutGroupApiKeyDeleteResponse)
      com.google.protobuf.MessageLiteOrBuilder {
  }
  /**
   * <pre>
   * Ответ на запрос на удаление ключей доступа ApiKey
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PutGroupApiKeyDeleteResponse}
   */
  public  static final class PutGroupApiKeyDeleteResponse extends
      com.google.protobuf.GeneratedMessageLite<
          PutGroupApiKeyDeleteResponse, PutGroupApiKeyDeleteResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupApiKeyDeleteResponse)
      PutGroupApiKeyDeleteResponseOrBuilder {
    private PutGroupApiKeyDeleteResponse() {
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос на удаление ключей доступа ApiKey
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupApiKeyDeleteResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupApiKeyDeleteResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupApiKeyDeleteResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = null;java.lang.String info =
                "\u0000\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupApiKeyDeleteResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse DEFAULT_INSTANCE;
    static {
      PutGroupApiKeyDeleteResponse defaultInstance = new PutGroupApiKeyDeleteResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PutGroupApiKeyDeleteResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PutGroupApiKeyDeleteResponse> PARSER;

    public static com.google.protobuf.Parser<PutGroupApiKeyDeleteResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface ClaimOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.Claim)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Ключ атрибута
     * </pre>
     *
     * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The key.
     */
    java.lang.String getKey();
    /**
     * <pre>
     * Ключ атрибута
     * </pre>
     *
     * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for key.
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <pre>
     * Значение атрибута
     * </pre>
     *
     * <code>string value = 2;</code>
     * @return The value.
     */
    java.lang.String getValue();
    /**
     * <pre>
     * Значение атрибута
     * </pre>
     *
     * <code>string value = 2;</code>
     * @return The bytes for value.
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * <pre>
   * Атрибут пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.Claim}
   */
  public  static final class Claim extends
      com.google.protobuf.GeneratedMessageLite<
          Claim, Claim.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.Claim)
      ClaimOrBuilder {
    private Claim() {
      key_ = "";
      value_ = "";
    }
    public static final int KEY_FIELD_NUMBER = 1;
    private java.lang.String key_;
    /**
     * <pre>
     * Ключ атрибута
     * </pre>
     *
     * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The key.
     */
    @java.lang.Override
    public java.lang.String getKey() {
      return key_;
    }
    /**
     * <pre>
     * Ключ атрибута
     * </pre>
     *
     * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for key.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKeyBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(key_);
    }
    /**
     * <pre>
     * Ключ атрибута
     * </pre>
     *
     * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The key to set.
     */
    private void setKey(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      key_ = value;
    }
    /**
     * <pre>
     * Ключ атрибута
     * </pre>
     *
     * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearKey() {

      key_ = getDefaultInstance().getKey();
    }
    /**
     * <pre>
     * Ключ атрибута
     * </pre>
     *
     * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for key to set.
     */
    private void setKeyBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      key_ = value.toStringUtf8();

    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private java.lang.String value_;
    /**
     * <pre>
     * Значение атрибута
     * </pre>
     *
     * <code>string value = 2;</code>
     * @return The value.
     */
    @java.lang.Override
    public java.lang.String getValue() {
      return value_;
    }
    /**
     * <pre>
     * Значение атрибута
     * </pre>
     *
     * <code>string value = 2;</code>
     * @return The bytes for value.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getValueBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(value_);
    }
    /**
     * <pre>
     * Значение атрибута
     * </pre>
     *
     * <code>string value = 2;</code>
     * @param value The value to set.
     */
    private void setValue(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      value_ = value;
    }
    /**
     * <pre>
     * Значение атрибута
     * </pre>
     *
     * <code>string value = 2;</code>
     */
    private void clearValue() {

      value_ = getDefaultInstance().getValue();
    }
    /**
     * <pre>
     * Значение атрибута
     * </pre>
     *
     * <code>string value = 2;</code>
     * @param value The bytes for value to set.
     */
    private void setValueBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      value_ = value.toStringUtf8();

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Атрибут пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.Claim}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.Claim)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Ключ атрибута
       * </pre>
       *
       * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The key.
       */
      @java.lang.Override
      public java.lang.String getKey() {
        return instance.getKey();
      }
      /**
       * <pre>
       * Ключ атрибута
       * </pre>
       *
       * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for key.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getKeyBytes() {
        return instance.getKeyBytes();
      }
      /**
       * <pre>
       * Ключ атрибута
       * </pre>
       *
       * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          java.lang.String value) {
        copyOnWrite();
        instance.setKey(value);
        return this;
      }
      /**
       * <pre>
       * Ключ атрибута
       * </pre>
       *
       * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        copyOnWrite();
        instance.clearKey();
        return this;
      }
      /**
       * <pre>
       * Ключ атрибута
       * </pre>
       *
       * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for key to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setKeyBytes(value);
        return this;
      }

      /**
       * <pre>
       * Значение атрибута
       * </pre>
       *
       * <code>string value = 2;</code>
       * @return The value.
       */
      @java.lang.Override
      public java.lang.String getValue() {
        return instance.getValue();
      }
      /**
       * <pre>
       * Значение атрибута
       * </pre>
       *
       * <code>string value = 2;</code>
       * @return The bytes for value.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getValueBytes() {
        return instance.getValueBytes();
      }
      /**
       * <pre>
       * Значение атрибута
       * </pre>
       *
       * <code>string value = 2;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          java.lang.String value) {
        copyOnWrite();
        instance.setValue(value);
        return this;
      }
      /**
       * <pre>
       * Значение атрибута
       * </pre>
       *
       * <code>string value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        copyOnWrite();
        instance.clearValue();
        return this;
      }
      /**
       * <pre>
       * Значение атрибута
       * </pre>
       *
       * <code>string value = 2;</code>
       * @param value The bytes for value to set.
       * @return This builder for chaining.
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setValueBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.Claim)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "key_",
              "value_",
            };
            java.lang.String info =
                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0208\u0002\u0208" +
                "";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.Claim)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim DEFAULT_INSTANCE;
    static {
      Claim defaultInstance = new Claim();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Claim.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<Claim> PARSER;

    public static com.google.protobuf.Parser<Claim> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface UserGroupOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.UserGroup)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Идентификатор пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userId.
     */
    java.lang.String getUserId();
    /**
     * <pre>
     * Идентификатор пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for userId.
     */
    com.google.protobuf.ByteString
        getUserIdBytes();

    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The groupId.
     */
    java.lang.String getGroupId();
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for groupId.
     */
    com.google.protobuf.ByteString
        getGroupIdBytes();
  }
  /**
   * <pre>
   * Связка пользователя с группой
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.UserGroup}
   */
  public  static final class UserGroup extends
      com.google.protobuf.GeneratedMessageLite<
          UserGroup, UserGroup.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.UserGroup)
      UserGroupOrBuilder {
    private UserGroup() {
      userId_ = "";
      groupId_ = "";
    }
    public static final int USER_ID_FIELD_NUMBER = 1;
    private java.lang.String userId_;
    /**
     * <pre>
     * Идентификатор пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userId.
     */
    @java.lang.Override
    public java.lang.String getUserId() {
      return userId_;
    }
    /**
     * <pre>
     * Идентификатор пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for userId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(userId_);
    }
    /**
     * <pre>
     * Идентификатор пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The userId to set.
     */
    private void setUserId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      userId_ = value;
    }
    /**
     * <pre>
     * Идентификатор пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearUserId() {

      userId_ = getDefaultInstance().getUserId();
    }
    /**
     * <pre>
     * Идентификатор пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for userId to set.
     */
    private void setUserIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      userId_ = value.toStringUtf8();

    }

    public static final int GROUP_ID_FIELD_NUMBER = 2;
    private java.lang.String groupId_;
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The groupId.
     */
    @java.lang.Override
    public java.lang.String getGroupId() {
      return groupId_;
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for groupId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGroupIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(groupId_);
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The groupId to set.
     */
    private void setGroupId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      groupId_ = value;
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearGroupId() {

      groupId_ = getDefaultInstance().getGroupId();
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for groupId to set.
     */
    private void setGroupIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      groupId_ = value.toStringUtf8();

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Связка пользователя с группой
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.UserGroup}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.UserGroup)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Идентификатор пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The userId.
       */
      @java.lang.Override
      public java.lang.String getUserId() {
        return instance.getUserId();
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for userId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getUserIdBytes() {
        return instance.getUserIdBytes();
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The userId to set.
       * @return This builder for chaining.
       */
      public Builder setUserId(
          java.lang.String value) {
        copyOnWrite();
        instance.setUserId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearUserId() {
        copyOnWrite();
        instance.clearUserId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for userId to set.
       * @return This builder for chaining.
       */
      public Builder setUserIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setUserIdBytes(value);
        return this;
      }

      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The groupId.
       */
      @java.lang.Override
      public java.lang.String getGroupId() {
        return instance.getGroupId();
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for groupId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getGroupIdBytes() {
        return instance.getGroupIdBytes();
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The groupId to set.
       * @return This builder for chaining.
       */
      public Builder setGroupId(
          java.lang.String value) {
        copyOnWrite();
        instance.setGroupId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearGroupId() {
        copyOnWrite();
        instance.clearGroupId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for groupId to set.
       * @return This builder for chaining.
       */
      public Builder setGroupIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setGroupIdBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.UserGroup)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "userId_",
              "groupId_",
            };
            java.lang.String info =
                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0208\u0002\u0208" +
                "";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.UserGroup)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup DEFAULT_INSTANCE;
    static {
      UserGroup defaultInstance = new UserGroup();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        UserGroup.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<UserGroup> PARSER;

    public static com.google.protobuf.Parser<UserGroup> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GroupOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.Group)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The id.
     */
    java.lang.String getId();
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * Наименование.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The title.
     */
    java.lang.String getTitle();
    /**
     * <pre>
     * Наименование.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for title.
     */
    com.google.protobuf.ByteString
        getTitleBytes();

    /**
     * <pre>
     * Описание.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string description = 3;</code>
     * @return The description.
     */
    java.lang.String getDescription();
    /**
     * <pre>
     * Описание.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string description = 3;</code>
     * @return The bytes for description.
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();

    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> 
        getClaimsList();
    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getClaims(int index);
    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    int getClaimsCount();

    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> 
        getRequirementsList();
    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getRequirements(int index);
    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    int getRequirementsCount();

    /**
     * <pre>
     * Дата удаления группы из использования.
     * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
     * </pre>
     *
     * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
     * @return Whether the deletedAt field is set.
     */
    boolean hasDeletedAt();
    /**
     * <pre>
     * Дата удаления группы из использования.
     * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
     * </pre>
     *
     * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
     * @return The deletedAt.
     */
    com.google.protobuf.Timestamp getDeletedAt();

    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @return A list containing the tags.
     */
    java.util.List<java.lang.String>
        getTagsList();
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @return The count of tags.
     */
    int getTagsCount();
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @param index The index of the element to return.
     * @return The tags at the given index.
     */
    java.lang.String getTags(int index);
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @param index The index of the element to return.
     * @return The tags at the given index.
     */
    com.google.protobuf.ByteString
        getTagsBytes(int index);
  }
  /**
   * <pre>
   * Группа атрибутов пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.Group}
   */
  public  static final class Group extends
      com.google.protobuf.GeneratedMessageLite<
          Group, Group.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.Group)
      GroupOrBuilder {
    private Group() {
      id_ = "";
      title_ = "";
      description_ = "";
      claims_ = emptyProtobufList();
      requirements_ = emptyProtobufList();
      tags_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    public static final int ID_FIELD_NUMBER = 1;
    private java.lang.String id_;
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      return id_;
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(id_);
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1;</code>
     * @param value The id to set.
     */
    private void setId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      id_ = value;
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    private void clearId() {

      id_ = getDefaultInstance().getId();
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1;</code>
     * @param value The bytes for id to set.
     */
    private void setIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      id_ = value.toStringUtf8();

    }

    public static final int TITLE_FIELD_NUMBER = 2;
    private java.lang.String title_;
    /**
     * <pre>
     * Наименование.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The title.
     */
    @java.lang.Override
    public java.lang.String getTitle() {
      return title_;
    }
    /**
     * <pre>
     * Наименование.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for title.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTitleBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(title_);
    }
    /**
     * <pre>
     * Наименование.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The title to set.
     */
    private void setTitle(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      title_ = value;
    }
    /**
     * <pre>
     * Наименование.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearTitle() {

      title_ = getDefaultInstance().getTitle();
    }
    /**
     * <pre>
     * Наименование.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for title to set.
     */
    private void setTitleBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      title_ = value.toStringUtf8();

    }

    public static final int DESCRIPTION_FIELD_NUMBER = 3;
    private java.lang.String description_;
    /**
     * <pre>
     * Описание.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string description = 3;</code>
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      return description_;
    }
    /**
     * <pre>
     * Описание.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string description = 3;</code>
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(description_);
    }
    /**
     * <pre>
     * Описание.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string description = 3;</code>
     * @param value The description to set.
     */
    private void setDescription(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      description_ = value;
    }
    /**
     * <pre>
     * Описание.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string description = 3;</code>
     */
    private void clearDescription() {

      description_ = getDefaultInstance().getDescription();
    }
    /**
     * <pre>
     * Описание.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string description = 3;</code>
     * @param value The bytes for description to set.
     */
    private void setDescriptionBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      description_ = value.toStringUtf8();

    }

    public static final int CLAIMS_FIELD_NUMBER = 4;
    private com.google.protobuf.Internal.ProtobufList<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> claims_;
    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    @java.lang.Override
    public java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> getClaimsList() {
      return claims_;
    }
    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    public java.util.List<? extends ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder> 
        getClaimsOrBuilderList() {
      return claims_;
    }
    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    @java.lang.Override
    public int getClaimsCount() {
      return claims_.size();
    }
    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getClaims(int index) {
      return claims_.get(index);
    }
    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder getClaimsOrBuilder(
        int index) {
      return claims_.get(index);
    }
    private void ensureClaimsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> tmp = claims_;
      if (!tmp.isModifiable()) {
        claims_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    private void setClaims(
        int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
      value.getClass();
  ensureClaimsIsMutable();
      claims_.set(index, value);
    }
    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    private void addClaims(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
      value.getClass();
  ensureClaimsIsMutable();
      claims_.add(value);
    }
    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    private void addClaims(
        int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
      value.getClass();
  ensureClaimsIsMutable();
      claims_.add(index, value);
    }
    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    private void addAllClaims(
        java.lang.Iterable<? extends ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> values) {
      ensureClaimsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, claims_);
    }
    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    private void clearClaims() {
      claims_ = emptyProtobufList();
    }
    /**
     * <pre>
     * Массив атрибутов группы.
     * Эти атрибуты назначены пользователям, которые принадлежат группе.
     * # Диапазон: 0..100
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
     */
    private void removeClaims(int index) {
      ensureClaimsIsMutable();
      claims_.remove(index);
    }

    public static final int REQUIREMENTS_FIELD_NUMBER = 5;
    private com.google.protobuf.Internal.ProtobufList<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> requirements_;
    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    @java.lang.Override
    public java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> getRequirementsList() {
      return requirements_;
    }
    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    public java.util.List<? extends ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder> 
        getRequirementsOrBuilderList() {
      return requirements_;
    }
    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    @java.lang.Override
    public int getRequirementsCount() {
      return requirements_.size();
    }
    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getRequirements(int index) {
      return requirements_.get(index);
    }
    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder getRequirementsOrBuilder(
        int index) {
      return requirements_.get(index);
    }
    private void ensureRequirementsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> tmp = requirements_;
      if (!tmp.isModifiable()) {
        requirements_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    private void setRequirements(
        int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
      value.getClass();
  ensureRequirementsIsMutable();
      requirements_.set(index, value);
    }
    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    private void addRequirements(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
      value.getClass();
  ensureRequirementsIsMutable();
      requirements_.add(value);
    }
    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    private void addRequirements(
        int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
      value.getClass();
  ensureRequirementsIsMutable();
      requirements_.add(index, value);
    }
    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    private void addAllRequirements(
        java.lang.Iterable<? extends ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> values) {
      ensureRequirementsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, requirements_);
    }
    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    private void clearRequirements() {
      requirements_ = emptyProtobufList();
    }
    /**
     * <pre>
     * Требования, означающие принадлежность пользователя к данной группе.
     * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
     */
    private void removeRequirements(int index) {
      ensureRequirementsIsMutable();
      requirements_.remove(index);
    }

    public static final int DELETED_AT_FIELD_NUMBER = 6;
    private com.google.protobuf.Timestamp deletedAt_;
    /**
     * <pre>
     * Дата удаления группы из использования.
     * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
     * </pre>
     *
     * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
     */
    @java.lang.Override
    public boolean hasDeletedAt() {
      return deletedAt_ != null;
    }
    /**
     * <pre>
     * Дата удаления группы из использования.
     * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
     * </pre>
     *
     * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getDeletedAt() {
      return deletedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : deletedAt_;
    }
    /**
     * <pre>
     * Дата удаления группы из использования.
     * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
     * </pre>
     *
     * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
     */
    private void setDeletedAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  deletedAt_ = value;

      }
    /**
     * <pre>
     * Дата удаления группы из использования.
     * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
     * </pre>
     *
     * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeDeletedAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  if (deletedAt_ != null &&
          deletedAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
        deletedAt_ =
          com.google.protobuf.Timestamp.newBuilder(deletedAt_).mergeFrom(value).buildPartial();
      } else {
        deletedAt_ = value;
      }

    }
    /**
     * <pre>
     * Дата удаления группы из использования.
     * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
     * </pre>
     *
     * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
     */
    private void clearDeletedAt() {  deletedAt_ = null;

    }

    public static final int TAGS_FIELD_NUMBER = 7;
    private com.google.protobuf.Internal.ProtobufList<java.lang.String> tags_;
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @return A list containing the tags.
     */
    @java.lang.Override
    public java.util.List<java.lang.String> getTagsList() {
      return tags_;
    }
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @return The count of tags.
     */
    @java.lang.Override
    public int getTagsCount() {
      return tags_.size();
    }
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @param index The index of the element to return.
     * @return The tags at the given index.
     */
    @java.lang.Override
    public java.lang.String getTags(int index) {
      return tags_.get(index);
    }
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tags at the given index.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTagsBytes(int index) {
      return com.google.protobuf.ByteString.copyFromUtf8(
          tags_.get(index));
    }
    private void ensureTagsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
          tags_;  if (!tmp.isModifiable()) {
        tags_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @param index The index to set the value at.
     * @param value The tags to set.
     */
    private void setTags(
        int index, java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  ensureTagsIsMutable();
      tags_.set(index, value);
    }
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @param value The tags to add.
     */
    private void addTags(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  ensureTagsIsMutable();
      tags_.add(value);
    }
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @param values The tags to add.
     */
    private void addAllTags(
        java.lang.Iterable<java.lang.String> values) {
      ensureTagsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, tags_);
    }
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     */
    private void clearTags() {
      tags_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @param value The bytes of the tags to add.
     */
    private void addTagsBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      ensureTagsIsMutable();
      tags_.add(value.toStringUtf8());
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Группа атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.Group}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.Group)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The id.
       */
      @java.lang.Override
      public java.lang.String getId() {
        return instance.getId();
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getIdBytes() {
        return instance.getIdBytes();
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        copyOnWrite();
        instance.setId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        copyOnWrite();
        instance.clearId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setIdBytes(value);
        return this;
      }

      /**
       * <pre>
       * Наименование.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The title.
       */
      @java.lang.Override
      public java.lang.String getTitle() {
        return instance.getTitle();
      }
      /**
       * <pre>
       * Наименование.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for title.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getTitleBytes() {
        return instance.getTitleBytes();
      }
      /**
       * <pre>
       * Наименование.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The title to set.
       * @return This builder for chaining.
       */
      public Builder setTitle(
          java.lang.String value) {
        copyOnWrite();
        instance.setTitle(value);
        return this;
      }
      /**
       * <pre>
       * Наименование.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearTitle() {
        copyOnWrite();
        instance.clearTitle();
        return this;
      }
      /**
       * <pre>
       * Наименование.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for title to set.
       * @return This builder for chaining.
       */
      public Builder setTitleBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setTitleBytes(value);
        return this;
      }

      /**
       * <pre>
       * Описание.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string description = 3;</code>
       * @return The description.
       */
      @java.lang.Override
      public java.lang.String getDescription() {
        return instance.getDescription();
      }
      /**
       * <pre>
       * Описание.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string description = 3;</code>
       * @return The bytes for description.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        return instance.getDescriptionBytes();
      }
      /**
       * <pre>
       * Описание.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string description = 3;</code>
       * @param value The description to set.
       * @return This builder for chaining.
       */
      public Builder setDescription(
          java.lang.String value) {
        copyOnWrite();
        instance.setDescription(value);
        return this;
      }
      /**
       * <pre>
       * Описание.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string description = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        copyOnWrite();
        instance.clearDescription();
        return this;
      }
      /**
       * <pre>
       * Описание.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string description = 3;</code>
       * @param value The bytes for description to set.
       * @return This builder for chaining.
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setDescriptionBytes(value);
        return this;
      }

      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      @java.lang.Override
      public java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> getClaimsList() {
        return java.util.Collections.unmodifiableList(
            instance.getClaimsList());
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      @java.lang.Override
      public int getClaimsCount() {
        return instance.getClaimsCount();
      }/**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getClaims(int index) {
        return instance.getClaims(index);
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public Builder setClaims(
          int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
        copyOnWrite();
        instance.setClaims(index, value);
        return this;
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public Builder setClaims(
          int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder builderForValue) {
        copyOnWrite();
        instance.setClaims(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public Builder addClaims(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
        copyOnWrite();
        instance.addClaims(value);
        return this;
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public Builder addClaims(
          int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
        copyOnWrite();
        instance.addClaims(index, value);
        return this;
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public Builder addClaims(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder builderForValue) {
        copyOnWrite();
        instance.addClaims(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public Builder addClaims(
          int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder builderForValue) {
        copyOnWrite();
        instance.addClaims(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public Builder addAllClaims(
          java.lang.Iterable<? extends ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> values) {
        copyOnWrite();
        instance.addAllClaims(values);
        return this;
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public Builder clearClaims() {
        copyOnWrite();
        instance.clearClaims();
        return this;
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public Builder removeClaims(int index) {
        copyOnWrite();
        instance.removeClaims(index);
        return this;
      }

      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      @java.lang.Override
      public java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> getRequirementsList() {
        return java.util.Collections.unmodifiableList(
            instance.getRequirementsList());
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      @java.lang.Override
      public int getRequirementsCount() {
        return instance.getRequirementsCount();
      }/**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getRequirements(int index) {
        return instance.getRequirements(index);
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public Builder setRequirements(
          int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
        copyOnWrite();
        instance.setRequirements(index, value);
        return this;
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public Builder setRequirements(
          int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder builderForValue) {
        copyOnWrite();
        instance.setRequirements(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public Builder addRequirements(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
        copyOnWrite();
        instance.addRequirements(value);
        return this;
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public Builder addRequirements(
          int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
        copyOnWrite();
        instance.addRequirements(index, value);
        return this;
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public Builder addRequirements(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder builderForValue) {
        copyOnWrite();
        instance.addRequirements(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public Builder addRequirements(
          int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder builderForValue) {
        copyOnWrite();
        instance.addRequirements(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public Builder addAllRequirements(
          java.lang.Iterable<? extends ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> values) {
        copyOnWrite();
        instance.addAllRequirements(values);
        return this;
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public Builder clearRequirements() {
        copyOnWrite();
        instance.clearRequirements();
        return this;
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public Builder removeRequirements(int index) {
        copyOnWrite();
        instance.removeRequirements(index);
        return this;
      }

      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       */
      @java.lang.Override
      public boolean hasDeletedAt() {
        return instance.hasDeletedAt();
      }
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       */
      @java.lang.Override
      public com.google.protobuf.Timestamp getDeletedAt() {
        return instance.getDeletedAt();
      }
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       */
      public Builder setDeletedAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.setDeletedAt(value);
        return this;
        }
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       */
      public Builder setDeletedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        copyOnWrite();
        instance.setDeletedAt(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       */
      public Builder mergeDeletedAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.mergeDeletedAt(value);
        return this;
      }
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       */
      public Builder clearDeletedAt() {  copyOnWrite();
        instance.clearDeletedAt();
        return this;
      }

      /**
       * <pre>
       * Теги группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 7;</code>
       * @return A list containing the tags.
       */
      @java.lang.Override
      public java.util.List<java.lang.String>
          getTagsList() {
        return java.util.Collections.unmodifiableList(
            instance.getTagsList());
      }
      /**
       * <pre>
       * Теги группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 7;</code>
       * @return The count of tags.
       */
      @java.lang.Override
      public int getTagsCount() {
        return instance.getTagsCount();
      }
      /**
       * <pre>
       * Теги группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 7;</code>
       * @param index The index of the element to return.
       * @return The tags at the given index.
       */
      @java.lang.Override
      public java.lang.String getTags(int index) {
        return instance.getTags(index);
      }
      /**
       * <pre>
       * Теги группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the tags at the given index.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getTagsBytes(int index) {
        return instance.getTagsBytes(index);
      }
      /**
       * <pre>
       * Теги группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 7;</code>
       * @param index The index to set the value at.
       * @param value The tags to set.
       * @return This builder for chaining.
       */
      public Builder setTags(
          int index, java.lang.String value) {
        copyOnWrite();
        instance.setTags(index, value);
        return this;
      }
      /**
       * <pre>
       * Теги группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 7;</code>
       * @param value The tags to add.
       * @return This builder for chaining.
       */
      public Builder addTags(
          java.lang.String value) {
        copyOnWrite();
        instance.addTags(value);
        return this;
      }
      /**
       * <pre>
       * Теги группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 7;</code>
       * @param values The tags to add.
       * @return This builder for chaining.
       */
      public Builder addAllTags(
          java.lang.Iterable<java.lang.String> values) {
        copyOnWrite();
        instance.addAllTags(values);
        return this;
      }
      /**
       * <pre>
       * Теги группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearTags() {
        copyOnWrite();
        instance.clearTags();
        return this;
      }
      /**
       * <pre>
       * Теги группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 7;</code>
       * @param value The bytes of the tags to add.
       * @return This builder for chaining.
       */
      public Builder addTagsBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.addTagsBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.Group)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "id_",
              "title_",
              "description_",
              "claims_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.class,
              "requirements_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.class,
              "deletedAt_",
              "tags_",
            };
            java.lang.String info =
                "\u0000\u0007\u0000\u0000\u0001\u0007\u0007\u0000\u0003\u0000\u0001\u0208\u0002\u0208" +
                "\u0003\u0208\u0004\u001b\u0005\u001b\u0006\t\u0007\u021a";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.Group)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group DEFAULT_INSTANCE;
    static {
      Group defaultInstance = new Group();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Group.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<Group> PARSER;

    public static com.google.protobuf.Parser<Group> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The id.
     */
    java.lang.String getId();
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();
  }
  /**
   * <pre>
   * Запрос получения группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupRequest}
   */
  public  static final class GetGroupRequest extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupRequest, GetGroupRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupRequest)
      GetGroupRequestOrBuilder {
    private GetGroupRequest() {
      id_ = "";
    }
    public static final int ID_FIELD_NUMBER = 1;
    private java.lang.String id_;
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      return id_;
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(id_);
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The id to set.
     */
    private void setId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      id_ = value;
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearId() {

      id_ = getDefaultInstance().getId();
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for id to set.
     */
    private void setIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      id_ = value.toStringUtf8();

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос получения группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The id.
       */
      @java.lang.Override
      public java.lang.String getId() {
        return instance.getId();
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for id.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getIdBytes() {
        return instance.getIdBytes();
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        copyOnWrite();
        instance.setId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        copyOnWrite();
        instance.clearId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setIdBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "id_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0208";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest DEFAULT_INSTANCE;
    static {
      GetGroupRequest defaultInstance = new GetGroupRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupRequest> PARSER;

    public static com.google.protobuf.Parser<GetGroupRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return The data.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData();

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

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос получения группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupResponse}
   */
  public  static final class GetGroupResponse extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupResponse, GetGroupResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupResponse)
      GetGroupResponseOrBuilder {
    private GetGroupResponse() {
    }
    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupResponse.Error)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation();

      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка запроса получения группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupResponse.Error}
     */
    public  static final class Error extends
        com.google.protobuf.GeneratedMessageLite<
            Error, Error.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupResponse.Error)
        ErrorOrBuilder {
      private Error() {
      }
      private int reasonCase_ = 0;
      private java.lang.Object reason_;
      public enum ReasonCase {
        VALIDATION(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @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;
        }
      };

      @java.lang.Override
      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      private void clearReason() {
        reasonCase_ = 0;
        reason_ = null;
      }

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void setValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void mergeValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
        value.getClass();
  if (reasonCase_ == 1 &&
            reason_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance()) {
          reason_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void clearValidation() {
        if (reasonCase_ == 1) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Ошибка запроса получения группы
       * </pre>
       *
       * Protobuf type {@code keyapis.access_management.v1.GetGroupResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupResponse.Error)
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.ErrorOrBuilder {
        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }

        @java.lang.Override
        public ReasonCase
            getReasonCase() {
          return instance.getReasonCase();
        }

        public Builder clearReason() {
          copyOnWrite();
          instance.clearReason();
          return this;
        }


        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public boolean hasValidation() {
          return instance.hasValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation() {
          return instance.getValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
          copyOnWrite();
          instance.setValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.Builder builderForValue) {
          copyOnWrite();
          instance.setValidation(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
          copyOnWrite();
          instance.mergeValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder clearValidation() {
          copyOnWrite();
          instance.clearValidation();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupResponse.Error)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "reason_",
                "reasonCase_",
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.class,
              };
              java.lang.String info =
                  "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001<\u0000";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupResponse.Error)
      private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error DEFAULT_INSTANCE;
      static {
        Error defaultInstance = new Error();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          Error.class, defaultInstance);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<Error> PARSER;

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

    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      DATA(1),
      ERROR(2),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @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;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    private void setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
      value.getClass();
  type_ = value;
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    private void mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
      value.getClass();
  if (typeCase_ == 1 &&
          type_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance()) {
        type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    private void clearData() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error getError() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
     */
    private void setError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error value) {
      value.getClass();
  type_ = value;
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
     */
    private void mergeError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error value) {
      value.getClass();
  if (typeCase_ == 2 &&
          type_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.getDefaultInstance()) {
        type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
     */
    private void clearError() {
      if (typeCase_ == 2) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос получения группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder builderForValue) {
        copyOnWrite();
        instance.setData(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        copyOnWrite();
        instance.mergeData(value);
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public boolean hasError() {
        return instance.hasError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error getError() {
        return instance.getError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
       */
      public Builder setError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error value) {
        copyOnWrite();
        instance.setError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
       */
      public Builder setError(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.Builder builderForValue) {
        copyOnWrite();
        instance.setError(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
       */
      public Builder mergeError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error value) {
        copyOnWrite();
        instance.mergeError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
       */
      public Builder clearError() {
        copyOnWrite();
        instance.clearError();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.class,
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001<\u0000\u0002<" +
                "\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse DEFAULT_INSTANCE;
    static {
      GetGroupResponse defaultInstance = new GetGroupResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupResponse> PARSER;

    public static com.google.protobuf.Parser<GetGroupResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupListRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupListRequest)
      com.google.protobuf.MessageLiteOrBuilder {

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

    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
     * @return Whether the paging field is set.
     */
    boolean hasPaging();
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
     * @return The paging.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging getPaging();

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest.PaginationCase getPaginationCase();
  }
  /**
   * <pre>
   * Запрос получения списка групп
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupListRequest}
   */
  public  static final class GetGroupListRequest extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupListRequest, GetGroupListRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupListRequest)
      GetGroupListRequestOrBuilder {
    private GetGroupListRequest() {
    }
    private int paginationCase_ = 0;
    private java.lang.Object pagination_;
    public enum PaginationCase {
      PAGING(2),
      PAGINATION_NOT_SET(0);
      private final int value;
      private PaginationCase(int value) {
        this.value = value;
      }
      /**
       * @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;
      }
    };

    @java.lang.Override
    public PaginationCase
    getPaginationCase() {
      return PaginationCase.forNumber(
          paginationCase_);
    }

    private void clearPagination() {
      paginationCase_ = 0;
      pagination_ = null;
    }

    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter filter_;
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter getFilter() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.getDefaultInstance() : filter_;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     */
    private void setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter value) {
      value.getClass();
  filter_ = value;

      }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter value) {
      value.getClass();
  if (filter_ != null &&
          filter_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.getDefaultInstance()) {
        filter_ =
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.newBuilder(filter_).mergeFrom(value).buildPartial();
      } else {
        filter_ = value;
      }

    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     */
    private void clearFilter() {  filter_ = null;

    }

    public static final int PAGING_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
     */
    @java.lang.Override
    public boolean hasPaging() {
      return paginationCase_ == 2;
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging getPaging() {
      if (paginationCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging) pagination_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.getDefaultInstance();
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
     */
    private void setPaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging value) {
      value.getClass();
  pagination_ = value;
      paginationCase_ = 2;
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
     */
    private void mergePaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging value) {
      value.getClass();
  if (paginationCase_ == 2 &&
          pagination_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.getDefaultInstance()) {
        pagination_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging) pagination_)
            .mergeFrom(value).buildPartial();
      } else {
        pagination_ = value;
      }
      paginationCase_ = 2;
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
     */
    private void clearPaging() {
      if (paginationCase_ == 2) {
        paginationCase_ = 0;
        pagination_ = null;
      }
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос получения списка групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupListRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupListRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public PaginationCase
          getPaginationCase() {
        return instance.getPaginationCase();
      }

      public Builder clearPagination() {
        copyOnWrite();
        instance.clearPagination();
        return this;
      }


      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
       */
      @java.lang.Override
      public boolean hasFilter() {
        return instance.hasFilter();
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter getFilter() {
        return instance.getFilter();
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter value) {
        copyOnWrite();
        instance.setFilter(value);
        return this;
        }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.Builder builderForValue) {
        copyOnWrite();
        instance.setFilter(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter value) {
        copyOnWrite();
        instance.mergeFilter(value);
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
       */
      public Builder clearFilter() {  copyOnWrite();
        instance.clearFilter();
        return this;
      }

      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       */
      @java.lang.Override
      public boolean hasPaging() {
        return instance.hasPaging();
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging getPaging() {
        return instance.getPaging();
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       */
      public Builder setPaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging value) {
        copyOnWrite();
        instance.setPaging(value);
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       */
      public Builder setPaging(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.Builder builderForValue) {
        copyOnWrite();
        instance.setPaging(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       */
      public Builder mergePaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging value) {
        copyOnWrite();
        instance.mergePaging(value);
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       */
      public Builder clearPaging() {
        copyOnWrite();
        instance.clearPaging();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupListRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "pagination_",
              "paginationCase_",
              "filter_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\t\u0002<\u0000" +
                "";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupListRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest DEFAULT_INSTANCE;
    static {
      GetGroupListRequest defaultInstance = new GetGroupListRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupListRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupListRequest> PARSER;

    public static com.google.protobuf.Parser<GetGroupListRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupListResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupListResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return The data.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData();

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

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос получения списка групп
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupListResponse}
   */
  public  static final class GetGroupListResponse extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupListResponse, GetGroupListResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupListResponse)
      GetGroupListResponseOrBuilder {
    private GetGroupListResponse() {
    }
    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupListResponse.Error)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation();

      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка запроса получения списка групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupListResponse.Error}
     */
    public  static final class Error extends
        com.google.protobuf.GeneratedMessageLite<
            Error, Error.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupListResponse.Error)
        ErrorOrBuilder {
      private Error() {
      }
      private int reasonCase_ = 0;
      private java.lang.Object reason_;
      public enum ReasonCase {
        VALIDATION(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @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;
        }
      };

      @java.lang.Override
      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      private void clearReason() {
        reasonCase_ = 0;
        reason_ = null;
      }

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void setValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void mergeValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
        value.getClass();
  if (reasonCase_ == 1 &&
            reason_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance()) {
          reason_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void clearValidation() {
        if (reasonCase_ == 1) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Ошибка запроса получения списка групп
       * </pre>
       *
       * Protobuf type {@code keyapis.access_management.v1.GetGroupListResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupListResponse.Error)
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.ErrorOrBuilder {
        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }

        @java.lang.Override
        public ReasonCase
            getReasonCase() {
          return instance.getReasonCase();
        }

        public Builder clearReason() {
          copyOnWrite();
          instance.clearReason();
          return this;
        }


        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public boolean hasValidation() {
          return instance.hasValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation() {
          return instance.getValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
          copyOnWrite();
          instance.setValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.Builder builderForValue) {
          copyOnWrite();
          instance.setValidation(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
          copyOnWrite();
          instance.mergeValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder clearValidation() {
          copyOnWrite();
          instance.clearValidation();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupListResponse.Error)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "reason_",
                "reasonCase_",
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.class,
              };
              java.lang.String info =
                  "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001<\u0000";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupListResponse.Error)
      private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error DEFAULT_INSTANCE;
      static {
        Error defaultInstance = new Error();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          Error.class, defaultInstance);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<Error> PARSER;

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

    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      DATA(1),
      ERROR(2),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @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;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    private void setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
      value.getClass();
  type_ = value;
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    private void mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
      value.getClass();
  if (typeCase_ == 1 &&
          type_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance()) {
        type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    private void clearData() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error getError() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
     */
    private void setError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error value) {
      value.getClass();
  type_ = value;
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
     */
    private void mergeError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error value) {
      value.getClass();
  if (typeCase_ == 2 &&
          type_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.getDefaultInstance()) {
        type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
     */
    private void clearError() {
      if (typeCase_ == 2) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос получения списка групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupListResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupListResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder builderForValue) {
        copyOnWrite();
        instance.setData(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        copyOnWrite();
        instance.mergeData(value);
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public boolean hasError() {
        return instance.hasError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error getError() {
        return instance.getError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
       */
      public Builder setError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error value) {
        copyOnWrite();
        instance.setError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
       */
      public Builder setError(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.Builder builderForValue) {
        copyOnWrite();
        instance.setError(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
       */
      public Builder mergeError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error value) {
        copyOnWrite();
        instance.mergeError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
       */
      public Builder clearError() {
        copyOnWrite();
        instance.clearError();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupListResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.class,
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001<\u0000\u0002<" +
                "\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupListResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse DEFAULT_INSTANCE;
    static {
      GetGroupListResponse defaultInstance = new GetGroupListResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupListResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupListResponse> PARSER;

    public static com.google.protobuf.Parser<GetGroupListResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupCountRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupCountRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    boolean hasFilter();
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     * @return The filter.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter getFilter();
  }
  /**
   * <pre>
   * Запрос получения количества групп
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupCountRequest}
   */
  public  static final class GetGroupCountRequest extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupCountRequest, GetGroupCountRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupCountRequest)
      GetGroupCountRequestOrBuilder {
    private GetGroupCountRequest() {
    }
    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter filter_;
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter getFilter() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.getDefaultInstance() : filter_;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     */
    private void setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter value) {
      value.getClass();
  filter_ = value;

      }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter value) {
      value.getClass();
  if (filter_ != null &&
          filter_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.getDefaultInstance()) {
        filter_ =
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.newBuilder(filter_).mergeFrom(value).buildPartial();
      } else {
        filter_ = value;
      }

    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     */
    private void clearFilter() {  filter_ = null;

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос получения количества групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupCountRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupCountRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
       */
      @java.lang.Override
      public boolean hasFilter() {
        return instance.hasFilter();
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter getFilter() {
        return instance.getFilter();
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter value) {
        copyOnWrite();
        instance.setFilter(value);
        return this;
        }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.Builder builderForValue) {
        copyOnWrite();
        instance.setFilter(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter value) {
        copyOnWrite();
        instance.mergeFilter(value);
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
       */
      public Builder clearFilter() {  copyOnWrite();
        instance.clearFilter();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupCountRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "filter_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\t";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupCountRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest DEFAULT_INSTANCE;
    static {
      GetGroupCountRequest defaultInstance = new GetGroupCountRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupCountRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupCountRequest> PARSER;

    public static com.google.protobuf.Parser<GetGroupCountRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupCountResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupCountResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <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.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
     * @return The error.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error getError();

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос получения количества групп
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupCountResponse}
   */
  public  static final class GetGroupCountResponse extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupCountResponse, GetGroupCountResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupCountResponse)
      GetGroupCountResponseOrBuilder {
    private GetGroupCountResponse() {
    }
    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupCountResponse.Error)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation();

      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка запроса получения количества групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupCountResponse.Error}
     */
    public  static final class Error extends
        com.google.protobuf.GeneratedMessageLite<
            Error, Error.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupCountResponse.Error)
        ErrorOrBuilder {
      private Error() {
      }
      private int reasonCase_ = 0;
      private java.lang.Object reason_;
      public enum ReasonCase {
        VALIDATION(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @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;
        }
      };

      @java.lang.Override
      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      private void clearReason() {
        reasonCase_ = 0;
        reason_ = null;
      }

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void setValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void mergeValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
        value.getClass();
  if (reasonCase_ == 1 &&
            reason_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance()) {
          reason_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void clearValidation() {
        if (reasonCase_ == 1) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Ошибка запроса получения количества групп
       * </pre>
       *
       * Protobuf type {@code keyapis.access_management.v1.GetGroupCountResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupCountResponse.Error)
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.ErrorOrBuilder {
        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }

        @java.lang.Override
        public ReasonCase
            getReasonCase() {
          return instance.getReasonCase();
        }

        public Builder clearReason() {
          copyOnWrite();
          instance.clearReason();
          return this;
        }


        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public boolean hasValidation() {
          return instance.hasValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation() {
          return instance.getValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
          copyOnWrite();
          instance.setValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.Builder builderForValue) {
          copyOnWrite();
          instance.setValidation(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
          copyOnWrite();
          instance.mergeValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder clearValidation() {
          copyOnWrite();
          instance.clearValidation();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupCountResponse.Error)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "reason_",
                "reasonCase_",
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.class,
              };
              java.lang.String info =
                  "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001<\u0000";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupCountResponse.Error)
      private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error DEFAULT_INSTANCE;
      static {
        Error defaultInstance = new Error();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          Error.class, defaultInstance);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<Error> PARSER;

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

    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      DATA(1),
      ERROR(2),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @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;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    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;
    }
    /**
     * <pre>
     * Всего групп
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @param value The data to set.
     */
    private void setData(int value) {
      typeCase_ = 1;
      type_ = value;
    }
    /**
     * <pre>
     * Всего групп
     * </pre>
     *
     * <code>int32 data = 1;</code>
     */
    private void clearData() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error getError() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
     */
    private void setError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error value) {
      value.getClass();
  type_ = value;
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
     */
    private void mergeError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error value) {
      value.getClass();
  if (typeCase_ == 2 &&
          type_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.getDefaultInstance()) {
        type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
     */
    private void clearError() {
      if (typeCase_ == 2) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос получения количества групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupCountResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupCountResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Всего групп
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Всего групп
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public int getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Всего групп
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(int value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Всего групп
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public boolean hasError() {
        return instance.hasError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error getError() {
        return instance.getError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
       */
      public Builder setError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error value) {
        copyOnWrite();
        instance.setError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
       */
      public Builder setError(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.Builder builderForValue) {
        copyOnWrite();
        instance.setError(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
       */
      public Builder mergeError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error value) {
        copyOnWrite();
        instance.mergeError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
       */
      public Builder clearError() {
        copyOnWrite();
        instance.clearError();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupCountResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u00017\u0000\u0002<" +
                "\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupCountResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse DEFAULT_INSTANCE;
    static {
      GetGroupCountResponse defaultInstance = new GetGroupCountResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupCountResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupCountResponse> PARSER;

    public static com.google.protobuf.Parser<GetGroupCountResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GroupFilterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GroupFilter)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * По тексту.
     * Если значение не передано то поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование
     * </pre>
     *
     * <code>string text = 1;</code>
     * @return The text.
     */
    java.lang.String getText();
    /**
     * <pre>
     * По тексту.
     * Если значение не передано то поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование
     * </pre>
     *
     * <code>string text = 1;</code>
     * @return The bytes for text.
     */
    com.google.protobuf.ByteString
        getTextBytes();

    /**
     * <pre>
     * По requirements группы.
     * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; requirements = 2;</code>
     */
    int getRequirementsCount();
    /**
     * <pre>
     * По requirements группы.
     * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; requirements = 2;</code>
     */
    boolean containsRequirements(
        java.lang.String key);
    /**
     * Use {@link #getRequirementsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getRequirements();
    /**
     * <pre>
     * По requirements группы.
     * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; requirements = 2;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getRequirementsMap();
    /**
     * <pre>
     * По requirements группы.
     * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; requirements = 2;</code>
     */

    /* nullable */
java.lang.String getRequirementsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * По requirements группы.
     * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; requirements = 2;</code>
     */

    java.lang.String getRequirementsOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * По claims группы.
     * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 3;</code>
     */
    int getClaimsCount();
    /**
     * <pre>
     * По claims группы.
     * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 3;</code>
     */
    boolean containsClaims(
        java.lang.String key);
    /**
     * Use {@link #getClaimsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getClaims();
    /**
     * <pre>
     * По claims группы.
     * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 3;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getClaimsMap();
    /**
     * <pre>
     * По claims группы.
     * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 3;</code>
     */

    /* nullable */
java.lang.String getClaimsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * По claims группы.
     * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 3;</code>
     */

    java.lang.String getClaimsOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @return A list containing the tags.
     */
    java.util.List<java.lang.String>
        getTagsList();
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @return The count of tags.
     */
    int getTagsCount();
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @param index The index of the element to return.
     * @return The tags at the given index.
     */
    java.lang.String getTags(int index);
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @param index The index of the element to return.
     * @return The tags at the given index.
     */
    com.google.protobuf.ByteString
        getTagsBytes(int index);

    /**
     * <pre>
     * Скрывать удалённые элементы.
     * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
     * Если значение — false или не задано, возвращаются все записи, включая удалённые
     * </pre>
     *
     * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
     * @return Whether the hideDeleted field is set.
     */
    boolean hasHideDeleted();
    /**
     * <pre>
     * Скрывать удалённые элементы.
     * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
     * Если значение — false или не задано, возвращаются все записи, включая удалённые
     * </pre>
     *
     * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
     * @return The hideDeleted.
     */
    com.google.protobuf.BoolValue getHideDeleted();
  }
  /**
   * <pre>
   * Фильтр групп
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GroupFilter}
   */
  public  static final class GroupFilter extends
      com.google.protobuf.GeneratedMessageLite<
          GroupFilter, GroupFilter.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupFilter)
      GroupFilterOrBuilder {
    private GroupFilter() {
      text_ = "";
      tags_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    public static final int TEXT_FIELD_NUMBER = 1;
    private java.lang.String text_;
    /**
     * <pre>
     * По тексту.
     * Если значение не передано то поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование
     * </pre>
     *
     * <code>string text = 1;</code>
     * @return The text.
     */
    @java.lang.Override
    public java.lang.String getText() {
      return text_;
    }
    /**
     * <pre>
     * По тексту.
     * Если значение не передано то поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование
     * </pre>
     *
     * <code>string text = 1;</code>
     * @return The bytes for text.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTextBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(text_);
    }
    /**
     * <pre>
     * По тексту.
     * Если значение не передано то поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование
     * </pre>
     *
     * <code>string text = 1;</code>
     * @param value The text to set.
     */
    private void setText(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      text_ = value;
    }
    /**
     * <pre>
     * По тексту.
     * Если значение не передано то поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование
     * </pre>
     *
     * <code>string text = 1;</code>
     */
    private void clearText() {

      text_ = getDefaultInstance().getText();
    }
    /**
     * <pre>
     * По тексту.
     * Если значение не передано то поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование
     * </pre>
     *
     * <code>string text = 1;</code>
     * @param value The bytes for text to set.
     */
    private void setTextBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      text_ = value.toStringUtf8();

    }

    public static final int REQUIREMENTS_FIELD_NUMBER = 2;
    private static final class RequirementsDefaultEntryHolder {
      static final com.google.protobuf.MapEntryLite<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntryLite
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapFieldLite<
        java.lang.String, java.lang.String> requirements_ =
            com.google.protobuf.MapFieldLite.emptyMapField();
    private com.google.protobuf.MapFieldLite<java.lang.String, java.lang.String>
    internalGetRequirements() {
      return requirements_;
    }
    private com.google.protobuf.MapFieldLite<java.lang.String, java.lang.String>
    internalGetMutableRequirements() {
      if (!requirements_.isMutable()) {
        requirements_ = requirements_.mutableCopy();
      }
      return requirements_;
    }
    @java.lang.Override

    public int getRequirementsCount() {
      return internalGetRequirements().size();
    }
    /**
     * <pre>
     * По requirements группы.
     * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; requirements = 2;</code>
     */
    @java.lang.Override

    public boolean containsRequirements(
        java.lang.String key) {
      java.lang.Class<?> keyClass = key.getClass();
      return internalGetRequirements().containsKey(key);
    }
    /**
     * Use {@link #getRequirementsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getRequirements() {
      return getRequirementsMap();
    }
    /**
     * <pre>
     * По requirements группы.
     * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; requirements = 2;</code>
     */
    @java.lang.Override

    public java.util.Map<java.lang.String, java.lang.String> getRequirementsMap() {
      return java.util.Collections.unmodifiableMap(
          internalGetRequirements());
    }
    /**
     * <pre>
     * По requirements группы.
     * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; requirements = 2;</code>
     */
    @java.lang.Override

    public /* nullable */
java.lang.String getRequirementsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      java.lang.Class<?> keyClass = key.getClass();
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetRequirements();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * По requirements группы.
     * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; requirements = 2;</code>
     */
    @java.lang.Override

    public java.lang.String getRequirementsOrThrow(
        java.lang.String key) {
      java.lang.Class<?> keyClass = key.getClass();
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetRequirements();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }
    /**
     * <pre>
     * По requirements группы.
     * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; requirements = 2;</code>
     */
    private java.util.Map<java.lang.String, java.lang.String>
    getMutableRequirementsMap() {
      return internalGetMutableRequirements();
    }

    public static final int CLAIMS_FIELD_NUMBER = 3;
    private static final class ClaimsDefaultEntryHolder {
      static final com.google.protobuf.MapEntryLite<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntryLite
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapFieldLite<
        java.lang.String, java.lang.String> claims_ =
            com.google.protobuf.MapFieldLite.emptyMapField();
    private com.google.protobuf.MapFieldLite<java.lang.String, java.lang.String>
    internalGetClaims() {
      return claims_;
    }
    private com.google.protobuf.MapFieldLite<java.lang.String, java.lang.String>
    internalGetMutableClaims() {
      if (!claims_.isMutable()) {
        claims_ = claims_.mutableCopy();
      }
      return claims_;
    }
    @java.lang.Override

    public int getClaimsCount() {
      return internalGetClaims().size();
    }
    /**
     * <pre>
     * По claims группы.
     * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 3;</code>
     */
    @java.lang.Override

    public boolean containsClaims(
        java.lang.String key) {
      java.lang.Class<?> keyClass = key.getClass();
      return internalGetClaims().containsKey(key);
    }
    /**
     * Use {@link #getClaimsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getClaims() {
      return getClaimsMap();
    }
    /**
     * <pre>
     * По claims группы.
     * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 3;</code>
     */
    @java.lang.Override

    public java.util.Map<java.lang.String, java.lang.String> getClaimsMap() {
      return java.util.Collections.unmodifiableMap(
          internalGetClaims());
    }
    /**
     * <pre>
     * По claims группы.
     * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 3;</code>
     */
    @java.lang.Override

    public /* nullable */
java.lang.String getClaimsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      java.lang.Class<?> keyClass = key.getClass();
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetClaims();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * По claims группы.
     * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 3;</code>
     */
    @java.lang.Override

    public java.lang.String getClaimsOrThrow(
        java.lang.String key) {
      java.lang.Class<?> keyClass = key.getClass();
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetClaims();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }
    /**
     * <pre>
     * По claims группы.
     * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 3;</code>
     */
    private java.util.Map<java.lang.String, java.lang.String>
    getMutableClaimsMap() {
      return internalGetMutableClaims();
    }

    public static final int TAGS_FIELD_NUMBER = 4;
    private com.google.protobuf.Internal.ProtobufList<java.lang.String> tags_;
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @return A list containing the tags.
     */
    @java.lang.Override
    public java.util.List<java.lang.String> getTagsList() {
      return tags_;
    }
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @return The count of tags.
     */
    @java.lang.Override
    public int getTagsCount() {
      return tags_.size();
    }
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @param index The index of the element to return.
     * @return The tags at the given index.
     */
    @java.lang.Override
    public java.lang.String getTags(int index) {
      return tags_.get(index);
    }
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tags at the given index.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTagsBytes(int index) {
      return com.google.protobuf.ByteString.copyFromUtf8(
          tags_.get(index));
    }
    private void ensureTagsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
          tags_;  if (!tmp.isModifiable()) {
        tags_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @param index The index to set the value at.
     * @param value The tags to set.
     */
    private void setTags(
        int index, java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  ensureTagsIsMutable();
      tags_.set(index, value);
    }
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @param value The tags to add.
     */
    private void addTags(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  ensureTagsIsMutable();
      tags_.add(value);
    }
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @param values The tags to add.
     */
    private void addAllTags(
        java.lang.Iterable<java.lang.String> values) {
      ensureTagsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, tags_);
    }
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     */
    private void clearTags() {
      tags_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @param value The bytes of the tags to add.
     */
    private void addTagsBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      ensureTagsIsMutable();
      tags_.add(value.toStringUtf8());
    }

    public static final int HIDE_DELETED_FIELD_NUMBER = 5;
    private com.google.protobuf.BoolValue hideDeleted_;
    /**
     * <pre>
     * Скрывать удалённые элементы.
     * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
     * Если значение — false или не задано, возвращаются все записи, включая удалённые
     * </pre>
     *
     * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
     */
    @java.lang.Override
    public boolean hasHideDeleted() {
      return hideDeleted_ != null;
    }
    /**
     * <pre>
     * Скрывать удалённые элементы.
     * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
     * Если значение — false или не задано, возвращаются все записи, включая удалённые
     * </pre>
     *
     * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
     */
    @java.lang.Override
    public com.google.protobuf.BoolValue getHideDeleted() {
      return hideDeleted_ == null ? com.google.protobuf.BoolValue.getDefaultInstance() : hideDeleted_;
    }
    /**
     * <pre>
     * Скрывать удалённые элементы.
     * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
     * Если значение — false или не задано, возвращаются все записи, включая удалённые
     * </pre>
     *
     * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
     */
    private void setHideDeleted(com.google.protobuf.BoolValue value) {
      value.getClass();
  hideDeleted_ = value;

      }
    /**
     * <pre>
     * Скрывать удалённые элементы.
     * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
     * Если значение — false или не задано, возвращаются все записи, включая удалённые
     * </pre>
     *
     * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeHideDeleted(com.google.protobuf.BoolValue value) {
      value.getClass();
  if (hideDeleted_ != null &&
          hideDeleted_ != com.google.protobuf.BoolValue.getDefaultInstance()) {
        hideDeleted_ =
          com.google.protobuf.BoolValue.newBuilder(hideDeleted_).mergeFrom(value).buildPartial();
      } else {
        hideDeleted_ = value;
      }

    }
    /**
     * <pre>
     * Скрывать удалённые элементы.
     * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
     * Если значение — false или не задано, возвращаются все записи, включая удалённые
     * </pre>
     *
     * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
     */
    private void clearHideDeleted() {  hideDeleted_ = null;

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Фильтр групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupFilter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupFilter)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilterOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * По тексту.
       * Если значение не передано то поиск по нему не производится.
       * # Диапазон: 3..64.
       * # Поиск производится по полям:
       * # - Наименование
       * </pre>
       *
       * <code>string text = 1;</code>
       * @return The text.
       */
      @java.lang.Override
      public java.lang.String getText() {
        return instance.getText();
      }
      /**
       * <pre>
       * По тексту.
       * Если значение не передано то поиск по нему не производится.
       * # Диапазон: 3..64.
       * # Поиск производится по полям:
       * # - Наименование
       * </pre>
       *
       * <code>string text = 1;</code>
       * @return The bytes for text.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getTextBytes() {
        return instance.getTextBytes();
      }
      /**
       * <pre>
       * По тексту.
       * Если значение не передано то поиск по нему не производится.
       * # Диапазон: 3..64.
       * # Поиск производится по полям:
       * # - Наименование
       * </pre>
       *
       * <code>string text = 1;</code>
       * @param value The text to set.
       * @return This builder for chaining.
       */
      public Builder setText(
          java.lang.String value) {
        copyOnWrite();
        instance.setText(value);
        return this;
      }
      /**
       * <pre>
       * По тексту.
       * Если значение не передано то поиск по нему не производится.
       * # Диапазон: 3..64.
       * # Поиск производится по полям:
       * # - Наименование
       * </pre>
       *
       * <code>string text = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearText() {
        copyOnWrite();
        instance.clearText();
        return this;
      }
      /**
       * <pre>
       * По тексту.
       * Если значение не передано то поиск по нему не производится.
       * # Диапазон: 3..64.
       * # Поиск производится по полям:
       * # - Наименование
       * </pre>
       *
       * <code>string text = 1;</code>
       * @param value The bytes for text to set.
       * @return This builder for chaining.
       */
      public Builder setTextBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setTextBytes(value);
        return this;
      }

      @java.lang.Override

      public int getRequirementsCount() {
        return instance.getRequirementsMap().size();
      }
      /**
       * <pre>
       * По requirements группы.
       * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
       * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; requirements = 2;</code>
       */
      @java.lang.Override

      public boolean containsRequirements(
          java.lang.String key) {
        java.lang.Class<?> keyClass = key.getClass();
        return instance.getRequirementsMap().containsKey(key);
      }

      public Builder clearRequirements() {
        copyOnWrite();
        instance.getMutableRequirementsMap().clear();
        return this;
      }
      /**
       * <pre>
       * По requirements группы.
       * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
       * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; requirements = 2;</code>
       */

      public Builder removeRequirements(
          java.lang.String key) {
        java.lang.Class<?> keyClass = key.getClass();
        copyOnWrite();
        instance.getMutableRequirementsMap().remove(key);
        return this;
      }
      /**
       * Use {@link #getRequirementsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getRequirements() {
        return getRequirementsMap();
      }
      /**
       * <pre>
       * По requirements группы.
       * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
       * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; requirements = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getRequirementsMap() {
        return java.util.Collections.unmodifiableMap(
            instance.getRequirementsMap());
      }
      /**
       * <pre>
       * По requirements группы.
       * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
       * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; requirements = 2;</code>
       */
      @java.lang.Override

      public /* nullable */
java.lang.String getRequirementsOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        java.lang.Class<?> keyClass = key.getClass();
        java.util.Map<java.lang.String, java.lang.String> map =
            instance.getRequirementsMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * По requirements группы.
       * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
       * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; requirements = 2;</code>
       */
      @java.lang.Override

      public java.lang.String getRequirementsOrThrow(
          java.lang.String key) {
        java.lang.Class<?> keyClass = key.getClass();
        java.util.Map<java.lang.String, java.lang.String> map =
            instance.getRequirementsMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      /**
       * <pre>
       * По requirements группы.
       * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
       * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; requirements = 2;</code>
       */
      public Builder putRequirements(
          java.lang.String key,
          java.lang.String value) {
        java.lang.Class<?> keyClass = key.getClass();
        java.lang.Class<?> valueClass = value.getClass();
        copyOnWrite();
        instance.getMutableRequirementsMap().put(key, value);
        return this;
      }
      /**
       * <pre>
       * По requirements группы.
       * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
       * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; requirements = 2;</code>
       */
      public Builder putAllRequirements(
          java.util.Map<java.lang.String, java.lang.String> values) {
        copyOnWrite();
        instance.getMutableRequirementsMap().putAll(values);
        return this;
      }

      @java.lang.Override

      public int getClaimsCount() {
        return instance.getClaimsMap().size();
      }
      /**
       * <pre>
       * По claims группы.
       * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
       * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 3;</code>
       */
      @java.lang.Override

      public boolean containsClaims(
          java.lang.String key) {
        java.lang.Class<?> keyClass = key.getClass();
        return instance.getClaimsMap().containsKey(key);
      }

      public Builder clearClaims() {
        copyOnWrite();
        instance.getMutableClaimsMap().clear();
        return this;
      }
      /**
       * <pre>
       * По claims группы.
       * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
       * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 3;</code>
       */

      public Builder removeClaims(
          java.lang.String key) {
        java.lang.Class<?> keyClass = key.getClass();
        copyOnWrite();
        instance.getMutableClaimsMap().remove(key);
        return this;
      }
      /**
       * Use {@link #getClaimsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getClaims() {
        return getClaimsMap();
      }
      /**
       * <pre>
       * По claims группы.
       * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
       * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 3;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getClaimsMap() {
        return java.util.Collections.unmodifiableMap(
            instance.getClaimsMap());
      }
      /**
       * <pre>
       * По claims группы.
       * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
       * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 3;</code>
       */
      @java.lang.Override

      public /* nullable */
java.lang.String getClaimsOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        java.lang.Class<?> keyClass = key.getClass();
        java.util.Map<java.lang.String, java.lang.String> map =
            instance.getClaimsMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * По claims группы.
       * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
       * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 3;</code>
       */
      @java.lang.Override

      public java.lang.String getClaimsOrThrow(
          java.lang.String key) {
        java.lang.Class<?> keyClass = key.getClass();
        java.util.Map<java.lang.String, java.lang.String> map =
            instance.getClaimsMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      /**
       * <pre>
       * По claims группы.
       * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
       * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 3;</code>
       */
      public Builder putClaims(
          java.lang.String key,
          java.lang.String value) {
        java.lang.Class<?> keyClass = key.getClass();
        java.lang.Class<?> valueClass = value.getClass();
        copyOnWrite();
        instance.getMutableClaimsMap().put(key, value);
        return this;
      }
      /**
       * <pre>
       * По claims группы.
       * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
       * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
       * При передаче нескольких элементов map они работают в выборке через И
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 3;</code>
       */
      public Builder putAllClaims(
          java.util.Map<java.lang.String, java.lang.String> values) {
        copyOnWrite();
        instance.getMutableClaimsMap().putAll(values);
        return this;
      }

      /**
       * <pre>
       * По тегам.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       * @return A list containing the tags.
       */
      @java.lang.Override
      public java.util.List<java.lang.String>
          getTagsList() {
        return java.util.Collections.unmodifiableList(
            instance.getTagsList());
      }
      /**
       * <pre>
       * По тегам.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       * @return The count of tags.
       */
      @java.lang.Override
      public int getTagsCount() {
        return instance.getTagsCount();
      }
      /**
       * <pre>
       * По тегам.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       * @param index The index of the element to return.
       * @return The tags at the given index.
       */
      @java.lang.Override
      public java.lang.String getTags(int index) {
        return instance.getTags(index);
      }
      /**
       * <pre>
       * По тегам.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the tags at the given index.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getTagsBytes(int index) {
        return instance.getTagsBytes(index);
      }
      /**
       * <pre>
       * По тегам.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       * @param index The index to set the value at.
       * @param value The tags to set.
       * @return This builder for chaining.
       */
      public Builder setTags(
          int index, java.lang.String value) {
        copyOnWrite();
        instance.setTags(index, value);
        return this;
      }
      /**
       * <pre>
       * По тегам.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       * @param value The tags to add.
       * @return This builder for chaining.
       */
      public Builder addTags(
          java.lang.String value) {
        copyOnWrite();
        instance.addTags(value);
        return this;
      }
      /**
       * <pre>
       * По тегам.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       * @param values The tags to add.
       * @return This builder for chaining.
       */
      public Builder addAllTags(
          java.lang.Iterable<java.lang.String> values) {
        copyOnWrite();
        instance.addAllTags(values);
        return this;
      }
      /**
       * <pre>
       * По тегам.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTags() {
        copyOnWrite();
        instance.clearTags();
        return this;
      }
      /**
       * <pre>
       * По тегам.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       * @param value The bytes of the tags to add.
       * @return This builder for chaining.
       */
      public Builder addTagsBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.addTagsBytes(value);
        return this;
      }

      /**
       * <pre>
       * Скрывать удалённые элементы.
       * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
       * Если значение — false или не задано, возвращаются все записи, включая удалённые
       * </pre>
       *
       * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
       */
      @java.lang.Override
      public boolean hasHideDeleted() {
        return instance.hasHideDeleted();
      }
      /**
       * <pre>
       * Скрывать удалённые элементы.
       * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
       * Если значение — false или не задано, возвращаются все записи, включая удалённые
       * </pre>
       *
       * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
       */
      @java.lang.Override
      public com.google.protobuf.BoolValue getHideDeleted() {
        return instance.getHideDeleted();
      }
      /**
       * <pre>
       * Скрывать удалённые элементы.
       * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
       * Если значение — false или не задано, возвращаются все записи, включая удалённые
       * </pre>
       *
       * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
       */
      public Builder setHideDeleted(com.google.protobuf.BoolValue value) {
        copyOnWrite();
        instance.setHideDeleted(value);
        return this;
        }
      /**
       * <pre>
       * Скрывать удалённые элементы.
       * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
       * Если значение — false или не задано, возвращаются все записи, включая удалённые
       * </pre>
       *
       * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
       */
      public Builder setHideDeleted(
          com.google.protobuf.BoolValue.Builder builderForValue) {
        copyOnWrite();
        instance.setHideDeleted(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Скрывать удалённые элементы.
       * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
       * Если значение — false или не задано, возвращаются все записи, включая удалённые
       * </pre>
       *
       * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
       */
      public Builder mergeHideDeleted(com.google.protobuf.BoolValue value) {
        copyOnWrite();
        instance.mergeHideDeleted(value);
        return this;
      }
      /**
       * <pre>
       * Скрывать удалённые элементы.
       * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
       * Если значение — false или не задано, возвращаются все записи, включая удалённые
       * </pre>
       *
       * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
       */
      public Builder clearHideDeleted() {  copyOnWrite();
        instance.clearHideDeleted();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupFilter)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "text_",
              "requirements_",
              RequirementsDefaultEntryHolder.defaultEntry,
              "claims_",
              ClaimsDefaultEntryHolder.defaultEntry,
              "tags_",
              "hideDeleted_",
            };
            java.lang.String info =
                "\u0000\u0005\u0000\u0000\u0001\u0005\u0005\u0002\u0001\u0000\u0001\u0208\u00022\u0003" +
                "2\u0004\u021a\u0005\t";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupFilter)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter DEFAULT_INSTANCE;
    static {
      GroupFilter defaultInstance = new GroupFilter();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GroupFilter.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GroupFilter> PARSER;

    public static com.google.protobuf.Parser<GroupFilter> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GroupPagingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GroupPaging)
      com.google.protobuf.MessageLiteOrBuilder {

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

    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging.DirectionType direction_type = 2;</code>
     * @return The enum numeric value on the wire for directionType.
     */
    int getDirectionTypeValue();
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging.DirectionType direction_type = 2;</code>
     * @return The directionType.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.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.access_management.v1.GroupPaging}
   */
  public  static final class GroupPaging extends
      com.google.protobuf.GeneratedMessageLite<
          GroupPaging, GroupPaging.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupPaging)
      GroupPagingOrBuilder {
    private GroupPaging() {
    }
    /**
     * <pre>
     * Справочник типов значений сортировки.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.access_management.v1.GroupPaging.OrderByType}
     */
    public enum OrderByType
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <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>TITLE = 2;</code>
       */
      TITLE(2),
      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>TITLE = 2;</code>
       */
      public static final int TITLE_VALUE = 2;


      @java.lang.Override
      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 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 OrderByType valueOf(int value) {
        return forNumber(value);
      }

      public static OrderByType forNumber(int value) {
        switch (value) {
          case 0: return ORDER_BY_TYPE_UNKNOWN;
          case 1: return ID;
          case 2: return TITLE;
          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>() {
              @java.lang.Override
              public OrderByType findValueByNumber(int number) {
                return OrderByType.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return OrderByTypeVerifier.INSTANCE;
      }

      private static final class OrderByTypeVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new OrderByTypeVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return OrderByType.forNumber(number) != null;
              }
            };

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:keyapis.access_management.v1.GroupPaging.OrderByType)
    }

    /**
     * <pre>
     * Справочник типов направлений сортировки.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.access_management.v1.GroupPaging.DirectionType}
     */
    public enum DirectionType
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <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;


      @java.lang.Override
      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 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 DirectionType valueOf(int value) {
        return forNumber(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>() {
              @java.lang.Override
              public DirectionType findValueByNumber(int number) {
                return DirectionType.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return DirectionTypeVerifier.INSTANCE;
      }

      private static final class DirectionTypeVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new DirectionTypeVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return DirectionType.forNumber(number) != null;
              }
            };

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:keyapis.access_management.v1.GroupPaging.DirectionType)
    }

    public static final int ORDER_BY_TYPE_FIELD_NUMBER = 1;
    private int orderByType_;
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: ID
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging.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.access_management.v1.GroupPaging.OrderByType order_by_type = 1;</code>
     * @return The orderByType.
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.OrderByType getOrderByType() {
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.OrderByType result = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.OrderByType.forNumber(orderByType_);
      return result == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.OrderByType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: ID
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging.OrderByType order_by_type = 1;</code>
     * @param value The enum numeric value on the wire for orderByType to set.
     */
    private void setOrderByTypeValue(int value) {
        orderByType_ = value;
    }
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: ID
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging.OrderByType order_by_type = 1;</code>
     * @param value The orderByType to set.
     */
    private void setOrderByType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.OrderByType value) {
      orderByType_ = value.getNumber();

    }
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: ID
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging.OrderByType order_by_type = 1;</code>
     */
    private void clearOrderByType() {

      orderByType_ = 0;
    }

    public static final int DIRECTION_TYPE_FIELD_NUMBER = 2;
    private int directionType_;
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging.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.access_management.v1.GroupPaging.DirectionType direction_type = 2;</code>
     * @return The directionType.
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.DirectionType getDirectionType() {
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.DirectionType result = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.DirectionType.forNumber(directionType_);
      return result == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.DirectionType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging.DirectionType direction_type = 2;</code>
     * @param value The enum numeric value on the wire for directionType to set.
     */
    private void setDirectionTypeValue(int value) {
        directionType_ = value;
    }
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging.DirectionType direction_type = 2;</code>
     * @param value The directionType to set.
     */
    private void setDirectionType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.DirectionType value) {
      directionType_ = value.getNumber();

    }
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging.DirectionType direction_type = 2;</code>
     */
    private void clearDirectionType() {

      directionType_ = 0;
    }

    public static final int LIMIT_FIELD_NUMBER = 3;
    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.
     */
    private void setLimit(int value) {
      
      limit_ = value;
    }
    /**
     * <pre>
     * Количество записей на страницу.
     * Если значение 0 (не передано), то будет взято значение по умолчанию.
     * # Диапазон: 0..100.
     * # По умолчанию: 20
     * </pre>
     *
     * <code>int32 limit = 3;</code>
     */
    private void clearLimit() {

      limit_ = 0;
    }

    public static final int OFFSET_FIELD_NUMBER = 4;
    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.
     */
    private void setOffset(int value) {
      
      offset_ = value;
    }
    /**
     * <pre>
     * Сдвиг.
     * # Диапазон: 0..2147483647
     * </pre>
     *
     * <code>int32 offset = 4;</code>
     */
    private void clearOffset() {

      offset_ = 0;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Пагинация групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupPaging}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupPaging)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPagingOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging.OrderByType order_by_type = 1;</code>
       * @return The enum numeric value on the wire for orderByType.
       */
      @java.lang.Override
      public int getOrderByTypeValue() {
        return instance.getOrderByTypeValue();
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging.OrderByType order_by_type = 1;</code>
       * @param value The orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByTypeValue(int value) {
        copyOnWrite();
        instance.setOrderByTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging.OrderByType order_by_type = 1;</code>
       * @return The orderByType.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.OrderByType getOrderByType() {
        return instance.getOrderByType();
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging.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 setOrderByType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.OrderByType value) {
        copyOnWrite();
        instance.setOrderByType(value);
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging.OrderByType order_by_type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOrderByType() {
        copyOnWrite();
        instance.clearOrderByType();
        return this;
      }

      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging.DirectionType direction_type = 2;</code>
       * @return The enum numeric value on the wire for directionType.
       */
      @java.lang.Override
      public int getDirectionTypeValue() {
        return instance.getDirectionTypeValue();
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging.DirectionType direction_type = 2;</code>
       * @param value The directionType to set.
       * @return This builder for chaining.
       */
      public Builder setDirectionTypeValue(int value) {
        copyOnWrite();
        instance.setDirectionTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging.DirectionType direction_type = 2;</code>
       * @return The directionType.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.DirectionType getDirectionType() {
        return instance.getDirectionType();
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging.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 setDirectionType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.DirectionType value) {
        copyOnWrite();
        instance.setDirectionType(value);
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging.DirectionType direction_type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDirectionType() {
        copyOnWrite();
        instance.clearDirectionType();
        return this;
      }

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

      /**
       * <pre>
       * Сдвиг.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @return The offset.
       */
      @java.lang.Override
      public int getOffset() {
        return instance.getOffset();
      }
      /**
       * <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) {
        copyOnWrite();
        instance.setOffset(value);
        return this;
      }
      /**
       * <pre>
       * Сдвиг.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        copyOnWrite();
        instance.clearOffset();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupPaging)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "orderByType_",
              "directionType_",
              "limit_",
              "offset_",
            };
            java.lang.String info =
                "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\f\u0002\f\u0003" +
                "\u0004\u0004\u0004";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupPaging)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging DEFAULT_INSTANCE;
    static {
      GroupPaging defaultInstance = new GroupPaging();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GroupPaging.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GroupPaging> PARSER;

    public static com.google.protobuf.Parser<GroupPaging> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface PostGroupRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PostGroupRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The data.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData();
  }
  /**
   * <pre>
   * Запрос сохранения группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PostGroupRequest}
   */
  public  static final class PostGroupRequest extends
      com.google.protobuf.GeneratedMessageLite<
          PostGroupRequest, PostGroupRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PostGroupRequest)
      PostGroupRequestOrBuilder {
    private PostGroupRequest() {
    }
    public static final int DATA_FIELD_NUMBER = 1;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group data_;
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
      return data_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance() : data_;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
      value.getClass();
  data_ = value;

      }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
      value.getClass();
  if (data_ != null &&
          data_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance()) {
        data_ =
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.newBuilder(data_).mergeFrom(value).buildPartial();
      } else {
        data_ = value;
      }

    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearData() {  data_ = null;

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос сохранения группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PostGroupRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PostGroupRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        copyOnWrite();
        instance.setData(value);
        return this;
        }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder builderForValue) {
        copyOnWrite();
        instance.setData(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        copyOnWrite();
        instance.mergeData(value);
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearData() {  copyOnWrite();
        instance.clearData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PostGroupRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "data_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\t";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PostGroupRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest DEFAULT_INSTANCE;
    static {
      PostGroupRequest defaultInstance = new PostGroupRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PostGroupRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PostGroupRequest> PARSER;

    public static com.google.protobuf.Parser<PostGroupRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface PostGroupByTemplateRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PostGroupByTemplateRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Идентификатор шаблона группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The groupTemplateId.
     */
    java.lang.String getGroupTemplateId();
    /**
     * <pre>
     * Идентификатор шаблона группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for groupTemplateId.
     */
    com.google.protobuf.ByteString
        getGroupTemplateIdBytes();

    /**
     * <pre>
     * Наименование создаваемой по шаблону группы.
     * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The groupTitle.
     */
    java.lang.String getGroupTitle();
    /**
     * <pre>
     * Наименование создаваемой по шаблону группы.
     * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for groupTitle.
     */
    com.google.protobuf.ByteString
        getGroupTitleBytes();

    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> 
        getGroupRequirementsList();
    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getGroupRequirements(int index);
    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    int getGroupRequirementsCount();
  }
  /**
   * <pre>
   * Запрос создания группы по шаблону
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PostGroupByTemplateRequest}
   */
  public  static final class PostGroupByTemplateRequest extends
      com.google.protobuf.GeneratedMessageLite<
          PostGroupByTemplateRequest, PostGroupByTemplateRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PostGroupByTemplateRequest)
      PostGroupByTemplateRequestOrBuilder {
    private PostGroupByTemplateRequest() {
      groupTemplateId_ = "";
      groupTitle_ = "";
      groupRequirements_ = emptyProtobufList();
    }
    public static final int GROUP_TEMPLATE_ID_FIELD_NUMBER = 1;
    private java.lang.String groupTemplateId_;
    /**
     * <pre>
     * Идентификатор шаблона группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The groupTemplateId.
     */
    @java.lang.Override
    public java.lang.String getGroupTemplateId() {
      return groupTemplateId_;
    }
    /**
     * <pre>
     * Идентификатор шаблона группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for groupTemplateId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGroupTemplateIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(groupTemplateId_);
    }
    /**
     * <pre>
     * Идентификатор шаблона группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The groupTemplateId to set.
     */
    private void setGroupTemplateId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      groupTemplateId_ = value;
    }
    /**
     * <pre>
     * Идентификатор шаблона группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearGroupTemplateId() {

      groupTemplateId_ = getDefaultInstance().getGroupTemplateId();
    }
    /**
     * <pre>
     * Идентификатор шаблона группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for groupTemplateId to set.
     */
    private void setGroupTemplateIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      groupTemplateId_ = value.toStringUtf8();

    }

    public static final int GROUP_TITLE_FIELD_NUMBER = 2;
    private java.lang.String groupTitle_;
    /**
     * <pre>
     * Наименование создаваемой по шаблону группы.
     * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The groupTitle.
     */
    @java.lang.Override
    public java.lang.String getGroupTitle() {
      return groupTitle_;
    }
    /**
     * <pre>
     * Наименование создаваемой по шаблону группы.
     * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for groupTitle.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGroupTitleBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(groupTitle_);
    }
    /**
     * <pre>
     * Наименование создаваемой по шаблону группы.
     * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The groupTitle to set.
     */
    private void setGroupTitle(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      groupTitle_ = value;
    }
    /**
     * <pre>
     * Наименование создаваемой по шаблону группы.
     * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearGroupTitle() {

      groupTitle_ = getDefaultInstance().getGroupTitle();
    }
    /**
     * <pre>
     * Наименование создаваемой по шаблону группы.
     * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for groupTitle to set.
     */
    private void setGroupTitleBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      groupTitle_ = value.toStringUtf8();

    }

    public static final int GROUP_REQUIREMENTS_FIELD_NUMBER = 3;
    private com.google.protobuf.Internal.ProtobufList<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> groupRequirements_;
    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    @java.lang.Override
    public java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> getGroupRequirementsList() {
      return groupRequirements_;
    }
    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    public java.util.List<? extends ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder> 
        getGroupRequirementsOrBuilderList() {
      return groupRequirements_;
    }
    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    @java.lang.Override
    public int getGroupRequirementsCount() {
      return groupRequirements_.size();
    }
    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getGroupRequirements(int index) {
      return groupRequirements_.get(index);
    }
    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder getGroupRequirementsOrBuilder(
        int index) {
      return groupRequirements_.get(index);
    }
    private void ensureGroupRequirementsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> tmp = groupRequirements_;
      if (!tmp.isModifiable()) {
        groupRequirements_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    private void setGroupRequirements(
        int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
      value.getClass();
  ensureGroupRequirementsIsMutable();
      groupRequirements_.set(index, value);
    }
    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    private void addGroupRequirements(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
      value.getClass();
  ensureGroupRequirementsIsMutable();
      groupRequirements_.add(value);
    }
    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    private void addGroupRequirements(
        int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
      value.getClass();
  ensureGroupRequirementsIsMutable();
      groupRequirements_.add(index, value);
    }
    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    private void addAllGroupRequirements(
        java.lang.Iterable<? extends ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> values) {
      ensureGroupRequirementsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, groupRequirements_);
    }
    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    private void clearGroupRequirements() {
      groupRequirements_ = emptyProtobufList();
    }
    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    private void removeGroupRequirements(int index) {
      ensureGroupRequirementsIsMutable();
      groupRequirements_.remove(index);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос создания группы по шаблону
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PostGroupByTemplateRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PostGroupByTemplateRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Идентификатор шаблона группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The groupTemplateId.
       */
      @java.lang.Override
      public java.lang.String getGroupTemplateId() {
        return instance.getGroupTemplateId();
      }
      /**
       * <pre>
       * Идентификатор шаблона группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for groupTemplateId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getGroupTemplateIdBytes() {
        return instance.getGroupTemplateIdBytes();
      }
      /**
       * <pre>
       * Идентификатор шаблона группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The groupTemplateId to set.
       * @return This builder for chaining.
       */
      public Builder setGroupTemplateId(
          java.lang.String value) {
        copyOnWrite();
        instance.setGroupTemplateId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор шаблона группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearGroupTemplateId() {
        copyOnWrite();
        instance.clearGroupTemplateId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор шаблона группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for groupTemplateId to set.
       * @return This builder for chaining.
       */
      public Builder setGroupTemplateIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setGroupTemplateIdBytes(value);
        return this;
      }

      /**
       * <pre>
       * Наименование создаваемой по шаблону группы.
       * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The groupTitle.
       */
      @java.lang.Override
      public java.lang.String getGroupTitle() {
        return instance.getGroupTitle();
      }
      /**
       * <pre>
       * Наименование создаваемой по шаблону группы.
       * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for groupTitle.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getGroupTitleBytes() {
        return instance.getGroupTitleBytes();
      }
      /**
       * <pre>
       * Наименование создаваемой по шаблону группы.
       * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The groupTitle to set.
       * @return This builder for chaining.
       */
      public Builder setGroupTitle(
          java.lang.String value) {
        copyOnWrite();
        instance.setGroupTitle(value);
        return this;
      }
      /**
       * <pre>
       * Наименование создаваемой по шаблону группы.
       * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearGroupTitle() {
        copyOnWrite();
        instance.clearGroupTitle();
        return this;
      }
      /**
       * <pre>
       * Наименование создаваемой по шаблону группы.
       * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for groupTitle to set.
       * @return This builder for chaining.
       */
      public Builder setGroupTitleBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setGroupTitleBytes(value);
        return this;
      }

      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      @java.lang.Override
      public java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> getGroupRequirementsList() {
        return java.util.Collections.unmodifiableList(
            instance.getGroupRequirementsList());
      }
      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      @java.lang.Override
      public int getGroupRequirementsCount() {
        return instance.getGroupRequirementsCount();
      }/**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getGroupRequirements(int index) {
        return instance.getGroupRequirements(index);
      }
      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      public Builder setGroupRequirements(
          int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
        copyOnWrite();
        instance.setGroupRequirements(index, value);
        return this;
      }
      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      public Builder setGroupRequirements(
          int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder builderForValue) {
        copyOnWrite();
        instance.setGroupRequirements(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      public Builder addGroupRequirements(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
        copyOnWrite();
        instance.addGroupRequirements(value);
        return this;
      }
      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      public Builder addGroupRequirements(
          int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
        copyOnWrite();
        instance.addGroupRequirements(index, value);
        return this;
      }
      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      public Builder addGroupRequirements(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder builderForValue) {
        copyOnWrite();
        instance.addGroupRequirements(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      public Builder addGroupRequirements(
          int index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder builderForValue) {
        copyOnWrite();
        instance.addGroupRequirements(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      public Builder addAllGroupRequirements(
          java.lang.Iterable<? extends ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> values) {
        copyOnWrite();
        instance.addAllGroupRequirements(values);
        return this;
      }
      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      public Builder clearGroupRequirements() {
        copyOnWrite();
        instance.clearGroupRequirements();
        return this;
      }
      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      public Builder removeGroupRequirements(int index) {
        copyOnWrite();
        instance.removeGroupRequirements(index);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PostGroupByTemplateRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "groupTemplateId_",
              "groupTitle_",
              "groupRequirements_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.class,
            };
            java.lang.String info =
                "\u0000\u0003\u0000\u0000\u0001\u0003\u0003\u0000\u0001\u0000\u0001\u0208\u0002\u0208" +
                "\u0003\u001b";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PostGroupByTemplateRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest DEFAULT_INSTANCE;
    static {
      PostGroupByTemplateRequest defaultInstance = new PostGroupByTemplateRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PostGroupByTemplateRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PostGroupByTemplateRequest> PARSER;

    public static com.google.protobuf.Parser<PostGroupByTemplateRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface PostGroupResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PostGroupResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return The data.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData();

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

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос сохранения группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PostGroupResponse}
   */
  public  static final class PostGroupResponse extends
      com.google.protobuf.GeneratedMessageLite<
          PostGroupResponse, PostGroupResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PostGroupResponse)
      PostGroupResponseOrBuilder {
    private PostGroupResponse() {
    }
    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PostGroupResponse.Error)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation();

      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка запроса сохранения группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PostGroupResponse.Error}
     */
    public  static final class Error extends
        com.google.protobuf.GeneratedMessageLite<
            Error, Error.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PostGroupResponse.Error)
        ErrorOrBuilder {
      private Error() {
      }
      private int reasonCase_ = 0;
      private java.lang.Object reason_;
      public enum ReasonCase {
        VALIDATION(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @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;
        }
      };

      @java.lang.Override
      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      private void clearReason() {
        reasonCase_ = 0;
        reason_ = null;
      }

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void setValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void mergeValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
        value.getClass();
  if (reasonCase_ == 1 &&
            reason_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance()) {
          reason_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void clearValidation() {
        if (reasonCase_ == 1) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Ошибка запроса сохранения группы
       * </pre>
       *
       * Protobuf type {@code keyapis.access_management.v1.PostGroupResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PostGroupResponse.Error)
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.ErrorOrBuilder {
        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }

        @java.lang.Override
        public ReasonCase
            getReasonCase() {
          return instance.getReasonCase();
        }

        public Builder clearReason() {
          copyOnWrite();
          instance.clearReason();
          return this;
        }


        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public boolean hasValidation() {
          return instance.hasValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation() {
          return instance.getValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
          copyOnWrite();
          instance.setValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.Builder builderForValue) {
          copyOnWrite();
          instance.setValidation(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
          copyOnWrite();
          instance.mergeValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder clearValidation() {
          copyOnWrite();
          instance.clearValidation();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PostGroupResponse.Error)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "reason_",
                "reasonCase_",
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.class,
              };
              java.lang.String info =
                  "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001<\u0000";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PostGroupResponse.Error)
      private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error DEFAULT_INSTANCE;
      static {
        Error defaultInstance = new Error();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          Error.class, defaultInstance);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<Error> PARSER;

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

    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      DATA(1),
      ERROR(2),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @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;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    private void setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
      value.getClass();
  type_ = value;
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    private void mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
      value.getClass();
  if (typeCase_ == 1 &&
          type_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance()) {
        type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    private void clearData() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error getError() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
     */
    private void setError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error value) {
      value.getClass();
  type_ = value;
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
     */
    private void mergeError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error value) {
      value.getClass();
  if (typeCase_ == 2 &&
          type_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.getDefaultInstance()) {
        type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
     */
    private void clearError() {
      if (typeCase_ == 2) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос сохранения группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PostGroupResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PostGroupResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder builderForValue) {
        copyOnWrite();
        instance.setData(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        copyOnWrite();
        instance.mergeData(value);
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public boolean hasError() {
        return instance.hasError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error getError() {
        return instance.getError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
       */
      public Builder setError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error value) {
        copyOnWrite();
        instance.setError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
       */
      public Builder setError(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.Builder builderForValue) {
        copyOnWrite();
        instance.setError(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
       */
      public Builder mergeError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error value) {
        copyOnWrite();
        instance.mergeError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
       */
      public Builder clearError() {
        copyOnWrite();
        instance.clearError();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PostGroupResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.class,
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001<\u0000\u0002<" +
                "\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PostGroupResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse DEFAULT_INSTANCE;
    static {
      PostGroupResponse defaultInstance = new PostGroupResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PostGroupResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PostGroupResponse> PARSER;

    public static com.google.protobuf.Parser<PostGroupResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface PostGroupByTemplateResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PostGroupByTemplateResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return The data.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData();

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

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос создания группы по шаблону
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PostGroupByTemplateResponse}
   */
  public  static final class PostGroupByTemplateResponse extends
      com.google.protobuf.GeneratedMessageLite<
          PostGroupByTemplateResponse, PostGroupByTemplateResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PostGroupByTemplateResponse)
      PostGroupByTemplateResponseOrBuilder {
    private PostGroupByTemplateResponse() {
    }
    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PostGroupByTemplateResponse.Error)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation();

      /**
       * <pre>
       * Шаблон не найден
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
       * @return Whether the groupTemplateNotFoundError field is set.
       */
      boolean hasGroupTemplateNotFoundError();
      /**
       * <pre>
       * Шаблон не найден
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
       * @return The groupTemplateNotFoundError.
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError getGroupTemplateNotFoundError();

      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка запроса создания группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PostGroupByTemplateResponse.Error}
     */
    public  static final class Error extends
        com.google.protobuf.GeneratedMessageLite<
            Error, Error.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PostGroupByTemplateResponse.Error)
        ErrorOrBuilder {
      private Error() {
      }
      private int reasonCase_ = 0;
      private java.lang.Object reason_;
      public enum ReasonCase {
        VALIDATION(1),
        GROUP_TEMPLATE_NOT_FOUND_ERROR(2),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @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 2: return GROUP_TEMPLATE_NOT_FOUND_ERROR;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      @java.lang.Override
      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      private void clearReason() {
        reasonCase_ = 0;
        reason_ = null;
      }

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void setValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void mergeValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
        value.getClass();
  if (reasonCase_ == 1 &&
            reason_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance()) {
          reason_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       */
      private void clearValidation() {
        if (reasonCase_ == 1) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static final int GROUP_TEMPLATE_NOT_FOUND_ERROR_FIELD_NUMBER = 2;
      /**
       * <pre>
       * Шаблон не найден
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
       */
      @java.lang.Override
      public boolean hasGroupTemplateNotFoundError() {
        return reasonCase_ == 2;
      }
      /**
       * <pre>
       * Шаблон не найден
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError getGroupTemplateNotFoundError() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError) reason_;
        }
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.getDefaultInstance();
      }
      /**
       * <pre>
       * Шаблон не найден
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
       */
      private void setGroupTemplateNotFoundError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 2;
      }
      /**
       * <pre>
       * Шаблон не найден
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
       */
      private void mergeGroupTemplateNotFoundError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError value) {
        value.getClass();
  if (reasonCase_ == 2 &&
            reason_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.getDefaultInstance()) {
          reason_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 2;
      }
      /**
       * <pre>
       * Шаблон не найден
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
       */
      private void clearGroupTemplateNotFoundError() {
        if (reasonCase_ == 2) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Ошибка запроса создания группы
       * </pre>
       *
       * Protobuf type {@code keyapis.access_management.v1.PostGroupByTemplateResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PostGroupByTemplateResponse.Error)
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.ErrorOrBuilder {
        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }

        @java.lang.Override
        public ReasonCase
            getReasonCase() {
          return instance.getReasonCase();
        }

        public Builder clearReason() {
          copyOnWrite();
          instance.clearReason();
          return this;
        }


        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public boolean hasValidation() {
          return instance.hasValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation() {
          return instance.getValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
          copyOnWrite();
          instance.setValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.Builder builderForValue) {
          copyOnWrite();
          instance.setValidation(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
          copyOnWrite();
          instance.mergeValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder clearValidation() {
          copyOnWrite();
          instance.clearValidation();
          return this;
        }

        /**
         * <pre>
         * Шаблон не найден
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
         */
        @java.lang.Override
        public boolean hasGroupTemplateNotFoundError() {
          return instance.hasGroupTemplateNotFoundError();
        }
        /**
         * <pre>
         * Шаблон не найден
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
         */
        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError getGroupTemplateNotFoundError() {
          return instance.getGroupTemplateNotFoundError();
        }
        /**
         * <pre>
         * Шаблон не найден
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
         */
        public Builder setGroupTemplateNotFoundError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError value) {
          copyOnWrite();
          instance.setGroupTemplateNotFoundError(value);
          return this;
        }
        /**
         * <pre>
         * Шаблон не найден
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
         */
        public Builder setGroupTemplateNotFoundError(
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.Builder builderForValue) {
          copyOnWrite();
          instance.setGroupTemplateNotFoundError(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Шаблон не найден
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
         */
        public Builder mergeGroupTemplateNotFoundError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError value) {
          copyOnWrite();
          instance.mergeGroupTemplateNotFoundError(value);
          return this;
        }
        /**
         * <pre>
         * Шаблон не найден
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
         */
        public Builder clearGroupTemplateNotFoundError() {
          copyOnWrite();
          instance.clearGroupTemplateNotFoundError();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PostGroupByTemplateResponse.Error)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "reason_",
                "reasonCase_",
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.class,
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.class,
              };
              java.lang.String info =
                  "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001<\u0000\u0002<" +
                  "\u0000";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PostGroupByTemplateResponse.Error)
      private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error DEFAULT_INSTANCE;
      static {
        Error defaultInstance = new Error();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          Error.class, defaultInstance);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<Error> PARSER;

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

    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      DATA(1),
      ERROR(2),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @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;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    private void setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
      value.getClass();
  type_ = value;
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    private void mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
      value.getClass();
  if (typeCase_ == 1 &&
          type_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance()) {
        type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     */
    private void clearData() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error getError() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
     */
    private void setError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error value) {
      value.getClass();
  type_ = value;
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
     */
    private void mergeError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error value) {
      value.getClass();
  if (typeCase_ == 2 &&
          type_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.getDefaultInstance()) {
        type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
     */
    private void clearError() {
      if (typeCase_ == 2) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос создания группы по шаблону
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PostGroupByTemplateResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PostGroupByTemplateResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder builderForValue) {
        copyOnWrite();
        instance.setData(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        copyOnWrite();
        instance.mergeData(value);
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public boolean hasError() {
        return instance.hasError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error getError() {
        return instance.getError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
       */
      public Builder setError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error value) {
        copyOnWrite();
        instance.setError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
       */
      public Builder setError(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.Builder builderForValue) {
        copyOnWrite();
        instance.setError(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
       */
      public Builder mergeError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error value) {
        copyOnWrite();
        instance.mergeError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
       */
      public Builder clearError() {
        copyOnWrite();
        instance.clearError();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PostGroupByTemplateResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.class,
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001<\u0000\u0002<" +
                "\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PostGroupByTemplateResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse DEFAULT_INSTANCE;
    static {
      PostGroupByTemplateResponse defaultInstance = new PostGroupByTemplateResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PostGroupByTemplateResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PostGroupByTemplateResponse> PARSER;

    public static com.google.protobuf.Parser<PostGroupByTemplateResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface DeleteGroupRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.DeleteGroupRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The id.
     */
    java.lang.String getId();
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();
  }
  /**
   * <pre>
   * Запрос удаления группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.DeleteGroupRequest}
   */
  public  static final class DeleteGroupRequest extends
      com.google.protobuf.GeneratedMessageLite<
          DeleteGroupRequest, DeleteGroupRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.DeleteGroupRequest)
      DeleteGroupRequestOrBuilder {
    private DeleteGroupRequest() {
      id_ = "";
    }
    public static final int ID_FIELD_NUMBER = 1;
    private java.lang.String id_;
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      return id_;
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(id_);
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The id to set.
     */
    private void setId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      id_ = value;
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearId() {

      id_ = getDefaultInstance().getId();
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for id to set.
     */
    private void setIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      id_ = value.toStringUtf8();

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос удаления группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.DeleteGroupRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.DeleteGroupRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The id.
       */
      @java.lang.Override
      public java.lang.String getId() {
        return instance.getId();
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for id.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getIdBytes() {
        return instance.getIdBytes();
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        copyOnWrite();
        instance.setId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        copyOnWrite();
        instance.clearId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setIdBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.DeleteGroupRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "id_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0208";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.DeleteGroupRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest DEFAULT_INSTANCE;
    static {
      DeleteGroupRequest defaultInstance = new DeleteGroupRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        DeleteGroupRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<DeleteGroupRequest> PARSER;

    public static com.google.protobuf.Parser<DeleteGroupRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface DeleteGroupResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.DeleteGroupResponse)
      com.google.protobuf.MessageLiteOrBuilder {
  }
  /**
   * <pre>
   * Ответ на запрос удаления группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.DeleteGroupResponse}
   */
  public  static final class DeleteGroupResponse extends
      com.google.protobuf.GeneratedMessageLite<
          DeleteGroupResponse, DeleteGroupResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.DeleteGroupResponse)
      DeleteGroupResponseOrBuilder {
    private DeleteGroupResponse() {
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос удаления группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.DeleteGroupResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.DeleteGroupResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.DeleteGroupResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = null;java.lang.String info =
                "\u0000\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.DeleteGroupResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse DEFAULT_INSTANCE;
    static {
      DeleteGroupResponse defaultInstance = new DeleteGroupResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        DeleteGroupResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<DeleteGroupResponse> PARSER;

    public static com.google.protobuf.Parser<DeleteGroupResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface PutGroupUserAttachRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PutGroupUserAttachRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the userGroup field is set.
     */
    boolean hasUserGroup();
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userGroup.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getUserGroup();
  }
  /**
   * <pre>
   * Запрос на добавление связи пользователя и группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PutGroupUserAttachRequest}
   */
  public  static final class PutGroupUserAttachRequest extends
      com.google.protobuf.GeneratedMessageLite<
          PutGroupUserAttachRequest, PutGroupUserAttachRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupUserAttachRequest)
      PutGroupUserAttachRequestOrBuilder {
    private PutGroupUserAttachRequest() {
    }
    public static final int USER_GROUP_FIELD_NUMBER = 1;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup userGroup_;
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public boolean hasUserGroup() {
      return userGroup_ != null;
    }
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getUserGroup() {
      return userGroup_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance() : userGroup_;
    }
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void setUserGroup(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
      value.getClass();
  userGroup_ = value;

      }
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeUserGroup(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
      value.getClass();
  if (userGroup_ != null &&
          userGroup_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance()) {
        userGroup_ =
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.newBuilder(userGroup_).mergeFrom(value).buildPartial();
      } else {
        userGroup_ = value;
      }

    }
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearUserGroup() {  userGroup_ = null;

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос на добавление связи пользователя и группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupUserAttachRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupUserAttachRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public boolean hasUserGroup() {
        return instance.hasUserGroup();
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getUserGroup() {
        return instance.getUserGroup();
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setUserGroup(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
        copyOnWrite();
        instance.setUserGroup(value);
        return this;
        }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setUserGroup(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder builderForValue) {
        copyOnWrite();
        instance.setUserGroup(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder mergeUserGroup(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
        copyOnWrite();
        instance.mergeUserGroup(value);
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearUserGroup() {  copyOnWrite();
        instance.clearUserGroup();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupUserAttachRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "userGroup_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\t";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupUserAttachRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest DEFAULT_INSTANCE;
    static {
      PutGroupUserAttachRequest defaultInstance = new PutGroupUserAttachRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PutGroupUserAttachRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PutGroupUserAttachRequest> PARSER;

    public static com.google.protobuf.Parser<PutGroupUserAttachRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface PutGroupUserAttachResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PutGroupUserAttachResponse)
      com.google.protobuf.MessageLiteOrBuilder {
  }
  /**
   * <pre>
   * Ответ на добавление связи пользователя и группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PutGroupUserAttachResponse}
   */
  public  static final class PutGroupUserAttachResponse extends
      com.google.protobuf.GeneratedMessageLite<
          PutGroupUserAttachResponse, PutGroupUserAttachResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupUserAttachResponse)
      PutGroupUserAttachResponseOrBuilder {
    private PutGroupUserAttachResponse() {
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на добавление связи пользователя и группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupUserAttachResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupUserAttachResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupUserAttachResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = null;java.lang.String info =
                "\u0000\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupUserAttachResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse DEFAULT_INSTANCE;
    static {
      PutGroupUserAttachResponse defaultInstance = new PutGroupUserAttachResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PutGroupUserAttachResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PutGroupUserAttachResponse> PARSER;

    public static com.google.protobuf.Parser<PutGroupUserAttachResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface PutGroupUserDetachRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PutGroupUserDetachRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the userGroup field is set.
     */
    boolean hasUserGroup();
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userGroup.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getUserGroup();
  }
  /**
   * <pre>
   * Запрос на удаление связи пользователя и группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PutGroupUserDetachRequest}
   */
  public  static final class PutGroupUserDetachRequest extends
      com.google.protobuf.GeneratedMessageLite<
          PutGroupUserDetachRequest, PutGroupUserDetachRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupUserDetachRequest)
      PutGroupUserDetachRequestOrBuilder {
    private PutGroupUserDetachRequest() {
    }
    public static final int USER_GROUP_FIELD_NUMBER = 1;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup userGroup_;
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public boolean hasUserGroup() {
      return userGroup_ != null;
    }
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getUserGroup() {
      return userGroup_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance() : userGroup_;
    }
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void setUserGroup(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
      value.getClass();
  userGroup_ = value;

      }
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeUserGroup(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
      value.getClass();
  if (userGroup_ != null &&
          userGroup_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance()) {
        userGroup_ =
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.newBuilder(userGroup_).mergeFrom(value).buildPartial();
      } else {
        userGroup_ = value;
      }

    }
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearUserGroup() {  userGroup_ = null;

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос на удаление связи пользователя и группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupUserDetachRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupUserDetachRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public boolean hasUserGroup() {
        return instance.hasUserGroup();
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getUserGroup() {
        return instance.getUserGroup();
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setUserGroup(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
        copyOnWrite();
        instance.setUserGroup(value);
        return this;
        }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setUserGroup(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder builderForValue) {
        copyOnWrite();
        instance.setUserGroup(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder mergeUserGroup(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
        copyOnWrite();
        instance.mergeUserGroup(value);
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearUserGroup() {  copyOnWrite();
        instance.clearUserGroup();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupUserDetachRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "userGroup_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\t";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupUserDetachRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest DEFAULT_INSTANCE;
    static {
      PutGroupUserDetachRequest defaultInstance = new PutGroupUserDetachRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PutGroupUserDetachRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PutGroupUserDetachRequest> PARSER;

    public static com.google.protobuf.Parser<PutGroupUserDetachRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupUserListRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupUserListRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    boolean hasFilter();
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     * @return The filter.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter getFilter();

    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
     * @return Whether the paging field is set.
     */
    boolean hasPaging();
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
     * @return The paging.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging getPaging();

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest.PaginationCase getPaginationCase();
  }
  /**
   * <pre>
   * Запрос получения списка связей пользователей и групп
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupUserListRequest}
   */
  public  static final class GetGroupUserListRequest extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupUserListRequest, GetGroupUserListRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupUserListRequest)
      GetGroupUserListRequestOrBuilder {
    private GetGroupUserListRequest() {
    }
    private int paginationCase_ = 0;
    private java.lang.Object pagination_;
    public enum PaginationCase {
      PAGING(2),
      PAGINATION_NOT_SET(0);
      private final int value;
      private PaginationCase(int value) {
        this.value = value;
      }
      /**
       * @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;
      }
    };

    @java.lang.Override
    public PaginationCase
    getPaginationCase() {
      return PaginationCase.forNumber(
          paginationCase_);
    }

    private void clearPagination() {
      paginationCase_ = 0;
      pagination_ = null;
    }

    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter filter_;
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter getFilter() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.getDefaultInstance() : filter_;
    }
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     */
    private void setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter value) {
      value.getClass();
  filter_ = value;

      }
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter value) {
      value.getClass();
  if (filter_ != null &&
          filter_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.getDefaultInstance()) {
        filter_ =
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.newBuilder(filter_).mergeFrom(value).buildPartial();
      } else {
        filter_ = value;
      }

    }
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     */
    private void clearFilter() {  filter_ = null;

    }

    public static final int PAGING_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
     */
    @java.lang.Override
    public boolean hasPaging() {
      return paginationCase_ == 2;
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging getPaging() {
      if (paginationCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging) pagination_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.getDefaultInstance();
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
     */
    private void setPaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging value) {
      value.getClass();
  pagination_ = value;
      paginationCase_ = 2;
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
     */
    private void mergePaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging value) {
      value.getClass();
  if (paginationCase_ == 2 &&
          pagination_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.getDefaultInstance()) {
        pagination_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging) pagination_)
            .mergeFrom(value).buildPartial();
      } else {
        pagination_ = value;
      }
      paginationCase_ = 2;
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
     */
    private void clearPaging() {
      if (paginationCase_ == 2) {
        paginationCase_ = 0;
        pagination_ = null;
      }
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос получения списка связей пользователей и групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupUserListRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupUserListRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public PaginationCase
          getPaginationCase() {
        return instance.getPaginationCase();
      }

      public Builder clearPagination() {
        copyOnWrite();
        instance.clearPagination();
        return this;
      }


      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      @java.lang.Override
      public boolean hasFilter() {
        return instance.hasFilter();
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter getFilter() {
        return instance.getFilter();
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter value) {
        copyOnWrite();
        instance.setFilter(value);
        return this;
        }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.Builder builderForValue) {
        copyOnWrite();
        instance.setFilter(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter value) {
        copyOnWrite();
        instance.mergeFilter(value);
        return this;
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public Builder clearFilter() {  copyOnWrite();
        instance.clearFilter();
        return this;
      }

      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       */
      @java.lang.Override
      public boolean hasPaging() {
        return instance.hasPaging();
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging getPaging() {
        return instance.getPaging();
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       */
      public Builder setPaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging value) {
        copyOnWrite();
        instance.setPaging(value);
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       */
      public Builder setPaging(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.Builder builderForValue) {
        copyOnWrite();
        instance.setPaging(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       */
      public Builder mergePaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging value) {
        copyOnWrite();
        instance.mergePaging(value);
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       */
      public Builder clearPaging() {
        copyOnWrite();
        instance.clearPaging();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupUserListRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "pagination_",
              "paginationCase_",
              "filter_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\t\u0002<\u0000" +
                "";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupUserListRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest DEFAULT_INSTANCE;
    static {
      GetGroupUserListRequest defaultInstance = new GetGroupUserListRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupUserListRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupUserListRequest> PARSER;

    public static com.google.protobuf.Parser<GetGroupUserListRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GroupUserPagingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GroupUserPaging)
      com.google.protobuf.MessageLiteOrBuilder {

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

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

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

    /**
     * <pre>
     * Сдвиг.
     * По умолчанию: 0
     * </pre>
     *
     * <code>int32 offset = 4;</code>
     * @return The offset.
     */
    int getOffset();
  }
  /**
   * <pre>
   * Пагинация связей пользователей и групп
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GroupUserPaging}
   */
  public  static final class GroupUserPaging extends
      com.google.protobuf.GeneratedMessageLite<
          GroupUserPaging, GroupUserPaging.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupUserPaging)
      GroupUserPagingOrBuilder {
    private GroupUserPaging() {
    }
    /**
     * <pre>
     * Справочник типов сортировки
     * </pre>
     *
     * Protobuf enum {@code keyapis.access_management.v1.GroupUserPaging.OrderByType}
     */
    public enum OrderByType
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>ORDER_BY_TYPE_UNKNOWN = 0;</code>
       */
      ORDER_BY_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * По Идентификатору группы
       * </pre>
       *
       * <code>GROUP_ID = 1;</code>
       */
      GROUP_ID(1),
      /**
       * <pre>
       * По Идентификатору пользователя
       * </pre>
       *
       * <code>USER_ID = 2;</code>
       */
      USER_ID(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>ORDER_BY_TYPE_UNKNOWN = 0;</code>
       */
      public static final int ORDER_BY_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * По Идентификатору группы
       * </pre>
       *
       * <code>GROUP_ID = 1;</code>
       */
      public static final int GROUP_ID_VALUE = 1;
      /**
       * <pre>
       * По Идентификатору пользователя
       * </pre>
       *
       * <code>USER_ID = 2;</code>
       */
      public static final int USER_ID_VALUE = 2;


      @java.lang.Override
      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 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 OrderByType valueOf(int value) {
        return forNumber(value);
      }

      public static OrderByType forNumber(int value) {
        switch (value) {
          case 0: return ORDER_BY_TYPE_UNKNOWN;
          case 1: return GROUP_ID;
          case 2: return USER_ID;
          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>() {
              @java.lang.Override
              public OrderByType findValueByNumber(int number) {
                return OrderByType.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return OrderByTypeVerifier.INSTANCE;
      }

      private static final class OrderByTypeVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new OrderByTypeVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return OrderByType.forNumber(number) != null;
              }
            };

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:keyapis.access_management.v1.GroupUserPaging.OrderByType)
    }

    /**
     * <pre>
     * Справочник типов направлений сортировки
     * </pre>
     *
     * Protobuf enum {@code keyapis.access_management.v1.GroupUserPaging.DirectionType}
     */
    public enum DirectionType
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <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;


      @java.lang.Override
      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 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 DirectionType valueOf(int value) {
        return forNumber(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>() {
              @java.lang.Override
              public DirectionType findValueByNumber(int number) {
                return DirectionType.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return DirectionTypeVerifier.INSTANCE;
      }

      private static final class DirectionTypeVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new DirectionTypeVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return DirectionType.forNumber(number) != null;
              }
            };

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:keyapis.access_management.v1.GroupUserPaging.DirectionType)
    }

    public static final int ORDER_BY_TYPE_FIELD_NUMBER = 1;
    private int orderByType_;
    /**
     * <pre>
     * Тип значения сортировки.
     * По умолчанию: ID
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging.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.access_management.v1.GroupUserPaging.OrderByType order_by_type = 1;</code>
     * @return The orderByType.
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.OrderByType getOrderByType() {
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.OrderByType result = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.OrderByType.forNumber(orderByType_);
      return result == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.OrderByType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Тип значения сортировки.
     * По умолчанию: ID
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging.OrderByType order_by_type = 1;</code>
     * @param value The enum numeric value on the wire for orderByType to set.
     */
    private void setOrderByTypeValue(int value) {
        orderByType_ = value;
    }
    /**
     * <pre>
     * Тип значения сортировки.
     * По умолчанию: ID
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging.OrderByType order_by_type = 1;</code>
     * @param value The orderByType to set.
     */
    private void setOrderByType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.OrderByType value) {
      orderByType_ = value.getNumber();

    }
    /**
     * <pre>
     * Тип значения сортировки.
     * По умолчанию: ID
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging.OrderByType order_by_type = 1;</code>
     */
    private void clearOrderByType() {

      orderByType_ = 0;
    }

    public static final int DIRECTION_TYPE_FIELD_NUMBER = 2;
    private int directionType_;
    /**
     * <pre>
     * Тип направления сортировки.
     * По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging.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.access_management.v1.GroupUserPaging.DirectionType direction_type = 2;</code>
     * @return The directionType.
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.DirectionType getDirectionType() {
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.DirectionType result = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.DirectionType.forNumber(directionType_);
      return result == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.DirectionType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Тип направления сортировки.
     * По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging.DirectionType direction_type = 2;</code>
     * @param value The enum numeric value on the wire for directionType to set.
     */
    private void setDirectionTypeValue(int value) {
        directionType_ = value;
    }
    /**
     * <pre>
     * Тип направления сортировки.
     * По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging.DirectionType direction_type = 2;</code>
     * @param value The directionType to set.
     */
    private void setDirectionType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.DirectionType value) {
      directionType_ = value.getNumber();

    }
    /**
     * <pre>
     * Тип направления сортировки.
     * По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging.DirectionType direction_type = 2;</code>
     */
    private void clearDirectionType() {

      directionType_ = 0;
    }

    public static final int LIMIT_FIELD_NUMBER = 3;
    private int limit_;
    /**
     * <pre>
     * Количество записей на страницу.
     * Минимальное значение: 1.
     * Максимальное значение: 100.
     * По умолчанию: 20.
     * Если значение 0 (не передано), то выставляем значение по умолчанию
     * </pre>
     *
     * <code>int32 limit = 3;</code>
     * @return The limit.
     */
    @java.lang.Override
    public int getLimit() {
      return limit_;
    }
    /**
     * <pre>
     * Количество записей на страницу.
     * Минимальное значение: 1.
     * Максимальное значение: 100.
     * По умолчанию: 20.
     * Если значение 0 (не передано), то выставляем значение по умолчанию
     * </pre>
     *
     * <code>int32 limit = 3;</code>
     * @param value The limit to set.
     */
    private void setLimit(int value) {
      
      limit_ = value;
    }
    /**
     * <pre>
     * Количество записей на страницу.
     * Минимальное значение: 1.
     * Максимальное значение: 100.
     * По умолчанию: 20.
     * Если значение 0 (не передано), то выставляем значение по умолчанию
     * </pre>
     *
     * <code>int32 limit = 3;</code>
     */
    private void clearLimit() {

      limit_ = 0;
    }

    public static final int OFFSET_FIELD_NUMBER = 4;
    private int offset_;
    /**
     * <pre>
     * Сдвиг.
     * По умолчанию: 0
     * </pre>
     *
     * <code>int32 offset = 4;</code>
     * @return The offset.
     */
    @java.lang.Override
    public int getOffset() {
      return offset_;
    }
    /**
     * <pre>
     * Сдвиг.
     * По умолчанию: 0
     * </pre>
     *
     * <code>int32 offset = 4;</code>
     * @param value The offset to set.
     */
    private void setOffset(int value) {
      
      offset_ = value;
    }
    /**
     * <pre>
     * Сдвиг.
     * По умолчанию: 0
     * </pre>
     *
     * <code>int32 offset = 4;</code>
     */
    private void clearOffset() {

      offset_ = 0;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Пагинация связей пользователей и групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupUserPaging}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupUserPaging)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPagingOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Тип значения сортировки.
       * По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging.OrderByType order_by_type = 1;</code>
       * @return The enum numeric value on the wire for orderByType.
       */
      @java.lang.Override
      public int getOrderByTypeValue() {
        return instance.getOrderByTypeValue();
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging.OrderByType order_by_type = 1;</code>
       * @param value The orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByTypeValue(int value) {
        copyOnWrite();
        instance.setOrderByTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging.OrderByType order_by_type = 1;</code>
       * @return The orderByType.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.OrderByType getOrderByType() {
        return instance.getOrderByType();
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging.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 setOrderByType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.OrderByType value) {
        copyOnWrite();
        instance.setOrderByType(value);
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging.OrderByType order_by_type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOrderByType() {
        copyOnWrite();
        instance.clearOrderByType();
        return this;
      }

      /**
       * <pre>
       * Тип направления сортировки.
       * По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging.DirectionType direction_type = 2;</code>
       * @return The enum numeric value on the wire for directionType.
       */
      @java.lang.Override
      public int getDirectionTypeValue() {
        return instance.getDirectionTypeValue();
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging.DirectionType direction_type = 2;</code>
       * @param value The directionType to set.
       * @return This builder for chaining.
       */
      public Builder setDirectionTypeValue(int value) {
        copyOnWrite();
        instance.setDirectionTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging.DirectionType direction_type = 2;</code>
       * @return The directionType.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.DirectionType getDirectionType() {
        return instance.getDirectionType();
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging.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 setDirectionType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.DirectionType value) {
        copyOnWrite();
        instance.setDirectionType(value);
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging.DirectionType direction_type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDirectionType() {
        copyOnWrite();
        instance.clearDirectionType();
        return this;
      }

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

      /**
       * <pre>
       * Сдвиг.
       * По умолчанию: 0
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @return The offset.
       */
      @java.lang.Override
      public int getOffset() {
        return instance.getOffset();
      }
      /**
       * <pre>
       * Сдвиг.
       * По умолчанию: 0
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @param value The offset to set.
       * @return This builder for chaining.
       */
      public Builder setOffset(int value) {
        copyOnWrite();
        instance.setOffset(value);
        return this;
      }
      /**
       * <pre>
       * Сдвиг.
       * По умолчанию: 0
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        copyOnWrite();
        instance.clearOffset();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupUserPaging)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "orderByType_",
              "directionType_",
              "limit_",
              "offset_",
            };
            java.lang.String info =
                "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\f\u0002\f\u0003" +
                "\u0004\u0004\u0004";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupUserPaging)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging DEFAULT_INSTANCE;
    static {
      GroupUserPaging defaultInstance = new GroupUserPaging();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GroupUserPaging.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GroupUserPaging> PARSER;

    public static com.google.protobuf.Parser<GroupUserPaging> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GroupUserFilterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GroupUserFilter)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @return A list containing the groupIds.
     */
    java.util.List<java.lang.String>
        getGroupIdsList();
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @return The count of groupIds.
     */
    int getGroupIdsCount();
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @param index The index of the element to return.
     * @return The groupIds at the given index.
     */
    java.lang.String getGroupIds(int index);
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @param index The index of the element to return.
     * @return The groupIds at the given index.
     */
    com.google.protobuf.ByteString
        getGroupIdsBytes(int index);

    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @return A list containing the userIds.
     */
    java.util.List<java.lang.String>
        getUserIdsList();
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @return The count of userIds.
     */
    int getUserIdsCount();
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @param index The index of the element to return.
     * @return The userIds at the given index.
     */
    java.lang.String getUserIds(int index);
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @param index The index of the element to return.
     * @return The userIds at the given index.
     */
    com.google.protobuf.ByteString
        getUserIdsBytes(int index);
  }
  /**
   * <pre>
   * Фильтр для запроса связей пользователей и групп.
   * При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
   * При передаче нескольких разных параметров фильтра они работают в выборке через И
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GroupUserFilter}
   */
  public  static final class GroupUserFilter extends
      com.google.protobuf.GeneratedMessageLite<
          GroupUserFilter, GroupUserFilter.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupUserFilter)
      GroupUserFilterOrBuilder {
    private GroupUserFilter() {
      groupIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
      userIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    public static final int GROUP_IDS_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.ProtobufList<java.lang.String> groupIds_;
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @return A list containing the groupIds.
     */
    @java.lang.Override
    public java.util.List<java.lang.String> getGroupIdsList() {
      return groupIds_;
    }
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @return The count of groupIds.
     */
    @java.lang.Override
    public int getGroupIdsCount() {
      return groupIds_.size();
    }
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @param index The index of the element to return.
     * @return The groupIds at the given index.
     */
    @java.lang.Override
    public java.lang.String getGroupIds(int index) {
      return groupIds_.get(index);
    }
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the groupIds at the given index.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGroupIdsBytes(int index) {
      return com.google.protobuf.ByteString.copyFromUtf8(
          groupIds_.get(index));
    }
    private void ensureGroupIdsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
          groupIds_;  if (!tmp.isModifiable()) {
        groupIds_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @param index The index to set the value at.
     * @param value The groupIds to set.
     */
    private void setGroupIds(
        int index, java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  ensureGroupIdsIsMutable();
      groupIds_.set(index, value);
    }
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @param value The groupIds to add.
     */
    private void addGroupIds(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  ensureGroupIdsIsMutable();
      groupIds_.add(value);
    }
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @param values The groupIds to add.
     */
    private void addAllGroupIds(
        java.lang.Iterable<java.lang.String> values) {
      ensureGroupIdsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, groupIds_);
    }
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     */
    private void clearGroupIds() {
      groupIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @param value The bytes of the groupIds to add.
     */
    private void addGroupIdsBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      ensureGroupIdsIsMutable();
      groupIds_.add(value.toStringUtf8());
    }

    public static final int USER_IDS_FIELD_NUMBER = 2;
    private com.google.protobuf.Internal.ProtobufList<java.lang.String> userIds_;
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @return A list containing the userIds.
     */
    @java.lang.Override
    public java.util.List<java.lang.String> getUserIdsList() {
      return userIds_;
    }
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @return The count of userIds.
     */
    @java.lang.Override
    public int getUserIdsCount() {
      return userIds_.size();
    }
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @param index The index of the element to return.
     * @return The userIds at the given index.
     */
    @java.lang.Override
    public java.lang.String getUserIds(int index) {
      return userIds_.get(index);
    }
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the userIds at the given index.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserIdsBytes(int index) {
      return com.google.protobuf.ByteString.copyFromUtf8(
          userIds_.get(index));
    }
    private void ensureUserIdsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
          userIds_;  if (!tmp.isModifiable()) {
        userIds_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @param index The index to set the value at.
     * @param value The userIds to set.
     */
    private void setUserIds(
        int index, java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  ensureUserIdsIsMutable();
      userIds_.set(index, value);
    }
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @param value The userIds to add.
     */
    private void addUserIds(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  ensureUserIdsIsMutable();
      userIds_.add(value);
    }
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @param values The userIds to add.
     */
    private void addAllUserIds(
        java.lang.Iterable<java.lang.String> values) {
      ensureUserIdsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, userIds_);
    }
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     */
    private void clearUserIds() {
      userIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @param value The bytes of the userIds to add.
     */
    private void addUserIdsBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      ensureUserIdsIsMutable();
      userIds_.add(value.toStringUtf8());
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Фильтр для запроса связей пользователей и групп.
     * При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
     * При передаче нескольких разных параметров фильтра они работают в выборке через И
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupUserFilter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupUserFilter)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilterOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * По Идентификаторам группы
       * </pre>
       *
       * <code>repeated string group_ids = 1;</code>
       * @return A list containing the groupIds.
       */
      @java.lang.Override
      public java.util.List<java.lang.String>
          getGroupIdsList() {
        return java.util.Collections.unmodifiableList(
            instance.getGroupIdsList());
      }
      /**
       * <pre>
       * По Идентификаторам группы
       * </pre>
       *
       * <code>repeated string group_ids = 1;</code>
       * @return The count of groupIds.
       */
      @java.lang.Override
      public int getGroupIdsCount() {
        return instance.getGroupIdsCount();
      }
      /**
       * <pre>
       * По Идентификаторам группы
       * </pre>
       *
       * <code>repeated string group_ids = 1;</code>
       * @param index The index of the element to return.
       * @return The groupIds at the given index.
       */
      @java.lang.Override
      public java.lang.String getGroupIds(int index) {
        return instance.getGroupIds(index);
      }
      /**
       * <pre>
       * По Идентификаторам группы
       * </pre>
       *
       * <code>repeated string group_ids = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the groupIds at the given index.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getGroupIdsBytes(int index) {
        return instance.getGroupIdsBytes(index);
      }
      /**
       * <pre>
       * По Идентификаторам группы
       * </pre>
       *
       * <code>repeated string group_ids = 1;</code>
       * @param index The index to set the value at.
       * @param value The groupIds to set.
       * @return This builder for chaining.
       */
      public Builder setGroupIds(
          int index, java.lang.String value) {
        copyOnWrite();
        instance.setGroupIds(index, value);
        return this;
      }
      /**
       * <pre>
       * По Идентификаторам группы
       * </pre>
       *
       * <code>repeated string group_ids = 1;</code>
       * @param value The groupIds to add.
       * @return This builder for chaining.
       */
      public Builder addGroupIds(
          java.lang.String value) {
        copyOnWrite();
        instance.addGroupIds(value);
        return this;
      }
      /**
       * <pre>
       * По Идентификаторам группы
       * </pre>
       *
       * <code>repeated string group_ids = 1;</code>
       * @param values The groupIds to add.
       * @return This builder for chaining.
       */
      public Builder addAllGroupIds(
          java.lang.Iterable<java.lang.String> values) {
        copyOnWrite();
        instance.addAllGroupIds(values);
        return this;
      }
      /**
       * <pre>
       * По Идентификаторам группы
       * </pre>
       *
       * <code>repeated string group_ids = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearGroupIds() {
        copyOnWrite();
        instance.clearGroupIds();
        return this;
      }
      /**
       * <pre>
       * По Идентификаторам группы
       * </pre>
       *
       * <code>repeated string group_ids = 1;</code>
       * @param value The bytes of the groupIds to add.
       * @return This builder for chaining.
       */
      public Builder addGroupIdsBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.addGroupIdsBytes(value);
        return this;
      }

      /**
       * <pre>
       * По Идентификаторам пользователя
       * </pre>
       *
       * <code>repeated string user_ids = 2;</code>
       * @return A list containing the userIds.
       */
      @java.lang.Override
      public java.util.List<java.lang.String>
          getUserIdsList() {
        return java.util.Collections.unmodifiableList(
            instance.getUserIdsList());
      }
      /**
       * <pre>
       * По Идентификаторам пользователя
       * </pre>
       *
       * <code>repeated string user_ids = 2;</code>
       * @return The count of userIds.
       */
      @java.lang.Override
      public int getUserIdsCount() {
        return instance.getUserIdsCount();
      }
      /**
       * <pre>
       * По Идентификаторам пользователя
       * </pre>
       *
       * <code>repeated string user_ids = 2;</code>
       * @param index The index of the element to return.
       * @return The userIds at the given index.
       */
      @java.lang.Override
      public java.lang.String getUserIds(int index) {
        return instance.getUserIds(index);
      }
      /**
       * <pre>
       * По Идентификаторам пользователя
       * </pre>
       *
       * <code>repeated string user_ids = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the userIds at the given index.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getUserIdsBytes(int index) {
        return instance.getUserIdsBytes(index);
      }
      /**
       * <pre>
       * По Идентификаторам пользователя
       * </pre>
       *
       * <code>repeated string user_ids = 2;</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, java.lang.String value) {
        copyOnWrite();
        instance.setUserIds(index, value);
        return this;
      }
      /**
       * <pre>
       * По Идентификаторам пользователя
       * </pre>
       *
       * <code>repeated string user_ids = 2;</code>
       * @param value The userIds to add.
       * @return This builder for chaining.
       */
      public Builder addUserIds(
          java.lang.String value) {
        copyOnWrite();
        instance.addUserIds(value);
        return this;
      }
      /**
       * <pre>
       * По Идентификаторам пользователя
       * </pre>
       *
       * <code>repeated string user_ids = 2;</code>
       * @param values The userIds to add.
       * @return This builder for chaining.
       */
      public Builder addAllUserIds(
          java.lang.Iterable<java.lang.String> values) {
        copyOnWrite();
        instance.addAllUserIds(values);
        return this;
      }
      /**
       * <pre>
       * По Идентификаторам пользователя
       * </pre>
       *
       * <code>repeated string user_ids = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearUserIds() {
        copyOnWrite();
        instance.clearUserIds();
        return this;
      }
      /**
       * <pre>
       * По Идентификаторам пользователя
       * </pre>
       *
       * <code>repeated string user_ids = 2;</code>
       * @param value The bytes of the userIds to add.
       * @return This builder for chaining.
       */
      public Builder addUserIdsBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.addUserIdsBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupUserFilter)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "groupIds_",
              "userIds_",
            };
            java.lang.String info =
                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0002\u0000\u0001\u021a\u0002\u021a" +
                "";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupUserFilter)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter DEFAULT_INSTANCE;
    static {
      GroupUserFilter defaultInstance = new GroupUserFilter();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GroupUserFilter.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GroupUserFilter> PARSER;

    public static com.google.protobuf.Parser<GroupUserFilter> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupUserListResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupUserListResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
     * @return The data.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getData();

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос получения списка связей пользователей и групп
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupUserListResponse}
   */
  public  static final class GetGroupUserListResponse extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupUserListResponse, GetGroupUserListResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupUserListResponse)
      GetGroupUserListResponseOrBuilder {
    private GetGroupUserListResponse() {
    }
    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      DATA(1),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @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 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getData() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance();
    }
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
     */
    private void setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
      value.getClass();
  type_ = value;
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
     */
    private void mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
      value.getClass();
  if (typeCase_ == 1 &&
          type_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance()) {
        type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
     */
    private void clearData() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос получения списка связей пользователей и групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupUserListResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupUserListResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       */
      public Builder setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder builderForValue) {
        copyOnWrite();
        instance.setData(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
        copyOnWrite();
        instance.mergeData(value);
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupUserListResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.class,
            };
            java.lang.String info =
                "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001<\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupUserListResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse DEFAULT_INSTANCE;
    static {
      GetGroupUserListResponse defaultInstance = new GetGroupUserListResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupUserListResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupUserListResponse> PARSER;

    public static com.google.protobuf.Parser<GetGroupUserListResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupUserCountRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupUserCountRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    boolean hasFilter();
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     * @return The filter.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter getFilter();
  }
  /**
   * <pre>
   * Запрос получения количества связей пользователей и групп
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupUserCountRequest}
   */
  public  static final class GetGroupUserCountRequest extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupUserCountRequest, GetGroupUserCountRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupUserCountRequest)
      GetGroupUserCountRequestOrBuilder {
    private GetGroupUserCountRequest() {
    }
    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter filter_;
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter getFilter() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.getDefaultInstance() : filter_;
    }
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     */
    private void setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter value) {
      value.getClass();
  filter_ = value;

      }
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter value) {
      value.getClass();
  if (filter_ != null &&
          filter_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.getDefaultInstance()) {
        filter_ =
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.newBuilder(filter_).mergeFrom(value).buildPartial();
      } else {
        filter_ = value;
      }

    }
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     */
    private void clearFilter() {  filter_ = null;

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос получения количества связей пользователей и групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupUserCountRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupUserCountRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      @java.lang.Override
      public boolean hasFilter() {
        return instance.hasFilter();
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter getFilter() {
        return instance.getFilter();
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter value) {
        copyOnWrite();
        instance.setFilter(value);
        return this;
        }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.Builder builderForValue) {
        copyOnWrite();
        instance.setFilter(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter value) {
        copyOnWrite();
        instance.mergeFilter(value);
        return this;
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public Builder clearFilter() {  copyOnWrite();
        instance.clearFilter();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupUserCountRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "filter_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\t";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupUserCountRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest DEFAULT_INSTANCE;
    static {
      GetGroupUserCountRequest defaultInstance = new GetGroupUserCountRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupUserCountRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupUserCountRequest> PARSER;

    public static com.google.protobuf.Parser<GetGroupUserCountRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupUserCountResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupUserCountResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <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();

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос получения количества связей пользователей и групп
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupUserCountResponse}
   */
  public  static final class GetGroupUserCountResponse extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupUserCountResponse, GetGroupUserCountResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupUserCountResponse)
      GetGroupUserCountResponseOrBuilder {
    private GetGroupUserCountResponse() {
    }
    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      DATA(1),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @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 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    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;
    }
    /**
     * <pre>
     * Всего связей пользователей и групп
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @param value The data to set.
     */
    private void setData(int value) {
      typeCase_ = 1;
      type_ = value;
    }
    /**
     * <pre>
     * Всего связей пользователей и групп
     * </pre>
     *
     * <code>int32 data = 1;</code>
     */
    private void clearData() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос получения количества связей пользователей и групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupUserCountResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupUserCountResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Всего связей пользователей и групп
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Всего связей пользователей и групп
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public int getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Всего связей пользователей и групп
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(int value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Всего связей пользователей и групп
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupUserCountResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
            };
            java.lang.String info =
                "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u00017\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupUserCountResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse DEFAULT_INSTANCE;
    static {
      GetGroupUserCountResponse defaultInstance = new GetGroupUserCountResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupUserCountResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupUserCountResponse> PARSER;

    public static com.google.protobuf.Parser<GetGroupUserCountResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface PutGroupUserDetachResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PutGroupUserDetachResponse)
      com.google.protobuf.MessageLiteOrBuilder {
  }
  /**
   * <pre>
   * Ответ на запрос удаления точки доступа в профиль
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PutGroupUserDetachResponse}
   */
  public  static final class PutGroupUserDetachResponse extends
      com.google.protobuf.GeneratedMessageLite<
          PutGroupUserDetachResponse, PutGroupUserDetachResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupUserDetachResponse)
      PutGroupUserDetachResponseOrBuilder {
    private PutGroupUserDetachResponse() {
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос удаления точки доступа в профиль
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupUserDetachResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupUserDetachResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupUserDetachResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = null;java.lang.String info =
                "\u0000\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupUserDetachResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse DEFAULT_INSTANCE;
    static {
      PutGroupUserDetachResponse defaultInstance = new PutGroupUserDetachResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PutGroupUserDetachResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PutGroupUserDetachResponse> PARSER;

    public static com.google.protobuf.Parser<PutGroupUserDetachResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupClaimCountRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimCountRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    boolean hasFilter();
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     * @return The filter.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getFilter();
  }
  /**
   * <pre>
   * Запрос получения количества уникальных назначенных атрибутов пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimCountRequest}
   */
  public  static final class GetGroupClaimCountRequest extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupClaimCountRequest, GetGroupClaimCountRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimCountRequest)
      GetGroupClaimCountRequestOrBuilder {
    private GetGroupClaimCountRequest() {
    }
    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter filter_;
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getFilter() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance() : filter_;
    }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    private void setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
      value.getClass();
  filter_ = value;

      }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
      value.getClass();
  if (filter_ != null &&
          filter_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance()) {
        filter_ =
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.newBuilder(filter_).mergeFrom(value).buildPartial();
      } else {
        filter_ = value;
      }

    }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    private void clearFilter() {  filter_ = null;

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос получения количества уникальных назначенных атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimCountRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimCountRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      @java.lang.Override
      public boolean hasFilter() {
        return instance.hasFilter();
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getFilter() {
        return instance.getFilter();
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
        copyOnWrite();
        instance.setFilter(value);
        return this;
        }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder builderForValue) {
        copyOnWrite();
        instance.setFilter(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
        copyOnWrite();
        instance.mergeFilter(value);
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder clearFilter() {  copyOnWrite();
        instance.clearFilter();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimCountRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "filter_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\t";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimCountRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest DEFAULT_INSTANCE;
    static {
      GetGroupClaimCountRequest defaultInstance = new GetGroupClaimCountRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupClaimCountRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupClaimCountRequest> PARSER;

    public static com.google.protobuf.Parser<GetGroupClaimCountRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupClaimCountResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimCountResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <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();

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос получения количества уникальных назначенных атрибутов пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimCountResponse}
   */
  public  static final class GetGroupClaimCountResponse extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupClaimCountResponse, GetGroupClaimCountResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimCountResponse)
      GetGroupClaimCountResponseOrBuilder {
    private GetGroupClaimCountResponse() {
    }
    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      DATA(1),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @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 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    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;
    }
    /**
     * <pre>
     * Всего уникальных атрибутов пользователя
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @param value The data to set.
     */
    private void setData(int value) {
      typeCase_ = 1;
      type_ = value;
    }
    /**
     * <pre>
     * Всего уникальных атрибутов пользователя
     * </pre>
     *
     * <code>int32 data = 1;</code>
     */
    private void clearData() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос получения количества уникальных назначенных атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimCountResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimCountResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Всего уникальных атрибутов пользователя
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Всего уникальных атрибутов пользователя
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public int getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Всего уникальных атрибутов пользователя
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(int value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Всего уникальных атрибутов пользователя
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimCountResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
            };
            java.lang.String info =
                "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u00017\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimCountResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse DEFAULT_INSTANCE;
    static {
      GetGroupClaimCountResponse defaultInstance = new GetGroupClaimCountResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupClaimCountResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupClaimCountResponse> PARSER;

    public static com.google.protobuf.Parser<GetGroupClaimCountResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupClaimExistRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimExistRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    boolean hasFilter();
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     * @return The filter.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getFilter();
  }
  /**
   * <pre>
   * Запрос проверки назначенных атрибутов пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistRequest}
   */
  public  static final class GetGroupClaimExistRequest extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupClaimExistRequest, GetGroupClaimExistRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimExistRequest)
      GetGroupClaimExistRequestOrBuilder {
    private GetGroupClaimExistRequest() {
    }
    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter filter_;
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getFilter() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance() : filter_;
    }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    private void setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
      value.getClass();
  filter_ = value;

      }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
      value.getClass();
  if (filter_ != null &&
          filter_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance()) {
        filter_ =
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.newBuilder(filter_).mergeFrom(value).buildPartial();
      } else {
        filter_ = value;
      }

    }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    private void clearFilter() {  filter_ = null;

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос проверки назначенных атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimExistRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      @java.lang.Override
      public boolean hasFilter() {
        return instance.hasFilter();
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getFilter() {
        return instance.getFilter();
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
        copyOnWrite();
        instance.setFilter(value);
        return this;
        }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder builderForValue) {
        copyOnWrite();
        instance.setFilter(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
        copyOnWrite();
        instance.mergeFilter(value);
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder clearFilter() {  copyOnWrite();
        instance.clearFilter();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimExistRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "filter_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\t";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimExistRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest DEFAULT_INSTANCE;
    static {
      GetGroupClaimExistRequest defaultInstance = new GetGroupClaimExistRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupClaimExistRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupClaimExistRequest> PARSER;

    public static com.google.protobuf.Parser<GetGroupClaimExistRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupClaimExistResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimExistResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Флаг наличия
     * </pre>
     *
     * <code>bool data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Флаг наличия
     * </pre>
     *
     * <code>bool data = 1;</code>
     * @return The data.
     */
    boolean getData();

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

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос проверки назначенных атрибутов пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistResponse}
   */
  public  static final class GetGroupClaimExistResponse extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupClaimExistResponse, GetGroupClaimExistResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimExistResponse)
      GetGroupClaimExistResponseOrBuilder {
    private GetGroupClaimExistResponse() {
    }
    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimExistResponse.Error)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * Ошибка пустого фильтра по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
       * @return Whether the claimFilterEmpty field is set.
       */
      boolean hasClaimFilterEmpty();
      /**
       * <pre>
       * Ошибка пустого фильтра по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
       * @return The claimFilterEmpty.
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError getClaimFilterEmpty();

      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка запроса
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistResponse.Error}
     */
    public  static final class Error extends
        com.google.protobuf.GeneratedMessageLite<
            Error, Error.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimExistResponse.Error)
        ErrorOrBuilder {
      private Error() {
      }
      public interface ClaimFilterEmptyErrorOrBuilder extends
          // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError)
          com.google.protobuf.MessageLiteOrBuilder {
      }
      /**
       * <pre>
       * Ошибка пустого фильтра по атрибутам пользователя
       * </pre>
       *
       * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError}
       */
      public  static final class ClaimFilterEmptyError extends
          com.google.protobuf.GeneratedMessageLite<
              ClaimFilterEmptyError, ClaimFilterEmptyError.Builder> implements
          // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError)
          ClaimFilterEmptyErrorOrBuilder {
        private ClaimFilterEmptyError() {
        }
        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input);
        }
        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input, extensionRegistry);
        }

        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return parseDelimitedFrom(DEFAULT_INSTANCE, input);
        }

        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
        }
        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input);
        }
        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input, extensionRegistry);
        }

        public static Builder newBuilder() {
          return (Builder) DEFAULT_INSTANCE.createBuilder();
        }
        public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError prototype) {
          return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
        }

        /**
         * <pre>
         * Ошибка пустого фильтра по атрибутам пользователя
         * </pre>
         *
         * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageLite.Builder<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError, Builder> implements
            // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError)
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyErrorOrBuilder {
          // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.newBuilder()
          private Builder() {
            super(DEFAULT_INSTANCE);
          }


          // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError)
        }
        @java.lang.Override
        @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
        protected final java.lang.Object dynamicMethod(
            com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
            java.lang.Object arg0, java.lang.Object arg1) {
          switch (method) {
            case NEW_MUTABLE_INSTANCE: {
              return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError();
            }
            case NEW_BUILDER: {
              return new Builder();
            }
            case BUILD_MESSAGE_INFO: {
                java.lang.Object[] objects = null;java.lang.String info =
                    "\u0000\u0000";
                return newMessageInfo(DEFAULT_INSTANCE, info, objects);
            }
            // fall through
            case GET_DEFAULT_INSTANCE: {
              return DEFAULT_INSTANCE;
            }
            case GET_PARSER: {
              com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError> parser = PARSER;
              if (parser == null) {
                synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.class) {
                  parser = PARSER;
                  if (parser == null) {
                    parser =
                        new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError>(
                            DEFAULT_INSTANCE);
                    PARSER = parser;
                  }
                }
              }
              return parser;
          }
          case GET_MEMOIZED_IS_INITIALIZED: {
            return (byte) 1;
          }
          case SET_MEMOIZED_IS_INITIALIZED: {
            return null;
          }
          }
          throw new UnsupportedOperationException();
        }


        // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError)
        private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError DEFAULT_INSTANCE;
        static {
          ClaimFilterEmptyError defaultInstance = new ClaimFilterEmptyError();
          // New instances are implicitly immutable so no need to make
          // immutable.
          DEFAULT_INSTANCE = defaultInstance;
          com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
            ClaimFilterEmptyError.class, defaultInstance);
        }

        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static volatile com.google.protobuf.Parser<ClaimFilterEmptyError> PARSER;

        public static com.google.protobuf.Parser<ClaimFilterEmptyError> parser() {
          return DEFAULT_INSTANCE.getParserForType();
        }
      }

      private int reasonCase_ = 0;
      private java.lang.Object reason_;
      public enum ReasonCase {
        CLAIM_FILTER_EMPTY(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @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 CLAIM_FILTER_EMPTY;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      @java.lang.Override
      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      private void clearReason() {
        reasonCase_ = 0;
        reason_ = null;
      }

      public static final int CLAIM_FILTER_EMPTY_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка пустого фильтра по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
       */
      @java.lang.Override
      public boolean hasClaimFilterEmpty() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка пустого фильтра по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError getClaimFilterEmpty() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError) reason_;
        }
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка пустого фильтра по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
       */
      private void setClaimFilterEmpty(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка пустого фильтра по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
       */
      private void mergeClaimFilterEmpty(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError value) {
        value.getClass();
  if (reasonCase_ == 1 &&
            reason_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.getDefaultInstance()) {
          reason_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка пустого фильтра по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
       */
      private void clearClaimFilterEmpty() {
        if (reasonCase_ == 1) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Ошибка запроса
       * </pre>
       *
       * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimExistResponse.Error)
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.ErrorOrBuilder {
        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }

        @java.lang.Override
        public ReasonCase
            getReasonCase() {
          return instance.getReasonCase();
        }

        public Builder clearReason() {
          copyOnWrite();
          instance.clearReason();
          return this;
        }


        /**
         * <pre>
         * Ошибка пустого фильтра по атрибутам пользователя
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
         */
        @java.lang.Override
        public boolean hasClaimFilterEmpty() {
          return instance.hasClaimFilterEmpty();
        }
        /**
         * <pre>
         * Ошибка пустого фильтра по атрибутам пользователя
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError getClaimFilterEmpty() {
          return instance.getClaimFilterEmpty();
        }
        /**
         * <pre>
         * Ошибка пустого фильтра по атрибутам пользователя
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
         */
        public Builder setClaimFilterEmpty(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError value) {
          copyOnWrite();
          instance.setClaimFilterEmpty(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка пустого фильтра по атрибутам пользователя
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
         */
        public Builder setClaimFilterEmpty(
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.Builder builderForValue) {
          copyOnWrite();
          instance.setClaimFilterEmpty(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Ошибка пустого фильтра по атрибутам пользователя
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
         */
        public Builder mergeClaimFilterEmpty(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError value) {
          copyOnWrite();
          instance.mergeClaimFilterEmpty(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка пустого фильтра по атрибутам пользователя
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
         */
        public Builder clearClaimFilterEmpty() {
          copyOnWrite();
          instance.clearClaimFilterEmpty();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimExistResponse.Error)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "reason_",
                "reasonCase_",
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.class,
              };
              java.lang.String info =
                  "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001<\u0000";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimExistResponse.Error)
      private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error DEFAULT_INSTANCE;
      static {
        Error defaultInstance = new Error();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          Error.class, defaultInstance);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<Error> PARSER;

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

    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      DATA(1),
      ERROR(2),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @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;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Флаг наличия
     * </pre>
     *
     * <code>bool data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Флаг наличия
     * </pre>
     *
     * <code>bool data = 1;</code>
     * @return The data.
     */
    @java.lang.Override
    public boolean getData() {
      if (typeCase_ == 1) {
        return (java.lang.Boolean) type_;
      }
      return false;
    }
    /**
     * <pre>
     * Флаг наличия
     * </pre>
     *
     * <code>bool data = 1;</code>
     * @param value The data to set.
     */
    private void setData(boolean value) {
      typeCase_ = 1;
      type_ = value;
    }
    /**
     * <pre>
     * Флаг наличия
     * </pre>
     *
     * <code>bool data = 1;</code>
     */
    private void clearData() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error getError() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
     */
    private void setError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error value) {
      value.getClass();
  type_ = value;
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
     */
    private void mergeError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error value) {
      value.getClass();
  if (typeCase_ == 2 &&
          type_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.getDefaultInstance()) {
        type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
     */
    private void clearError() {
      if (typeCase_ == 2) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос проверки назначенных атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimExistResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Флаг наличия
       * </pre>
       *
       * <code>bool data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Флаг наличия
       * </pre>
       *
       * <code>bool data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public boolean getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Флаг наличия
       * </pre>
       *
       * <code>bool data = 1;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(boolean value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Флаг наличия
       * </pre>
       *
       * <code>bool data = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public boolean hasError() {
        return instance.hasError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error getError() {
        return instance.getError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
       */
      public Builder setError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error value) {
        copyOnWrite();
        instance.setError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
       */
      public Builder setError(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.Builder builderForValue) {
        copyOnWrite();
        instance.setError(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
       */
      public Builder mergeError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error value) {
        copyOnWrite();
        instance.mergeError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
       */
      public Builder clearError() {
        copyOnWrite();
        instance.clearError();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimExistResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001:\u0000\u0002<" +
                "\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimExistResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse DEFAULT_INSTANCE;
    static {
      GetGroupClaimExistResponse defaultInstance = new GetGroupClaimExistResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupClaimExistResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupClaimExistResponse> PARSER;

    public static com.google.protobuf.Parser<GetGroupClaimExistResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupClaimListRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimListRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    boolean hasFilter();
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     * @return The filter.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getFilter();

    /**
     * <pre>
     * Пагинация по атрибутам пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
     * @return Whether the paging field is set.
     */
    boolean hasPaging();
    /**
     * <pre>
     * Пагинация по атрибутам пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
     * @return The paging.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging getPaging();

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest.PaginationCase getPaginationCase();
  }
  /**
   * <pre>
   * Запрос уникального списка назначенных атрибутов пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimListRequest}
   */
  public  static final class GetGroupClaimListRequest extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupClaimListRequest, GetGroupClaimListRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimListRequest)
      GetGroupClaimListRequestOrBuilder {
    private GetGroupClaimListRequest() {
    }
    private int paginationCase_ = 0;
    private java.lang.Object pagination_;
    public enum PaginationCase {
      PAGING(2),
      PAGINATION_NOT_SET(0);
      private final int value;
      private PaginationCase(int value) {
        this.value = value;
      }
      /**
       * @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;
      }
    };

    @java.lang.Override
    public PaginationCase
    getPaginationCase() {
      return PaginationCase.forNumber(
          paginationCase_);
    }

    private void clearPagination() {
      paginationCase_ = 0;
      pagination_ = null;
    }

    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter filter_;
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getFilter() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance() : filter_;
    }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    private void setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
      value.getClass();
  filter_ = value;

      }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
      value.getClass();
  if (filter_ != null &&
          filter_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance()) {
        filter_ =
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.newBuilder(filter_).mergeFrom(value).buildPartial();
      } else {
        filter_ = value;
      }

    }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     */
    private void clearFilter() {  filter_ = null;

    }

    public static final int PAGING_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Пагинация по атрибутам пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
     */
    @java.lang.Override
    public boolean hasPaging() {
      return paginationCase_ == 2;
    }
    /**
     * <pre>
     * Пагинация по атрибутам пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging getPaging() {
      if (paginationCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging) pagination_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.getDefaultInstance();
    }
    /**
     * <pre>
     * Пагинация по атрибутам пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
     */
    private void setPaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging value) {
      value.getClass();
  pagination_ = value;
      paginationCase_ = 2;
    }
    /**
     * <pre>
     * Пагинация по атрибутам пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
     */
    private void mergePaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging value) {
      value.getClass();
  if (paginationCase_ == 2 &&
          pagination_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.getDefaultInstance()) {
        pagination_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging) pagination_)
            .mergeFrom(value).buildPartial();
      } else {
        pagination_ = value;
      }
      paginationCase_ = 2;
    }
    /**
     * <pre>
     * Пагинация по атрибутам пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
     */
    private void clearPaging() {
      if (paginationCase_ == 2) {
        paginationCase_ = 0;
        pagination_ = null;
      }
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос уникального списка назначенных атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimListRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimListRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequestOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public PaginationCase
          getPaginationCase() {
        return instance.getPaginationCase();
      }

      public Builder clearPagination() {
        copyOnWrite();
        instance.clearPagination();
        return this;
      }


      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      @java.lang.Override
      public boolean hasFilter() {
        return instance.hasFilter();
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getFilter() {
        return instance.getFilter();
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
        copyOnWrite();
        instance.setFilter(value);
        return this;
        }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder builderForValue) {
        copyOnWrite();
        instance.setFilter(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
        copyOnWrite();
        instance.mergeFilter(value);
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder clearFilter() {  copyOnWrite();
        instance.clearFilter();
        return this;
      }

      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       */
      @java.lang.Override
      public boolean hasPaging() {
        return instance.hasPaging();
      }
      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging getPaging() {
        return instance.getPaging();
      }
      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       */
      public Builder setPaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging value) {
        copyOnWrite();
        instance.setPaging(value);
        return this;
      }
      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       */
      public Builder setPaging(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.Builder builderForValue) {
        copyOnWrite();
        instance.setPaging(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       */
      public Builder mergePaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging value) {
        copyOnWrite();
        instance.mergePaging(value);
        return this;
      }
      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       */
      public Builder clearPaging() {
        copyOnWrite();
        instance.clearPaging();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimListRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "pagination_",
              "paginationCase_",
              "filter_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\t\u0002<\u0000" +
                "";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimListRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest DEFAULT_INSTANCE;
    static {
      GetGroupClaimListRequest defaultInstance = new GetGroupClaimListRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupClaimListRequest.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupClaimListRequest> PARSER;

    public static com.google.protobuf.Parser<GetGroupClaimListRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetGroupClaimListResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimListResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Атрибут пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Claim data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Атрибут пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Claim data = 1;</code>
     * @return The data.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getData();

    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос уникального списка назначенных атрибутов пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimListResponse}
   */
  public  static final class GetGroupClaimListResponse extends
      com.google.protobuf.GeneratedMessageLite<
          GetGroupClaimListResponse, GetGroupClaimListResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimListResponse)
      GetGroupClaimListResponseOrBuilder {
    private GetGroupClaimListResponse() {
    }
    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      DATA(1),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @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 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Атрибут пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Claim data = 1;</code>
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Атрибут пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Claim data = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getData() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance();
    }
    /**
     * <pre>
     * Атрибут пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Claim data = 1;</code>
     */
    private void setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
      value.getClass();
  type_ = value;
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Атрибут пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Claim data = 1;</code>
     */
    private void mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
      value.getClass();
  if (typeCase_ == 1 &&
          type_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance()) {
        type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.newBuilder((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Атрибут пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Claim data = 1;</code>
     */
    private void clearData() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос уникального списка назначенных атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimListResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimListResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponseOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       */
      public Builder setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder builderForValue) {
        copyOnWrite();
        instance.setData(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
        copyOnWrite();
        instance.mergeData(value);
        return this;
      }
      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimListResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.class,
            };
            java.lang.String info =
                "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001<\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimListResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse DEFAULT_INSTANCE;
    static {
      GetGroupClaimListResponse defaultInstance = new GetGroupClaimListResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetGroupClaimListResponse.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetGroupClaimListResponse> PARSER;

    public static com.google.protobuf.Parser<GetGroupClaimListResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GroupClaimFilterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GroupClaimFilter)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * По идентификатору пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * Для пользователя Ключа это user_id Ключа
     * </pre>
     *
     * <code>.google.protobuf.StringValue user_id = 1;</code>
     * @return Whether the userId field is set.
     */
    boolean hasUserId();
    /**
     * <pre>
     * По идентификатору пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * Для пользователя Ключа это user_id Ключа
     * </pre>
     *
     * <code>.google.protobuf.StringValue user_id = 1;</code>
     * @return The userId.
     */
    com.google.protobuf.StringValue getUserId();

    /**
     * <pre>
     * По назначенным атрибутам пользователя.
     * Фильтр ограничивает возвращаемые атрибуты данным списком.
     * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
     * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 2;</code>
     */
    int getClaimsCount();
    /**
     * <pre>
     * По назначенным атрибутам пользователя.
     * Фильтр ограничивает возвращаемые атрибуты данным списком.
     * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
     * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 2;</code>
     */
    boolean containsClaims(
        java.lang.String key);
    /**
     * Use {@link #getClaimsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getClaims();
    /**
     * <pre>
     * По назначенным атрибутам пользователя.
     * Фильтр ограничивает возвращаемые атрибуты данным списком.
     * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
     * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 2;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getClaimsMap();
    /**
     * <pre>
     * По назначенным атрибутам пользователя.
     * Фильтр ограничивает возвращаемые атрибуты данным списком.
     * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
     * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 2;</code>
     */

    /* nullable */
java.lang.String getClaimsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * По назначенным атрибутам пользователя.
     * Фильтр ограничивает возвращаемые атрибуты данным списком.
     * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
     * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 2;</code>
     */

    java.lang.String getClaimsOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * По условию принадлежности к группе.
     * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
     * @return Whether the userData field is set.
     */
    boolean hasUserData();
    /**
     * <pre>
     * По условию принадлежности к группе.
     * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
     * @return The userData.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData getUserData();

    /**
     * <pre>
     * Хешированное SHA256 значение ключа доступа ApiKey
     * </pre>
     *
     * <code>string api_key_hash = 4;</code>
     * @return The apiKeyHash.
     */
    java.lang.String getApiKeyHash();
    /**
     * <pre>
     * Хешированное SHA256 значение ключа доступа ApiKey
     * </pre>
     *
     * <code>string api_key_hash = 4;</code>
     * @return The bytes for apiKeyHash.
     */
    com.google.protobuf.ByteString
        getApiKeyHashBytes();
  }
  /**
   * <pre>
   * Фильтр атрибутов пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GroupClaimFilter}
   */
  public  static final class GroupClaimFilter extends
      com.google.protobuf.GeneratedMessageLite<
          GroupClaimFilter, GroupClaimFilter.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupClaimFilter)
      GroupClaimFilterOrBuilder {
    private GroupClaimFilter() {
      apiKeyHash_ = "";
    }
    public interface UserDataOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GroupClaimFilter.UserData)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * Атрибуты пользователя, claims которого мы хотим получить
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 1;</code>
       */
      int getClaimsCount();
      /**
       * <pre>
       * Атрибуты пользователя, claims которого мы хотим получить
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 1;</code>
       */
      boolean containsClaims(
          java.lang.String key);
      /**
       * Use {@link #getClaimsMap()} instead.
       */
      @java.lang.Deprecated
      java.util.Map<java.lang.String, java.lang.String>
      getClaims();
      /**
       * <pre>
       * Атрибуты пользователя, claims которого мы хотим получить
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 1;</code>
       */
      java.util.Map<java.lang.String, java.lang.String>
      getClaimsMap();
      /**
       * <pre>
       * Атрибуты пользователя, claims которого мы хотим получить
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 1;</code>
       */

      /* nullable */
java.lang.String getClaimsOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue);
      /**
       * <pre>
       * Атрибуты пользователя, claims которого мы хотим получить
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 1;</code>
       */

      java.lang.String getClaimsOrThrow(
          java.lang.String key);
    }
    /**
     * <pre>
     * Условие принадлежности к группе
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupClaimFilter.UserData}
     */
    public  static final class UserData extends
        com.google.protobuf.GeneratedMessageLite<
            UserData, UserData.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupClaimFilter.UserData)
        UserDataOrBuilder {
      private UserData() {
      }
      public static final int CLAIMS_FIELD_NUMBER = 1;
      private static final class ClaimsDefaultEntryHolder {
        static final com.google.protobuf.MapEntryLite<
            java.lang.String, java.lang.String> defaultEntry =
                com.google.protobuf.MapEntryLite
                .<java.lang.String, java.lang.String>newDefaultInstance(
                    com.google.protobuf.WireFormat.FieldType.STRING,
                    "",
                    com.google.protobuf.WireFormat.FieldType.STRING,
                    "");
      }
      private com.google.protobuf.MapFieldLite<
          java.lang.String, java.lang.String> claims_ =
              com.google.protobuf.MapFieldLite.emptyMapField();
      private com.google.protobuf.MapFieldLite<java.lang.String, java.lang.String>
      internalGetClaims() {
        return claims_;
      }
      private com.google.protobuf.MapFieldLite<java.lang.String, java.lang.String>
      internalGetMutableClaims() {
        if (!claims_.isMutable()) {
          claims_ = claims_.mutableCopy();
        }
        return claims_;
      }
      @java.lang.Override

      public int getClaimsCount() {
        return internalGetClaims().size();
      }
      /**
       * <pre>
       * Атрибуты пользователя, claims которого мы хотим получить
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 1;</code>
       */
      @java.lang.Override

      public boolean containsClaims(
          java.lang.String key) {
        java.lang.Class<?> keyClass = key.getClass();
        return internalGetClaims().containsKey(key);
      }
      /**
       * Use {@link #getClaimsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getClaims() {
        return getClaimsMap();
      }
      /**
       * <pre>
       * Атрибуты пользователя, claims которого мы хотим получить
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 1;</code>
       */
      @java.lang.Override

      public java.util.Map<java.lang.String, java.lang.String> getClaimsMap() {
        return java.util.Collections.unmodifiableMap(
            internalGetClaims());
      }
      /**
       * <pre>
       * Атрибуты пользователя, claims которого мы хотим получить
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 1;</code>
       */
      @java.lang.Override

      public /* nullable */
java.lang.String getClaimsOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        java.lang.Class<?> keyClass = key.getClass();
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetClaims();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Атрибуты пользователя, claims которого мы хотим получить
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 1;</code>
       */
      @java.lang.Override

      public java.lang.String getClaimsOrThrow(
          java.lang.String key) {
        java.lang.Class<?> keyClass = key.getClass();
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetClaims();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      /**
       * <pre>
       * Атрибуты пользователя, claims которого мы хотим получить
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 1;</code>
       */
      private java.util.Map<java.lang.String, java.lang.String>
      getMutableClaimsMap() {
        return internalGetMutableClaims();
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Условие принадлежности к группе
       * </pre>
       *
       * Protobuf type {@code keyapis.access_management.v1.GroupClaimFilter.UserData}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupClaimFilter.UserData)
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserDataOrBuilder {
        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }


        @java.lang.Override

        public int getClaimsCount() {
          return instance.getClaimsMap().size();
        }
        /**
         * <pre>
         * Атрибуты пользователя, claims которого мы хотим получить
         * </pre>
         *
         * <code>map&lt;string, string&gt; claims = 1;</code>
         */
        @java.lang.Override

        public boolean containsClaims(
            java.lang.String key) {
          java.lang.Class<?> keyClass = key.getClass();
          return instance.getClaimsMap().containsKey(key);
        }

        public Builder clearClaims() {
          copyOnWrite();
          instance.getMutableClaimsMap().clear();
          return this;
        }
        /**
         * <pre>
         * Атрибуты пользователя, claims которого мы хотим получить
         * </pre>
         *
         * <code>map&lt;string, string&gt; claims = 1;</code>
         */

        public Builder removeClaims(
            java.lang.String key) {
          java.lang.Class<?> keyClass = key.getClass();
          copyOnWrite();
          instance.getMutableClaimsMap().remove(key);
          return this;
        }
        /**
         * Use {@link #getClaimsMap()} instead.
         */
        @java.lang.Override
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, java.lang.String> getClaims() {
          return getClaimsMap();
        }
        /**
         * <pre>
         * Атрибуты пользователя, claims которого мы хотим получить
         * </pre>
         *
         * <code>map&lt;string, string&gt; claims = 1;</code>
         */
        @java.lang.Override
        public java.util.Map<java.lang.String, java.lang.String> getClaimsMap() {
          return java.util.Collections.unmodifiableMap(
              instance.getClaimsMap());
        }
        /**
         * <pre>
         * Атрибуты пользователя, claims которого мы хотим получить
         * </pre>
         *
         * <code>map&lt;string, string&gt; claims = 1;</code>
         */
        @java.lang.Override

        public /* nullable */
java.lang.String getClaimsOrDefault(
            java.lang.String key,
            /* nullable */
java.lang.String defaultValue) {
          java.lang.Class<?> keyClass = key.getClass();
          java.util.Map<java.lang.String, java.lang.String> map =
              instance.getClaimsMap();
          return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         * <pre>
         * Атрибуты пользователя, claims которого мы хотим получить
         * </pre>
         *
         * <code>map&lt;string, string&gt; claims = 1;</code>
         */
        @java.lang.Override

        public java.lang.String getClaimsOrThrow(
            java.lang.String key) {
          java.lang.Class<?> keyClass = key.getClass();
          java.util.Map<java.lang.String, java.lang.String> map =
              instance.getClaimsMap();
          if (!map.containsKey(key)) {
            throw new java.lang.IllegalArgumentException();
          }
          return map.get(key);
        }
        /**
         * <pre>
         * Атрибуты пользователя, claims которого мы хотим получить
         * </pre>
         *
         * <code>map&lt;string, string&gt; claims = 1;</code>
         */
        public Builder putClaims(
            java.lang.String key,
            java.lang.String value) {
          java.lang.Class<?> keyClass = key.getClass();
          java.lang.Class<?> valueClass = value.getClass();
          copyOnWrite();
          instance.getMutableClaimsMap().put(key, value);
          return this;
        }
        /**
         * <pre>
         * Атрибуты пользователя, claims которого мы хотим получить
         * </pre>
         *
         * <code>map&lt;string, string&gt; claims = 1;</code>
         */
        public Builder putAllClaims(
            java.util.Map<java.lang.String, java.lang.String> values) {
          copyOnWrite();
          instance.getMutableClaimsMap().putAll(values);
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupClaimFilter.UserData)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "claims_",
                ClaimsDefaultEntryHolder.defaultEntry,
              };
              java.lang.String info =
                  "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0001\u0000\u0000\u00012";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupClaimFilter.UserData)
      private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData DEFAULT_INSTANCE;
      static {
        UserData defaultInstance = new UserData();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          UserData.class, defaultInstance);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<UserData> PARSER;

      public static com.google.protobuf.Parser<UserData> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }

    public static final int USER_ID_FIELD_NUMBER = 1;
    private com.google.protobuf.StringValue userId_;
    /**
     * <pre>
     * По идентификатору пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * Для пользователя Ключа это user_id Ключа
     * </pre>
     *
     * <code>.google.protobuf.StringValue user_id = 1;</code>
     */
    @java.lang.Override
    public boolean hasUserId() {
      return userId_ != null;
    }
    /**
     * <pre>
     * По идентификатору пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * Для пользователя Ключа это user_id Ключа
     * </pre>
     *
     * <code>.google.protobuf.StringValue user_id = 1;</code>
     */
    @java.lang.Override
    public com.google.protobuf.StringValue getUserId() {
      return userId_ == null ? com.google.protobuf.StringValue.getDefaultInstance() : userId_;
    }
    /**
     * <pre>
     * По идентификатору пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * Для пользователя Ключа это user_id Ключа
     * </pre>
     *
     * <code>.google.protobuf.StringValue user_id = 1;</code>
     */
    private void setUserId(com.google.protobuf.StringValue value) {
      value.getClass();
  userId_ = value;

      }
    /**
     * <pre>
     * По идентификатору пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * Для пользователя Ключа это user_id Ключа
     * </pre>
     *
     * <code>.google.protobuf.StringValue user_id = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeUserId(com.google.protobuf.StringValue value) {
      value.getClass();
  if (userId_ != null &&
          userId_ != com.google.protobuf.StringValue.getDefaultInstance()) {
        userId_ =
          com.google.protobuf.StringValue.newBuilder(userId_).mergeFrom(value).buildPartial();
      } else {
        userId_ = value;
      }

    }
    /**
     * <pre>
     * По идентификатору пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * Для пользователя Ключа это user_id Ключа
     * </pre>
     *
     * <code>.google.protobuf.StringValue user_id = 1;</code>
     */
    private void clearUserId() {  userId_ = null;

    }

    public static final int CLAIMS_FIELD_NUMBER = 2;
    private static final class ClaimsDefaultEntryHolder {
      static final com.google.protobuf.MapEntryLite<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntryLite
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapFieldLite<
        java.lang.String, java.lang.String> claims_ =
            com.google.protobuf.MapFieldLite.emptyMapField();
    private com.google.protobuf.MapFieldLite<java.lang.String, java.lang.String>
    internalGetClaims() {
      return claims_;
    }
    private com.google.protobuf.MapFieldLite<java.lang.String, java.lang.String>
    internalGetMutableClaims() {
      if (!claims_.isMutable()) {
        claims_ = claims_.mutableCopy();
      }
      return claims_;
    }
    @java.lang.Override

    public int getClaimsCount() {
      return internalGetClaims().size();
    }
    /**
     * <pre>
     * По назначенным атрибутам пользователя.
     * Фильтр ограничивает возвращаемые атрибуты данным списком.
     * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
     * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 2;</code>
     */
    @java.lang.Override

    public boolean containsClaims(
        java.lang.String key) {
      java.lang.Class<?> keyClass = key.getClass();
      return internalGetClaims().containsKey(key);
    }
    /**
     * Use {@link #getClaimsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getClaims() {
      return getClaimsMap();
    }
    /**
     * <pre>
     * По назначенным атрибутам пользователя.
     * Фильтр ограничивает возвращаемые атрибуты данным списком.
     * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
     * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 2;</code>
     */
    @java.lang.Override

    public java.util.Map<java.lang.String, java.lang.String> getClaimsMap() {
      return java.util.Collections.unmodifiableMap(
          internalGetClaims());
    }
    /**
     * <pre>
     * По назначенным атрибутам пользователя.
     * Фильтр ограничивает возвращаемые атрибуты данным списком.
     * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
     * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 2;</code>
     */
    @java.lang.Override

    public /* nullable */
java.lang.String getClaimsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      java.lang.Class<?> keyClass = key.getClass();
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetClaims();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * По назначенным атрибутам пользователя.
     * Фильтр ограничивает возвращаемые атрибуты данным списком.
     * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
     * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 2;</code>
     */
    @java.lang.Override

    public java.lang.String getClaimsOrThrow(
        java.lang.String key) {
      java.lang.Class<?> keyClass = key.getClass();
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetClaims();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }
    /**
     * <pre>
     * По назначенным атрибутам пользователя.
     * Фильтр ограничивает возвращаемые атрибуты данным списком.
     * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
     * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
     * </pre>
     *
     * <code>map&lt;string, string&gt; claims = 2;</code>
     */
    private java.util.Map<java.lang.String, java.lang.String>
    getMutableClaimsMap() {
      return internalGetMutableClaims();
    }

    public static final int USER_DATA_FIELD_NUMBER = 3;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData userData_;
    /**
     * <pre>
     * По условию принадлежности к группе.
     * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
     */
    @java.lang.Override
    public boolean hasUserData() {
      return userData_ != null;
    }
    /**
     * <pre>
     * По условию принадлежности к группе.
     * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData getUserData() {
      return userData_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.getDefaultInstance() : userData_;
    }
    /**
     * <pre>
     * По условию принадлежности к группе.
     * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
     */
    private void setUserData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData value) {
      value.getClass();
  userData_ = value;

      }
    /**
     * <pre>
     * По условию принадлежности к группе.
     * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeUserData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData value) {
      value.getClass();
  if (userData_ != null &&
          userData_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.getDefaultInstance()) {
        userData_ =
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.newBuilder(userData_).mergeFrom(value).buildPartial();
      } else {
        userData_ = value;
      }

    }
    /**
     * <pre>
     * По условию принадлежности к группе.
     * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
     */
    private void clearUserData() {  userData_ = null;

    }

    public static final int API_KEY_HASH_FIELD_NUMBER = 4;
    private java.lang.String apiKeyHash_;
    /**
     * <pre>
     * Хешированное SHA256 значение ключа доступа ApiKey
     * </pre>
     *
     * <code>string api_key_hash = 4;</code>
     * @return The apiKeyHash.
     */
    @java.lang.Override
    public java.lang.String getApiKeyHash() {
      return apiKeyHash_;
    }
    /**
     * <pre>
     * Хешированное SHA256 значение ключа доступа ApiKey
     * </pre>
     *
     * <code>string api_key_hash = 4;</code>
     * @return The bytes for apiKeyHash.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getApiKeyHashBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(apiKeyHash_);
    }
    /**
     * <pre>
     * Хешированное SHA256 значение ключа доступа ApiKey
     * </pre>
     *
     * <code>string api_key_hash = 4;</code>
     * @param value The apiKeyHash to set.
     */
    private void setApiKeyHash(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      apiKeyHash_ = value;
    }
    /**
     * <pre>
     * Хешированное SHA256 значение ключа доступа ApiKey
     * </pre>
     *
     * <code>string api_key_hash = 4;</code>
     */
    private void clearApiKeyHash() {

      apiKeyHash_ = getDefaultInstance().getApiKeyHash();
    }
    /**
     * <pre>
     * Хешированное SHA256 значение ключа доступа ApiKey
     * </pre>
     *
     * <code>string api_key_hash = 4;</code>
     * @param value The bytes for apiKeyHash to set.
     */
    private void setApiKeyHashBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      apiKeyHash_ = value.toStringUtf8();

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupClaimFilter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupClaimFilter)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * По идентификатору пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * Для пользователя Ключа это user_id Ключа
       * </pre>
       *
       * <code>.google.protobuf.StringValue user_id = 1;</code>
       */
      @java.lang.Override
      public boolean hasUserId() {
        return instance.hasUserId();
      }
      /**
       * <pre>
       * По идентификатору пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * Для пользователя Ключа это user_id Ключа
       * </pre>
       *
       * <code>.google.protobuf.StringValue user_id = 1;</code>
       */
      @java.lang.Override
      public com.google.protobuf.StringValue getUserId() {
        return instance.getUserId();
      }
      /**
       * <pre>
       * По идентификатору пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * Для пользователя Ключа это user_id Ключа
       * </pre>
       *
       * <code>.google.protobuf.StringValue user_id = 1;</code>
       */
      public Builder setUserId(com.google.protobuf.StringValue value) {
        copyOnWrite();
        instance.setUserId(value);
        return this;
        }
      /**
       * <pre>
       * По идентификатору пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * Для пользователя Ключа это user_id Ключа
       * </pre>
       *
       * <code>.google.protobuf.StringValue user_id = 1;</code>
       */
      public Builder setUserId(
          com.google.protobuf.StringValue.Builder builderForValue) {
        copyOnWrite();
        instance.setUserId(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * По идентификатору пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * Для пользователя Ключа это user_id Ключа
       * </pre>
       *
       * <code>.google.protobuf.StringValue user_id = 1;</code>
       */
      public Builder mergeUserId(com.google.protobuf.StringValue value) {
        copyOnWrite();
        instance.mergeUserId(value);
        return this;
      }
      /**
       * <pre>
       * По идентификатору пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * Для пользователя Ключа это user_id Ключа
       * </pre>
       *
       * <code>.google.protobuf.StringValue user_id = 1;</code>
       */
      public Builder clearUserId() {  copyOnWrite();
        instance.clearUserId();
        return this;
      }

      @java.lang.Override

      public int getClaimsCount() {
        return instance.getClaimsMap().size();
      }
      /**
       * <pre>
       * По назначенным атрибутам пользователя.
       * Фильтр ограничивает возвращаемые атрибуты данным списком.
       * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
       * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 2;</code>
       */
      @java.lang.Override

      public boolean containsClaims(
          java.lang.String key) {
        java.lang.Class<?> keyClass = key.getClass();
        return instance.getClaimsMap().containsKey(key);
      }

      public Builder clearClaims() {
        copyOnWrite();
        instance.getMutableClaimsMap().clear();
        return this;
      }
      /**
       * <pre>
       * По назначенным атрибутам пользователя.
       * Фильтр ограничивает возвращаемые атрибуты данным списком.
       * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
       * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 2;</code>
       */

      public Builder removeClaims(
          java.lang.String key) {
        java.lang.Class<?> keyClass = key.getClass();
        copyOnWrite();
        instance.getMutableClaimsMap().remove(key);
        return this;
      }
      /**
       * Use {@link #getClaimsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getClaims() {
        return getClaimsMap();
      }
      /**
       * <pre>
       * По назначенным атрибутам пользователя.
       * Фильтр ограничивает возвращаемые атрибуты данным списком.
       * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
       * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getClaimsMap() {
        return java.util.Collections.unmodifiableMap(
            instance.getClaimsMap());
      }
      /**
       * <pre>
       * По назначенным атрибутам пользователя.
       * Фильтр ограничивает возвращаемые атрибуты данным списком.
       * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
       * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 2;</code>
       */
      @java.lang.Override

      public /* nullable */
java.lang.String getClaimsOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        java.lang.Class<?> keyClass = key.getClass();
        java.util.Map<java.lang.String, java.lang.String> map =
            instance.getClaimsMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * По назначенным атрибутам пользователя.
       * Фильтр ограничивает возвращаемые атрибуты данным списком.
       * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
       * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 2;</code>
       */
      @java.lang.Override

      public java.lang.String getClaimsOrThrow(
          java.lang.String key) {
        java.lang.Class<?> keyClass = key.getClass();
        java.util.Map<java.lang.String, java.lang.String> map =
            instance.getClaimsMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      /**
       * <pre>
       * По назначенным атрибутам пользователя.
       * Фильтр ограничивает возвращаемые атрибуты данным списком.
       * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
       * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 2;</code>
       */
      public Builder putClaims(
          java.lang.String key,
          java.lang.String value) {
        java.lang.Class<?> keyClass = key.getClass();
        java.lang.Class<?> valueClass = value.getClass();
        copyOnWrite();
        instance.getMutableClaimsMap().put(key, value);
        return this;
      }
      /**
       * <pre>
       * По назначенным атрибутам пользователя.
       * Фильтр ограничивает возвращаемые атрибуты данным списком.
       * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
       * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 2;</code>
       */
      public Builder putAllClaims(
          java.util.Map<java.lang.String, java.lang.String> values) {
        copyOnWrite();
        instance.getMutableClaimsMap().putAll(values);
        return this;
      }

      /**
       * <pre>
       * По условию принадлежности к группе.
       * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
       */
      @java.lang.Override
      public boolean hasUserData() {
        return instance.hasUserData();
      }
      /**
       * <pre>
       * По условию принадлежности к группе.
       * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData getUserData() {
        return instance.getUserData();
      }
      /**
       * <pre>
       * По условию принадлежности к группе.
       * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
       */
      public Builder setUserData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData value) {
        copyOnWrite();
        instance.setUserData(value);
        return this;
        }
      /**
       * <pre>
       * По условию принадлежности к группе.
       * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
       */
      public Builder setUserData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.Builder builderForValue) {
        copyOnWrite();
        instance.setUserData(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * По условию принадлежности к группе.
       * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
       */
      public Builder mergeUserData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData value) {
        copyOnWrite();
        instance.mergeUserData(value);
        return this;
      }
      /**
       * <pre>
       * По условию принадлежности к группе.
       * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
       */
      public Builder clearUserData() {  copyOnWrite();
        instance.clearUserData();
        return this;
      }

      /**
       * <pre>
       * Хешированное SHA256 значение ключа доступа ApiKey
       * </pre>
       *
       * <code>string api_key_hash = 4;</code>
       * @return The apiKeyHash.
       */
      @java.lang.Override
      public java.lang.String getApiKeyHash() {
        return instance.getApiKeyHash();
      }
      /**
       * <pre>
       * Хешированное SHA256 значение ключа доступа ApiKey
       * </pre>
       *
       * <code>string api_key_hash = 4;</code>
       * @return The bytes for apiKeyHash.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getApiKeyHashBytes() {
        return instance.getApiKeyHashBytes();
      }
      /**
       * <pre>
       * Хешированное SHA256 значение ключа доступа ApiKey
       * </pre>
       *
       * <code>string api_key_hash = 4;</code>
       * @param value The apiKeyHash to set.
       * @return This builder for chaining.
       */
      public Builder setApiKeyHash(
          java.lang.String value) {
        copyOnWrite();
        instance.setApiKeyHash(value);
        return this;
      }
      /**
       * <pre>
       * Хешированное SHA256 значение ключа доступа ApiKey
       * </pre>
       *
       * <code>string api_key_hash = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearApiKeyHash() {
        copyOnWrite();
        instance.clearApiKeyHash();
        return this;
      }
      /**
       * <pre>
       * Хешированное SHA256 значение ключа доступа ApiKey
       * </pre>
       *
       * <code>string api_key_hash = 4;</code>
       * @param value The bytes for apiKeyHash to set.
       * @return This builder for chaining.
       */
      public Builder setApiKeyHashBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setApiKeyHashBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupClaimFilter)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "userId_",
              "claims_",
              ClaimsDefaultEntryHolder.defaultEntry,
              "userData_",
              "apiKeyHash_",
            };
            java.lang.String info =
                "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0001\u0000\u0000\u0001\t\u00022\u0003" +
                "\t\u0004\u0208";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupClaimFilter)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter DEFAULT_INSTANCE;
    static {
      GroupClaimFilter defaultInstance = new GroupClaimFilter();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GroupClaimFilter.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GroupClaimFilter> PARSER;

    public static com.google.protobuf.Parser<GroupClaimFilter> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GroupClaimPagingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GroupClaimPaging)
      com.google.protobuf.MessageLiteOrBuilder {

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

    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging.DirectionType direction_type = 2;</code>
     * @return The enum numeric value on the wire for directionType.
     */
    int getDirectionTypeValue();
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging.DirectionType direction_type = 2;</code>
     * @return The directionType.
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.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.access_management.v1.GroupClaimPaging}
   */
  public  static final class GroupClaimPaging extends
      com.google.protobuf.GeneratedMessageLite<
          GroupClaimPaging, GroupClaimPaging.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupClaimPaging)
      GroupClaimPagingOrBuilder {
    private GroupClaimPaging() {
    }
    /**
     * <pre>
     * Справочник типов значений сортировки.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.access_management.v1.GroupClaimPaging.OrderByType}
     */
    public enum OrderByType
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>ORDER_BY_TYPE_UNKNOWN = 0;</code>
       */
      ORDER_BY_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * По ключу атрибута
       * </pre>
       *
       * <code>KEY = 1;</code>
       */
      KEY(1),
      /**
       * <pre>
       * По значению атрибута
       * </pre>
       *
       * <code>VALUE = 2;</code>
       */
      VALUE(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>ORDER_BY_TYPE_UNKNOWN = 0;</code>
       */
      public static final int ORDER_BY_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * По ключу атрибута
       * </pre>
       *
       * <code>KEY = 1;</code>
       */
      public static final int KEY_VALUE = 1;
      /**
       * <pre>
       * По значению атрибута
       * </pre>
       *
       * <code>VALUE = 2;</code>
       */
      public static final int VALUE_VALUE = 2;


      @java.lang.Override
      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 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 OrderByType valueOf(int value) {
        return forNumber(value);
      }

      public static OrderByType forNumber(int value) {
        switch (value) {
          case 0: return ORDER_BY_TYPE_UNKNOWN;
          case 1: return KEY;
          case 2: return VALUE;
          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>() {
              @java.lang.Override
              public OrderByType findValueByNumber(int number) {
                return OrderByType.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return OrderByTypeVerifier.INSTANCE;
      }

      private static final class OrderByTypeVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new OrderByTypeVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return OrderByType.forNumber(number) != null;
              }
            };

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:keyapis.access_management.v1.GroupClaimPaging.OrderByType)
    }

    /**
     * <pre>
     * Справочник типов направлений сортировки.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.access_management.v1.GroupClaimPaging.DirectionType}
     */
    public enum DirectionType
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <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;


      @java.lang.Override
      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 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 DirectionType valueOf(int value) {
        return forNumber(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>() {
              @java.lang.Override
              public DirectionType findValueByNumber(int number) {
                return DirectionType.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return DirectionTypeVerifier.INSTANCE;
      }

      private static final class DirectionTypeVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new DirectionTypeVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return DirectionType.forNumber(number) != null;
              }
            };

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:keyapis.access_management.v1.GroupClaimPaging.DirectionType)
    }

    public static final int ORDER_BY_TYPE_FIELD_NUMBER = 1;
    private int orderByType_;
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: KEY
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging.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>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: KEY
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging.OrderByType order_by_type = 1;</code>
     * @return The orderByType.
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.OrderByType getOrderByType() {
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.OrderByType result = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.OrderByType.forNumber(orderByType_);
      return result == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.OrderByType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: KEY
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging.OrderByType order_by_type = 1;</code>
     * @param value The enum numeric value on the wire for orderByType to set.
     */
    private void setOrderByTypeValue(int value) {
        orderByType_ = value;
    }
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: KEY
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging.OrderByType order_by_type = 1;</code>
     * @param value The orderByType to set.
     */
    private void setOrderByType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.OrderByType value) {
      orderByType_ = value.getNumber();

    }
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: KEY
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging.OrderByType order_by_type = 1;</code>
     */
    private void clearOrderByType() {

      orderByType_ = 0;
    }

    public static final int DIRECTION_TYPE_FIELD_NUMBER = 2;
    private int directionType_;
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging.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.access_management.v1.GroupClaimPaging.DirectionType direction_type = 2;</code>
     * @return The directionType.
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.DirectionType getDirectionType() {
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.DirectionType result = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.DirectionType.forNumber(directionType_);
      return result == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.DirectionType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging.DirectionType direction_type = 2;</code>
     * @param value The enum numeric value on the wire for directionType to set.
     */
    private void setDirectionTypeValue(int value) {
        directionType_ = value;
    }
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging.DirectionType direction_type = 2;</code>
     * @param value The directionType to set.
     */
    private void setDirectionType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.DirectionType value) {
      directionType_ = value.getNumber();

    }
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging.DirectionType direction_type = 2;</code>
     */
    private void clearDirectionType() {

      directionType_ = 0;
    }

    public static final int LIMIT_FIELD_NUMBER = 3;
    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.
     */
    private void setLimit(int value) {
      
      limit_ = value;
    }
    /**
     * <pre>
     * Количество записей на страницу.
     * Если значение 0 (не передано), то будет взято значение по умолчанию.
     * # Диапазон: 0..100.
     * # По умолчанию: 20
     * </pre>
     *
     * <code>int32 limit = 3;</code>
     */
    private void clearLimit() {

      limit_ = 0;
    }

    public static final int OFFSET_FIELD_NUMBER = 4;
    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.
     */
    private void setOffset(int value) {
      
      offset_ = value;
    }
    /**
     * <pre>
     * Сдвиг.
     * # Диапазон: 0..2147483647
     * </pre>
     *
     * <code>int32 offset = 4;</code>
     */
    private void clearOffset() {

      offset_ = 0;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Пагинация атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupClaimPaging}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupClaimPaging)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPagingOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: KEY
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging.OrderByType order_by_type = 1;</code>
       * @return The enum numeric value on the wire for orderByType.
       */
      @java.lang.Override
      public int getOrderByTypeValue() {
        return instance.getOrderByTypeValue();
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: KEY
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging.OrderByType order_by_type = 1;</code>
       * @param value The orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByTypeValue(int value) {
        copyOnWrite();
        instance.setOrderByTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: KEY
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging.OrderByType order_by_type = 1;</code>
       * @return The orderByType.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.OrderByType getOrderByType() {
        return instance.getOrderByType();
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: KEY
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging.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 setOrderByType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.OrderByType value) {
        copyOnWrite();
        instance.setOrderByType(value);
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: KEY
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging.OrderByType order_by_type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOrderByType() {
        copyOnWrite();
        instance.clearOrderByType();
        return this;
      }

      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging.DirectionType direction_type = 2;</code>
       * @return The enum numeric value on the wire for directionType.
       */
      @java.lang.Override
      public int getDirectionTypeValue() {
        return instance.getDirectionTypeValue();
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging.DirectionType direction_type = 2;</code>
       * @param value The directionType to set.
       * @return This builder for chaining.
       */
      public Builder setDirectionTypeValue(int value) {
        copyOnWrite();
        instance.setDirectionTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging.DirectionType direction_type = 2;</code>
       * @return The directionType.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.DirectionType getDirectionType() {
        return instance.getDirectionType();
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging.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 setDirectionType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.DirectionType value) {
        copyOnWrite();
        instance.setDirectionType(value);
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging.DirectionType direction_type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDirectionType() {
        copyOnWrite();
        instance.clearDirectionType();
        return this;
      }

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

      /**
       * <pre>
       * Сдвиг.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @return The offset.
       */
      @java.lang.Override
      public int getOffset() {
        return instance.getOffset();
      }
      /**
       * <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) {
        copyOnWrite();
        instance.setOffset(value);
        return this;
      }
      /**
       * <pre>
       * Сдвиг.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        copyOnWrite();
        instance.clearOffset();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupClaimPaging)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "orderByType_",
              "directionType_",
              "limit_",
              "offset_",
            };
            java.lang.String info =
                "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\f\u0002\f\u0003" +
                "\u0004\u0004\u0004";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupClaimPaging)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging DEFAULT_INSTANCE;
    static {
      GroupClaimPaging defaultInstance = new GroupClaimPaging();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GroupClaimPaging.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GroupClaimPaging> PARSER;

    public static com.google.protobuf.Parser<GroupClaimPaging> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface ValidationErrorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.ValidationError)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Путь к полю в формате наименования protobuf
     * </pre>
     *
     * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * Путь к полю в формате наименования protobuf
     * </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.access_management.v1.ValidationError}
   */
  public  static final class ValidationError extends
      com.google.protobuf.GeneratedMessageLite<
          ValidationError, ValidationError.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.ValidationError)
      ValidationErrorOrBuilder {
    private ValidationError() {
      path_ = "";
      message_ = "";
    }
    public static final int PATH_FIELD_NUMBER = 1;
    private java.lang.String path_;
    /**
     * <pre>
     * Путь к полю в формате наименования protobuf
     * </pre>
     *
     * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The path.
     */
    @java.lang.Override
    public java.lang.String getPath() {
      return path_;
    }
    /**
     * <pre>
     * Путь к полю в формате наименования protobuf
     * </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() {
      return com.google.protobuf.ByteString.copyFromUtf8(path_);
    }
    /**
     * <pre>
     * Путь к полю в формате наименования protobuf
     * </pre>
     *
     * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The path to set.
     */
    private void setPath(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      path_ = value;
    }
    /**
     * <pre>
     * Путь к полю в формате наименования protobuf
     * </pre>
     *
     * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearPath() {

      path_ = getDefaultInstance().getPath();
    }
    /**
     * <pre>
     * Путь к полю в формате наименования protobuf
     * </pre>
     *
     * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for path to set.
     */
    private void setPathBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      path_ = value.toStringUtf8();

    }

    public static final int MESSAGE_FIELD_NUMBER = 2;
    private java.lang.String message_;
    /**
     * <pre>
     * Валидационное сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The message.
     */
    @java.lang.Override
    public java.lang.String getMessage() {
      return message_;
    }
    /**
     * <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() {
      return com.google.protobuf.ByteString.copyFromUtf8(message_);
    }
    /**
     * <pre>
     * Валидационное сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The message to set.
     */
    private void setMessage(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      message_ = value;
    }
    /**
     * <pre>
     * Валидационное сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearMessage() {

      message_ = getDefaultInstance().getMessage();
    }
    /**
     * <pre>
     * Валидационное сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for message to set.
     */
    private void setMessageBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      message_ = value.toStringUtf8();

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ошибки валидации.
     * Эти проверки выполняются до обращения в базу данных
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.ValidationError}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.ValidationError)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Путь к полю в формате наименования protobuf
       * </pre>
       *
       * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The path.
       */
      @java.lang.Override
      public java.lang.String getPath() {
        return instance.getPath();
      }
      /**
       * <pre>
       * Путь к полю в формате наименования protobuf
       * </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() {
        return instance.getPathBytes();
      }
      /**
       * <pre>
       * Путь к полю в формате наименования protobuf
       * </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) {
        copyOnWrite();
        instance.setPath(value);
        return this;
      }
      /**
       * <pre>
       * Путь к полю в формате наименования protobuf
       * </pre>
       *
       * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        copyOnWrite();
        instance.clearPath();
        return this;
      }
      /**
       * <pre>
       * Путь к полю в формате наименования protobuf
       * </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) {
        copyOnWrite();
        instance.setPathBytes(value);
        return this;
      }

      /**
       * <pre>
       * Валидационное сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The message.
       */
      @java.lang.Override
      public java.lang.String getMessage() {
        return instance.getMessage();
      }
      /**
       * <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() {
        return instance.getMessageBytes();
      }
      /**
       * <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) {
        copyOnWrite();
        instance.setMessage(value);
        return this;
      }
      /**
       * <pre>
       * Валидационное сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        copyOnWrite();
        instance.clearMessage();
        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) {
        copyOnWrite();
        instance.setMessageBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.ValidationError)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "path_",
              "message_",
            };
            java.lang.String info =
                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0208\u0002\u0208" +
                "";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.ValidationError)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError DEFAULT_INSTANCE;
    static {
      ValidationError defaultInstance = new ValidationError();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        ValidationError.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<ValidationError> PARSER;

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

  public interface GroupTemplateNotFoundErrorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GroupTemplateNotFoundError)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Идентификатор шаблона группы, который не найден
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The groupTemplateId.
     */
    java.lang.String getGroupTemplateId();
    /**
     * <pre>
     * Идентификатор шаблона группы, который не найден
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for groupTemplateId.
     */
    com.google.protobuf.ByteString
        getGroupTemplateIdBytes();

    /**
     * <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.access_management.v1.GroupTemplateNotFoundError}
   */
  public  static final class GroupTemplateNotFoundError extends
      com.google.protobuf.GeneratedMessageLite<
          GroupTemplateNotFoundError, GroupTemplateNotFoundError.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupTemplateNotFoundError)
      GroupTemplateNotFoundErrorOrBuilder {
    private GroupTemplateNotFoundError() {
      groupTemplateId_ = "";
      message_ = "";
    }
    public static final int GROUP_TEMPLATE_ID_FIELD_NUMBER = 1;
    private java.lang.String groupTemplateId_;
    /**
     * <pre>
     * Идентификатор шаблона группы, который не найден
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The groupTemplateId.
     */
    @java.lang.Override
    public java.lang.String getGroupTemplateId() {
      return groupTemplateId_;
    }
    /**
     * <pre>
     * Идентификатор шаблона группы, который не найден
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for groupTemplateId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGroupTemplateIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(groupTemplateId_);
    }
    /**
     * <pre>
     * Идентификатор шаблона группы, который не найден
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The groupTemplateId to set.
     */
    private void setGroupTemplateId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      groupTemplateId_ = value;
    }
    /**
     * <pre>
     * Идентификатор шаблона группы, который не найден
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearGroupTemplateId() {

      groupTemplateId_ = getDefaultInstance().getGroupTemplateId();
    }
    /**
     * <pre>
     * Идентификатор шаблона группы, который не найден
     * </pre>
     *
     * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for groupTemplateId to set.
     */
    private void setGroupTemplateIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      groupTemplateId_ = value.toStringUtf8();

    }

    public static final int MESSAGE_FIELD_NUMBER = 2;
    private java.lang.String message_;
    /**
     * <pre>
     * Сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The message.
     */
    @java.lang.Override
    public java.lang.String getMessage() {
      return message_;
    }
    /**
     * <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() {
      return com.google.protobuf.ByteString.copyFromUtf8(message_);
    }
    /**
     * <pre>
     * Сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The message to set.
     */
    private void setMessage(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      message_ = value;
    }
    /**
     * <pre>
     * Сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearMessage() {

      message_ = getDefaultInstance().getMessage();
    }
    /**
     * <pre>
     * Сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for message to set.
     */
    private void setMessageBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      message_ = value.toStringUtf8();

    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ошибки создания группы по шаблону
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupTemplateNotFoundError}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupTemplateNotFoundError)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundErrorOrBuilder {
      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Идентификатор шаблона группы, который не найден
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The groupTemplateId.
       */
      @java.lang.Override
      public java.lang.String getGroupTemplateId() {
        return instance.getGroupTemplateId();
      }
      /**
       * <pre>
       * Идентификатор шаблона группы, который не найден
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for groupTemplateId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getGroupTemplateIdBytes() {
        return instance.getGroupTemplateIdBytes();
      }
      /**
       * <pre>
       * Идентификатор шаблона группы, который не найден
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The groupTemplateId to set.
       * @return This builder for chaining.
       */
      public Builder setGroupTemplateId(
          java.lang.String value) {
        copyOnWrite();
        instance.setGroupTemplateId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор шаблона группы, который не найден
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearGroupTemplateId() {
        copyOnWrite();
        instance.clearGroupTemplateId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор шаблона группы, который не найден
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for groupTemplateId to set.
       * @return This builder for chaining.
       */
      public Builder setGroupTemplateIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setGroupTemplateIdBytes(value);
        return this;
      }

      /**
       * <pre>
       * Сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The message.
       */
      @java.lang.Override
      public java.lang.String getMessage() {
        return instance.getMessage();
      }
      /**
       * <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() {
        return instance.getMessageBytes();
      }
      /**
       * <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) {
        copyOnWrite();
        instance.setMessage(value);
        return this;
      }
      /**
       * <pre>
       * Сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        copyOnWrite();
        instance.clearMessage();
        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) {
        copyOnWrite();
        instance.setMessageBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupTemplateNotFoundError)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "groupTemplateId_",
              "message_",
            };
            java.lang.String info =
                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0208\u0002\u0208" +
                "";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupTemplateNotFoundError)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError DEFAULT_INSTANCE;
    static {
      GroupTemplateNotFoundError defaultInstance = new GroupTemplateNotFoundError();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GroupTemplateNotFoundError.class, defaultInstance);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GroupTemplateNotFoundError> PARSER;

    public static com.google.protobuf.Parser<GroupTemplateNotFoundError> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}
